2

我有一系列密度估计值,我想在 ggplot2 中进行比较。到目前为止,我不依附于我选择的任何细节(例如,如果这些都在一个情节上,我是否应该使用 facets、grid.arrange 等)我愿意接受建议:

第一次尝试:

p1<-ggplot(data, aes(TPM,fill=col))+scale_x_log10()+scale_fill_brewer(type="div") + geom_density(alpha=.7) 
p2<-ggplot(data, aes(RPKM,fill=col))+scale_x_log10()+scale_fill_brewer(type="div") + geom_density(alpha=.7) 
grid.arrange(p1,p2,ncol=1)

在此处输入图像描述

很好,但我希望轴相同,以便它们具有可比性。

我尝试使用设置限制,coord_cartesian(xlim=c(0,5))但出现错误,例如

Error in seq.default(min, max, by = by) : 
  'from' cannot be NA, NaN or infinite

我也尝试在中设置限制,scale_x_log10(limits=c(0,5)但我得到了

Error in seq.default(range[1], range[2], length = 200) : 
  'from' cannot be NA, NaN or infinite
Error in exists(name, envir = env, mode = mode) : 
  argument "env" is missing, with no default

有没有更好的方法来排列这些图表,以便它们更容易比较?我愿意接受任何解决方案。

我的数据是这种形式:

         RPKM         TPM col
1 0.129335235 0.602873040   3
2 0.395073341 1.724916453   4
3 0.004909958 0.003465248   1
4 0.466517328 0.557687694   1
5 0.522773169 0.486767563   1
6 0.179694966 0.180683888   1
4

1 回答 1

4

如果您对数据框进行从宽到长的转换,您可以使用 ggplot facets 进行绘图。默认情况下,除非您覆盖它们,否则您将拥有相同的 x 和 y 比例。我为下面的示例生成了一些数据):

library(ggplot2)
library(reshape2)
library(gridExtra)

set.seed(1492)
data <- data.frame(RPKM=runif(2000, min=0, max=1),
                   TPM=runif(2000, min=0, max=1),
                   col=factor(sample(1:9, 2000, replace=TRUE)))

data_m <- melt(data)
data_m$col <- factor(data_m$col) # need to refactor "col"

gg <- ggplot(data_m)
gg <- gg + geom_density(aes(value, fill=col), alpha=.7) 
gg <- gg + scale_fill_brewer(type="div")
gg <- gg + facet_wrap(~variable, ncol=1)
gg

在此处输入图像描述

于 2014-10-08T01:45:31.970 回答