ggplot和plot如何处理无穷大值的不同?

3

我很难理解为什么ggplotplot会对相同的数据生成略微不同的图形。其中ggplot在顶部包含了无穷大值,而plot没有。

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

enter image description here

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)")

在此输入图片描述

无穷大值的来源:

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函数和ggplot如何处理无穷大值时有什么不同吗?

一个更简单的可重现的例子:x <- c(0,1,2,Inf) 然后 plot(x)ggplot(data.frame(x),aes(x=1:4,y=x)) + geom_point() - thelatemail
1
似乎 ggplot 认为绘图的上下边界(超出轴限制的部分)分别为 Inf-Inf,而 plot 默认情况下只是忽略 Inf - neilfws
这似乎是一个可疑的设计选择,因为你最终可能会得到类似于ggplot(data.frame(x),aes(x=1:4,y=x)) + geom_line()这样的东西,这将提示一个完全不同于数据实际表示的角度。 - thelatemail
事实上,这不是我到目前为止考虑过的ggplot2的一个方面。我想假设的是Inf值通常会被删除或理想情况下不会生成。 - neilfws
1个回答

3
尝试
scale_y_continuous(oob=scales::discard)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接