嗨假设我有这样的数据帧.
id gene value upper lower
AE5 ATM 4.046142 0.5440875 5.941381
AE5 ATR 3.463361 1.5046214 4.867110
AE5 BRCA1 4.228049 -0.7397759 5.791135
AE5 CDK12 4.488001 1.6029831 6.106177
AE5 CDKN1A 4.837943 2.1936042 9.880194
AE6 ATM 3.629939 0.5440875 5.941381
AE6 ATR 3.121015 1.5046214 4.867110
AE6 BRCA1 4.368070 -0.7397759 5.791135
AE6 CDK12 4.759688 1.6029831 6.106177
AE6 CDKN1A 5.757290 2.1936042 9.880194
Run Code Online (Sandbox Code Playgroud)
我可以用ggplot绘制这个
ggplot(final , aes(y=gene, x=value, col=id)) +
geom_point(size=5)
Run Code Online (Sandbox Code Playgroud)
然而,我想要的是根据数据帧的上下列为每个组设置边界线.因此,例如ATM将具有在.54和5.9上交叉的小垂直线.通过这种方式,我可以更好地想象每个样品落地的位置.提前致谢!
您可以geom_errorbarh从ggstance包中使用.要获得单个范围线而不管id(因为两个级别的范围相同id),将颜色美学移动到geom_point所以它仅适用于点而不是误差条.我们还将数据设置为geom_errorbarh仅选择一个,id以避免将相同的误差条多次绘制在彼此之上.
library(ggplot2)
library(ggstance)
ggplot(final , aes(y=gene, x=value)) +
geom_errorbarh(data=final[final$id=="AE5",], aes(xmin=lower, xmax=upper),
width=0.2, colour="grey50") +
geom_point(size=5, aes(col=id)) +
theme_bw()
Run Code Online (Sandbox Code Playgroud)
要获得垂直线条,您可以进行两次调用以geom_point使用"|"点标记(尽管我认为使用水平线来引导眼睛更容易阅读图形).
ggplot(final , aes(y=gene, x=value)) +
geom_point(aes(x=upper), shape="|", size=5) +
geom_point(aes(x=lower), shape="|", size=5) +
geom_point(size=5, aes(col=id)) +
theme_bw()
Run Code Online (Sandbox Code Playgroud)