佛蒙特州 2012 年至 2020 年各县农业灾害报告数量。我想将 by county 和 by year 的这两个图与一个共同的图例一起绘制。请注意,x 轴不同,并且两个图例的共享变量的颜色不匹配。
虽然 'by Year' 和 'by County' 在其原始数据集中共享相同数量的变量,因为我想对任何给定年份或县至少出现 3 次或更多次的变量进行子集化,只有 3 个变量保留为“按县”,而“按年”具有相同的三个加上额外的 3。
我在堆栈中搜索了一个答案,但没有唯一的解决方案,任何关于如何实现所需输出的想法都表示赞赏。
这是数据:
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"))
代码如下:
# 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
答案 0 :(得分:0)
我用你的代码尝试了 gridExtra,它似乎成功了
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 轴标签之一(编辑:现在我可以看到轴不相同)