首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并排绘制具有共享图例和不同x轴变量的条形图

并排绘制具有共享图例和不同x轴变量的条形图
EN

Stack Overflow用户
提问于 2021-07-03 02:51:14
回答 1查看 26关注 0票数 0

2012-2020年间,佛蒙特州基于年份和县的农业灾害报告计数。我想把by countyby year的这两个图和一个共同的图例画在一起。请注意,x轴是不同的,并且两个图例的共享变量的颜色不匹配。

虽然“按年”和“按县”在其原始数据集中共享相同数量的变量,但因为我希望对任何给定年份或县至少出现3次或更多的变量进行子集,所以“按县”只剩下3个变量,而“按年”具有相同的3个加上额外的3个变量。

我在堆栈中寻找答案,但没有唯一的解决方案,任何关于如何实现所需输出的想法都将不胜感激。

以下是数据:

代码语言:javascript
复制
df1<-structure(list(County = c("Addison", "Addison", "Addison", "Bennington", 
"Bennington", "Bennington", "Caledonia", "Caledonia", "Caledonia", 
"Chittenden", "Chittenden", "Chittenden", "Essex", "Essex", "Essex", 
"Franklin", "Franklin", "Franklin", "Grand Isle", "Grand Isle", 
"Grand Isle", "Lamoille", "Lamoille", "Lamoille", "Orange", "Orange", 
"Orange", "Orleans", "Orleans", "Orleans", "Rutland", "Rutland", 
"Rutland", "Washington", "Washington", "Washington", "Windham", 
"Windham", "Windham", "Windsor", "Windsor", "Windsor"), Type = c("Drought", 
"Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain", 
"Drought", "Frost & Cold Below\nNormal Temperatures", "Flooding &\nExcessive Rain"
), Count = c(4L, 3L, 7L, 7L, 4L, 7L, 5L, 6L, 4L, 2L, 1L, 7L, 
5L, 6L, 4L, 1L, 1L, 3L, 2L, 1L, 7L, 1L, 1L, 3L, 5L, 6L, 4L, 1L, 
1L, 3L, 3L, 3L, 6L, 1L, 1L, 3L, 5L, 6L, 5L, 6L, 6L, 5L), layer = c("By County", 
"By County", "By County", "By County", "By County", "By County", 
"By County", "By County", "By County", "By County", "By County", 
"By County", "By County", "By County", "By County", "By County", 
"By County", "By County", "By County", "By County", "By County", 
"By County", "By County", "By County", "By County", "By County", 
"By County", "By County", "By County", "By County", "By County", 
"By County", "By County", "By County", "By County", "By County", 
"By County", "By County", "By County", "By County", "By County", 
"By County"), Year = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
)), row.names = c(NA, -42L), class = c("tbl_df", "tbl", "data.frame"
))

df2<-structure(list(Year = c("2012", "2012", "2012", "2012", "2012", 
"2012", "2013", "2013", "2013", "2013", "2013", "2013", "2014", 
"2014", "2014", "2014", "2014", "2014", "2015", "2015", "2015", 
"2015", "2015", "2015", "2016", "2016", "2016", "2016", "2016", 
"2016", "2017", "2017", "2017", "2017", "2017", "2017", "2018", 
"2018", "2018", "2018", "2018", "2018", "2019", "2019", "2019", 
"2019", "2019", "2019", "2020", "2020", "2020", "2020", "2020", 
"2020"), Type = c("Heat, Excessive Heat,\nHigh Temp, Low Humidty", 
"Wind, High Winds", "Hail", "Drought", "Frost & Cold Below\nNormal Temperatures", 
"Flooding &\nExcessive Rain", "Heat, Excessive Heat,\nHigh Temp, Low Humidty", 
"Wind, High Winds", "Hail", "Drought", "Frost & Cold Below\nNormal Temperatures", 
"Flooding &\nExcessive Rain", "Heat, Excessive Heat,\nHigh Temp, Low Humidty", 
"Wind, High Winds", "Hail", "Drought", "Frost & Cold Below\nNormal Temperatures", 
"Flooding &\nExcessive Rain", "Heat, Excessive Heat,\nHigh Temp, Low Humidty", 
"Wind, High Winds", "Hail", "Drought", "Frost & Cold Below\nNormal Temperatures", 
"Flooding &\nExcessive Rain", "Heat, Excessive Heat,\nHigh Temp, Low Humidty", 
"Wind, High Winds", "Hail", "Drought", "Frost & Cold Below\nNormal Temperatures", 
"Flooding &\nExcessive Rain", "Heat, Excessive Heat,\nHigh Temp, Low Humidty", 
"Wind, High Winds", "Hail", "Drought", "Frost & Cold Below\nNormal Temperatures", 
"Flooding &\nExcessive Rain", "Heat, Excessive Heat,\nHigh Temp, Low Humidty", 
"Wind, High Winds", "Hail", "Drought", "Frost & Cold Below\nNormal Temperatures", 
"Flooding &\nExcessive Rain", "Heat, Excessive Heat,\nHigh Temp, Low Humidty", 
"Wind, High Winds", "Hail", "Drought", "Frost & Cold Below\nNormal Temperatures", 
"Flooding &\nExcessive Rain", "Heat, Excessive Heat,\nHigh Temp, Low Humidty", 
"Wind, High Winds", "Hail", "Drought", "Frost & Cold Below\nNormal Temperatures", 
"Flooding &\nExcessive Rain"), Count = c(1L, 0L, 0L, 3L, 3L, 
0L, 0L, 5L, 5L, 0L, 0L, 38L, 0L, 0L, 0L, 0L, 10L, 0L, 0L, 3L, 
3L, 8L, 0L, 3L, 8L, 3L, 0L, 9L, 10L, 0L, 0L, 0L, 0L, 0L, 4L, 
4L, 0L, 0L, 0L, 4L, 0L, 4L, 0L, 0L, 0L, 0L, 19L, 19L, 0L, 0L, 
0L, 24L, 0L, 0L), layer = c("By Year", "By Year", "By Year", 
"By Year", "By Year", "By Year", "By Year", "By Year", "By Year", 
"By Year", "By Year", "By Year", "By Year", "By Year", "By Year", 
"By Year", "By Year", "By Year", "By Year", "By Year", "By Year", 
"By Year", "By Year", "By Year", "By Year", "By Year", "By Year", 
"By Year", "By Year", "By Year", "By Year", "By Year", "By Year", 
"By Year", "By Year", "By Year", "By Year", "By Year", "By Year", 
"By Year", "By Year", "By Year", "By Year", "By Year", "By Year", 
"By Year", "By Year", "By Year", "By Year", "By Year", "By Year", 
"By Year", "By Year", "By Year"), County = c(NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA)), row.names = c(NA, -54L), class = c("tbl_df", "tbl", 
"data.frame"))

代码如下:

代码语言:javascript
复制
# library(ggplot2)
# library(RColorBrewer)
# library(sjPlot)
# library(tidyr)
# library(viridis)

set_theme(
  geom.outline.color = "antiquewhite4", 
  geom.outline.size = .5, 
  geom.label.size = 1.5,
  geom.label.color = "black",
  title.color = "black", 
  title.size = 1.5, 
  title.align = 'center',
  # axis.angle.x = 90, 
  axis.textcolor = "black", 
  axis.textsize = 1.15,
  base = theme_bw(),
)

p1<-ggplot(df1)+
  geom_bar(aes(x=County, y=Count, fill=Type), stat="identity") +
  # scale_fill_brewer(palette="PuRd") +
  scale_fill_viridis(discrete = TRUE) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1), legend.key.height=unit(.75, "cm"))

p1

p2<-ggplot(df2)+
  geom_bar(aes(x=Year, y=Count, fill=Type), stat="identity") +
  # scale_fill_brewer(palette="PuRd") +
  scale_fill_viridis(discrete = TRUE) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1), legend.key.height=unit(.75, "cm"))

p2
EN

回答 1

Stack Overflow用户

发布于 2021-07-03 03:34:51

我在您的代码中尝试了gridExtra,它似乎起到了作用

代码语言:javascript
复制
library(gridExtra)
p3 <- grid.arrange(arrangeGrob(p1 + theme(legend.position="none"),
                           p2 + theme(legend.position="right"),
                           nrow=1),nrow=2,heights=c(10, 1))

之后我看到的问题是更改图例标题和可能删除/隐藏一个y轴标签(编辑:现在我可以看到轴是不一样的)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68230083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档