繁体   English   中英

在 ggplot 上使用分组(躲避)条显示多行

[英]Displaying multiple lines on ggplot with grouped (dodged) bars

我有数据需要在同一图表上以条形和线形显示。 我一直在遵循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,2,2,2,2,2,2,6,6,6,6,6,6,6,6,
                             10,10,10,10,10,10,10,10),
                   year=c(2016,2016,2016,2016,2017,2017,2017,2017,
                          2016,2016,2016,2016,2017,2017,2017,2017,
                          2016,2016,2016,2016,2017,2017,2017,2017),
                   var_type=c("V1","V2","V3","V4","V1","V2","V3","V4",
                              "V1","V2","V3","V4","V1","V2","V3","V4",
                              "V1","V2","V3","V4","V1","V2","V3","V4"),
                   var_value=c(1,4,4,3,1,5,4,3,3,22,12,16,
                               3,23,12,16,12,8,7,8,3,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)

输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM