如何解决ggplot2问题:在x轴从y = 0到每个x值的最大值之间绘制一条垂直线
我试图绘制价格在我的数据库中按链条显示的次数,用不同的颜色表示链条,并绘制一条线,将x轴(y = 0)连接到每个价格的最高点(x值)和链条颜色。如果两个不同的链具有相同的价格,我希望线重叠。这是我的数据: Data
例如:价格39.5对于链b出现两次,对于链a出现一次。
我想要一个带有点和线的图形。每个点必须是根据链条颜色在每个链条中出现的价格的次数。至此,我可以对其进行绘图,得到以下图形:
当我尝试用x轴连接点时会出现问题,我尝试使用geom_segment,但是当同一价格出现在多个链中时,它给了我一个带有对角线的怪异图,像这样:
这是我的代码:
gP1 <- ggplot(fP1,aes(Price,N,color=Chain),group=Price) +
geom_point() +
geom_segment(aes(xend=N,color=Chain,group=Price),yend=0)
任何帮助将不胜感激,我想得到一个像这样的图:
谢谢!
解决方法
尝试使用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()
输出:
上一个草图考虑了geom_segment()
的所有设置。可以简化为这一点(非常感谢并感谢 @RuiBarradas ):
#Plot 2
ggplot(fP1,group=Price)) +
geom_point() +
geom_segment( aes(xend=Price,yend=0))+
theme_bw()
它将产生相同的输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。