【问题标题】:Multiple splines in one plot一个绘图中的多个样条曲线
【发布时间】:2015-08-26 12:10:33
【问题描述】:

我是 R 的新手,我正在尝试生成一个简单的散点图,其中包含多个样条拟合。

我有一张如下图所示的表格,

chr     window  number  percent pie  
chr1    500     15      0.502   na  
chr1    1000    21      0.641   0.019704955  
chr1    1500    21      0.621   0.016777844  
chr1    2000    22      0.534   na  
chr1    2500    35      0.698   0.028712731  
chr2    4500    2       0.371   na    
chr2    5000    3       0.342   na    
chr4    5500    1       0.068   na    
chr4    6000    0       0.000   na    
chr4    6500    0       0.000   na    
chr5    7000    2       0.079   na    
chr5    7500    12      0.440   na

我想做的基本上是从此数据框中绘制一个简单的 x,y 散点图,并在同一图上为第 1 列中的每个级别添加样条拟合。现在我可以生成这样的散点图了,

ggplot(Y, aes(x=percent, y=pie))+ geom_point(size = 1)  +
theme(axis.text.y=element_text(size=8))

但到目前为止,我看到的所有示例都是关于每个图有一条样条线。我的问题是如何根据 column1 拆分数据框并为每个子集生成样条曲线,最后将所有样条曲线与散点图放在同一个图中?

我更喜欢将其保留在 ggplot 中,但如果您有 ggplot 之外的解决方案,请也告诉我。

任何帮助将不胜感激。如果您需要我方面的更多信息,请告诉我。

干杯,

【问题讨论】:

  • geom_smooth 会做你想做的事吗? (如果没有,请考虑详细说明您想要的输出是什么样的,尤其是与您目前看到的那些“示例”相比*)。当然,您可以添加多个 geom_* 层。
  • 您可以尝试将colour = chr 添加到aes(),然后使用stat_smooth() 进行样条拟合,如其文档(docs.ggplot2.org/0.9.3/stat_smooth.html)中所示例的那样
  • @maj- 我会在这里详细说明。因此,如果您查看上表,column1 中有五个级别(chr1、chr2、...chr5)。我的最终输出将是从该表中的所有值生成的散点图,其中包含 5 个样条线(对应于第 1 列中的每个层)。这清楚吗?
  • @Hugo - 我试过了,但我只得到一个样条线。不确定我是否做得对。 c

标签: r plot ggplot2 spline


【解决方案1】:

我为 Y$pie<-rnorm(12) 变量添加了一些数据,因为只有 3 个值。

ggplot(Y, aes(x=percent, y=pie,color=chr))+ geom_point(size = 3)  +
         theme(axis.text.y=element_text(size=8)) + 
         geom_smooth(method = "lm", se = FALSE, size=1,show_guide=FALSE)

这是否更接近您的要求?

【讨论】:

  • 这接近我所追求的,但是当我尝试这个时,我得到了不同颜色的点,正如我们所期望的那样,但只有一条样条曲线?我想也许这些线重叠了,所以我也尝试了其他方法,但这些方法似乎都不起作用:(任何指针?
  • 您是否为pie 变量使用了更多数据?现在它只有chr中的一个级别的数据
  • 是的,我的表中有超过 17000 行。这是桌子上的一个人头。
  • @user2960593 您的单条样条曲线是否着色为chr 值之一?如果是,那么可能是您没有足够的分数来拟合剩余的染色体。尝试通过table(Y$chr, !is.na(Y$pie)) 进行检查。希望您应该获得高计数 TRUE(即,不是 NA 值)。
  • 感谢各位的帮助。这行得通。原来,百分比值被存储为字符类型,这就是问题的原因。将其更改为数字后,此解决方案有效。考虑到百分比值是除法运算的结果,这很奇怪。无论如何,我很高兴它奏效了。再次感谢。
猜你喜欢
  • 2012-12-14
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
相关资源
最近更新 更多