【问题标题】:How do ggplot and plot handle inf values differently?ggplot 和 plot 如何以不同的方式处理 inf 值?
【发布时间】:2017-07-24 15:41:04
【问题描述】:

我很难理解为什么 ggplotplot 会生成相同数据的略有不同的图。 ggplot 包含 inf 值,而 plot 不包含。

with(geneFDR, plot(log2(FC), -log10(FDR), pch=20, main="FDR vs. Real FC",
col=geneFDR$FDRColor))

ggplot(data=geneFDR, aes(x=log2(FC), y=-log10(FDR), color=FDRFCthreshold)) +
  geom_point(alpha=0.4, size=1.75) +
  ggtitle("FDR vs. Real Fold Change") +
  xlab("log2 Real Fold Change") + ylab("-log10(FDR)")

inf 值的来源:

min(geneFDR$FDR)
[1] 0
max(geneFDR$FDR)
[1] 0.009883703

min(-log10(geneFDR$FDR))
[1] 2.00508
max(-log10(geneFDR$FDR))
[1] Inf

默认的plot 函数处理inf 值与ggplot 有何不同?

【问题讨论】:

  • 一个更简单的可重现示例:x <- c(0,1,2,Inf) 然后 plot(x)ggplot(data.frame(x),aes(x=1:4,y=x)) + geom_point()
  • 看来ggplot 认为绘图的上限和下限(位于轴限制之外)分别为Inf-Inf,而plot 只是忽略Inf 默认情况下。
  • 这似乎是一个可疑的设计选择,因为您最终可能会得到像 ggplot(data.frame(x),aes(x=1:4,y=x)) + geom_line() 这样的东西,这表明与数据实际代表的角度完全不同。
  • 确实,到目前为止我还没有考虑过ggplot2 的一个方面。我想假设是 Inf 值通常会被删除或理想情况下不会生成。

标签: r plot ggplot2


【解决方案1】:

试试

scale_y_continuous(oob=scales::discard)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多