我在r中使用ggplot2并绘制了图。但是,我想在现有的x轴下添加一个.csv文件中的间隔。
这是一个示例,显示我想在x轴下绘制的内容:
http://www.nature.com/nprot/journal/v8/n5/images/nprot.2013.053-F3.jpg
图片“a”在x轴下具有间隔。
我有一个.csv文件,其间隔格式为:
Fraction no.; Interval
"1"; [0:2]
"2"; [2:4]
依此类推,最多可达到80个,所以我希望它们自动添加。
我希望有可能,这样我就不必在另一个程序中手动进行操作。
最佳答案
我们可以使用geom_segment
中的ggplot
在新图中绘制间隔,并使用grid.arrange()
库中的gridExtra
将它们与它们重新组合。
例如,使用虹膜数据:
我创建了一个直方图:
g <- ggplot(iris,aes(x=Sepal.Length,y=Sepal.Width))+geom_histogram(stat="identity")
然后用这样的间隔数据:
inter <- data.frame(v1=seq(0,max(iris$Sepal.Length),1.5),v2=seq(1,max(iris$Sepal.Length)+2,1.5))
head(inter)
v1 v2
1 0.0 1.0
2 1.5 2.5
3 3.0 4.0
4 4.5 5.5
5 6.0 7.0
6 7.5 8.5
我创建了一个没有背景和轴的新图:
top <- ggplot(inter,aes(v1,0))+geom_segment(aes(x=v1,y=0,xend=v2,yend=0))+geom_segment(aes(x=v1,xend=v1,y=0,yend=0.5))+geom_segment(aes(x=v2,xend=v2,y=0,yend=0.5))+theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(),axis.ticks=element_blank(),axis.text=element_blank())+xlab("")+ylab("")
并将其添加到上一个图
grid.arrange(g,top,ncol=1,nrow=2,heights=c(6,1))
结果是: