微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ggplot2问题:在x轴从y = 0到每个x值的最大值之间绘制一条垂直线

如何解决ggplot2问题:在x轴从y = 0到每个x值的最大值之间绘制一条垂直线

我试图绘制价格在我的数据库中按链条显示次数,用不同的颜色表示链条,并绘制一条线,将x轴(y = 0)连接到每个价格的最高点(x值)和链条颜色。如果两个不同的链具有相同的价格,我希望线重叠。这是我的数据: Data

例如:价格39.5对于链b出现两次,对于链a出现一次。

我想要一个带有点和线的图形。每个点必须是根据链条颜色在每个链条中出现的价格的次数。至此,我可以对其进行绘图,得到以下图形:

Graph1

当我尝试用x轴连接点时会出现问题,我尝试使用geom_segment,但是当同一价格出现在多个链中时,它给了我一个带有对角线的怪异图,像这样:

Graph2

这是我的代码

gP1 <- ggplot(fP1,aes(Price,N,color=Chain),group=Price) +
    geom_point() +
    geom_segment(aes(xend=N,color=Chain,group=Price),yend=0)

任何帮助将不胜感激,我想得到一个像这样的图:

Graph3

谢谢!

解决方法

尝试使用geom_segment()定义x和y位置的正确值的方法。这里的代码:

library(ggplot2)
#Data
fP1 <- data.frame(Price=c(39.5,39.5,39.9,40,42.5,42.8,45,46,47.9,50),Chain=c('a','b','h','c','d','e','f','g'),N=c(1,2,1,4,3))
#Plot
ggplot(fP1,aes(Price,N,color=Chain,group=Price)) +
  geom_point() +
  geom_segment( aes(x=Price,xend=Price,y=0,yend=N))+
  theme_bw()

输出:

enter image description here

上一个草图考虑了geom_segment()的所有设置。可以简化为这一点(非常感谢并感谢 @RuiBarradas ):

#Plot 2
ggplot(fP1,group=Price)) +
  geom_point() +
  geom_segment( aes(xend=Price,yend=0))+
  theme_bw()

它将产生相同的输出。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。