在R中获得连续线图

时间:2015-01-03 12:24:37

标签: r plot

我想要绘制附图像。它来自本文http://www.nature.com/nature/journal/v488/n7410/extref/nature11319-s1.pdf(图11D)。我知道它是在R中完成的,但我不知道包/功能。

这是我数据的一个子集:

SampleID prevo.bact
37.TO.O -3.00468736
31.TO.V -3.42291741
06.BO.VG -2.56462361
37.PR.O  0.91296148
03.BA.O  0.02868464
30.BO.V -0.24479930

我以新月形式排序了这些值,并尝试使用情节

绘制它们
mydata.ordered=order(my.data$prevo.bact) 
plot(my.data$prevo.bact[my.data.ordered])

这与我想要获得的输出非常接近,但我不知道如何更改获得垂直线的点(图中没有一种类型可用)和如何根据类向量clD

更改颜色
clD = unlist(lapply(strsplit(row.names(my.data),'[.]'),function(x){x[[3]]}))
names(clD)=row.names(my.data)

此外,我不希望这些点之间有空的空间(如附图所示,我喜欢连续体)。 我怎样才能得到类似的东西?可能基本情节不是......

由于 弗朗西斯

example of what I'd like to get

enter image description here

1 个答案:

答案 0 :(得分:3)

我试一试。我认为情节看起来连续的原因很简单,就是有足够的点来创造连续性的幻觉。为了获得足够的分数,我必须自己创建一些样本数据,因为你提供的六点是不够的。

library(ggplot2)
my.data <- data.frame(SampleID=rep(c("37.TO.O","31.TO.V","06.BO.VG","37.PR.O","03.BA.O","30.BO.V"),times=30),
                  prevo.bact=rnorm(180,0,3),
                  stringsAsFactors=FALSE)
my.data$clD <- sapply(strsplit(my.data$SampleID,'[.]'),function(x){x[[3]]})
my.data.ordered <- my.data[order(my.data$prevo.bact),]
my.data.ordered$num <- 1:nrow(my.data)
ggplot(my.data.ordered,aes(num,prevo.bact)) + geom_point(size=5,shape="|",aes(col=clD)) + theme_classic()

我使用过ggplot,因为我不知道如何使用基本图形为数据点着色。选项shape="|"使用垂直线而不是点。

这是我得到的数字: enter image description here