【发布时间】:2017-07-24 15:41:04
【问题描述】:
我很难理解为什么 ggplot 和 plot 会生成相同数据的略有不同的图。 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值通常会被删除或理想情况下不会生成。