我有对范围的观察,例如:A 13-20,B 15-30,C 23-40,D 2-11,我想在R中绘制它们的起始值和结束值。13和20的A(上限和下限,如果你可以说),以便可视化和找出哪些范围是共同的某些组合的观察。在R中有什么快速的方法可以做到吗?我认为这是一个很小的问题,我有,但我想不出无论如何,现在去做。
发布于 2014-11-29 19:13:34
下面是使用ggplot的解决方案。还不清楚您的数据的格式是什么,因此假设数据框架包含id ( and )、min和max列。
df <- data.frame(id=LETTERS[1:4], min=c(13,15,23,2), max=c(20,30,40,11))
library(ggplot2)
ggplot(df, aes(x=id))+
geom_linerange(aes(ymin=min,ymax=max),linetype=2,color="blue")+
geom_point(aes(y=min),size=3,color="red")+
geom_point(aes(y=max),size=3,color="red")+
theme_bw()我增加了大量的定制,只是为了让您了解它是如何完成的。您可以使用aes(...)函数告诉ggplot,df中的哪些列映射到图形的各种美学。例如,aes(x=id)告诉ggplot,x轴的值可以在df的id列中找到,等等。

编辑:对OP评论的响应。
若要更改轴文本的大小,请使用theme(...)函数,如下所示:
ggplot(df, aes(x=id))+
geom_linerange(aes(ymin=min,ymax=max),linetype=2,color="blue")+
geom_point(aes(y=min),size=3,color="red")+
geom_point(aes(y=max),size=3,color="red")+
theme_bw()+
theme(axis.text.x=element_text(size=15))

在这里,我使x轴的文本更大。和size=...一起玩,以你想要的方式得到它。还可以阅读文档(?theme)以获得其他格式选项的列表。
发布于 2014-11-29 19:02:47
还不清楚dataset是否具有string格式的范围列,即'13-20'、'15-30'等,或者是否如所创建的示例所示是两个numeric列。
matplot(m1, xaxt='n', pch=1, ylab='range')
axis(1, at=seq_len(nrow(m1)), labels=row.names(m1))
s1 <- seq_len(nrow(m1))
arrows(s1, m1[,1], s1, m1[,2], angle=90, length=0.1)

如果data有string列(d1)
library(splitstackshape)
d2 <- setDF(cSplit(d1, 'range', '-'))
matplot(d2[,-1], xaxt='n', pch=1, ylab='range')
axis(1, at=seq_len(nrow(d2)), labels=d2$Col1)
arrows(s1, d2[,2], s1, d2[,3], angle=90, length=0.1)数据
m1 <- matrix(c(13,20, 15,30, 23,40, 2,11),
byrow=TRUE,dimnames=list(LETTERS[1:4],NULL), ncol=2)
d1 <- data.frame(Col1=LETTERS[1:4],
range=c('13-20', '15-30', '23-40', '2-11'), stringsAsFactors=FALSE)https://stackoverflow.com/questions/27205629
复制相似问题