嗨假设我有这样的数据帧。
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
我可以用ggplot
绘制这个ggplot(final , aes(y=gene, x=value, col=id)) +
geom_point(size=5)
然而,我想要的是根据数据帧的上下列为每个组设置边界线。因此,例如ATM将具有在.54和5.9上交叉的小垂直线。通过这种方式,我可以更好地想象每个样本落地的位置。 提前谢谢!
答案 0 :(得分:5)
您可以使用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()
要获得垂直线,您可以使用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()