如何解决在 ggplot 上使用分组躲避条显示多行
我有数据需要在同一图表上以条形和线形显示。我一直在遵循 https://r-charts.com/evolution/line-graph-multiple-lines-ggplot2/ 和 https://aledemogr.com/2017/05/29/plots-based-on-un-data-in-r/ 的指导,它们都表明数据应该采用“长”格式,其中所有值都在同一列中,而变量类型在另一列中,如与每个变量都有自己的列相反。
它几乎有效,但不完全有效。结果是:
如果我从下面的 ggplot 命令中注释掉 geom_line(),V1 和 V2 条(橙色和绿色)在图形和图例中都正确显示。如果我注释掉 geom_col(),V3 和 V4 行在图形和图例中都能正确显示。但是当我同时包含这两个命令时,ggplot 会在条形周围放置边框并将所有变量与图例中的线条组合在一起。两条线本身在组合图上是可以的,除非我稍后会使用颜色。
任何想法如何删除条形周围的彩色边框并将线条限制为 V3 和 V4?如果您删除“geom_line()”命令(无边框)、按原样显示的线条以及总共有四个条目的图例,我对条形图的期望结果是它们的外观:两个带条形的条目标记为“V1”和“V2”以及两条标记为“V3”和“V4”的简单行。
代码如下:
mydata <- data.frame(month=c(2,2,6,10,10),year=c(2016,2016,2017,2017),var_type=c("V1","V2","V3","V4","V1","V4"),var_value=c(1,4,3,1,5,22,12,16,23,8,7,8))
bar_data <- mydata %>%
filter(water_type == "V1" | water_type == "V2")
line_data <- mydata %>%
filter(water_type == "V3" | water_type == "V4")
ggplot(line_data,aes(x=month,y=water_val,color=water_type)) +
geom_col(data=bar_data,aes(fill = water_type),position="dodge") +
geom_line() +
ggtitle("V1 and V2") +
scale_y_continuous(breaks = seq(0,25,10)) +
xlab("Month") +
ylab("(cm)") +
facet_wrap(~year,nrow=2)
我使用的是 R 版本 3.6.1。
提前致谢!
解决方法
试试这个
ggplot(line_data,aes(x=month,y=water_val)) +
geom_col(data=bar_data,aes(fill = water_type),position="dodge") +
geom_line(aes(color=water_type)) +
ggtitle("V1 and V2") +
scale_y_continuous(breaks = seq(0,25,10)) +
xlab("Month") +
ylab("(cm)") +
facet_wrap(~year,nrow=2)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。