我希望能够将两个图形结合起来,它们共用一个x轴,但其中一个是关于分类数据的分面条形图,另一个是关于连续数据的不分面图像,但与第一个图形上的两个面有关。
以下是我提供的虚拟数据和代码:
这将得到以下图表: 我还搜索了其他问题并尝试了以下代码:
我认为这可能是由于分面造成的。如有帮助,将不胜感激。此外,如果可能的话,我更愿意使用两个数据框而不是合并它们。
以下是我提供的虚拟数据和代码:
farm<- c(22, 33, 22, 33, 22, 33, 22, 33,
22, 33, 22, 33, 22, 33, 22, 33, 22, 33,
22, 33)
year<- c(2010, 2010, 2011, 2011, 2012, 2012, 2013, 2013,
2014, 2014, 2010, 2010, 2011, 2011, 2012, 2012, 2013,
2013, 2014, 2014)
exp<- c('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a',
'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b',
'b', 'b', 'b')
variable1<- c(3, 1, 3, 1, 2, 0, 2,
1, 3, 0, 1, 1, 1, 0, 2, 0, 1,
0, 0, 0)
variable2<- c(300, 100, 400, 123, 500, 100, 600, 100,
700, 100, 700, 100, 600, 100, 700, 100, 600,
100, 300, 100)
dwt<-data.frame(farm, year, exp, variable1)
dwt2<-data.frame(farm, year, variable2)
dwt$farm<- as.character(dwt$farm)
dwt %>%
mutate(as.character(farm))%>%
mutate(as.character(year))%>%
mutate(as.character(variable1))%>%
ggplot(aes(x=farm, fill = variable1)) +
geom_bar(stat = 'count') + facet_grid(exp~year) +
guides(fill=guide_legend(title="Level")) +
coord_cartesian(ylim=c(0, 5))
dwt2$farm<- as.character(dwt2$farm)
dwt2 %>%
mutate(as.character(farm))%>%
mutate(as.character(year))%>%
ggplot(aes(x=farm, y = variable2)) +
geom_bar(stat = 'identity') + facet_grid(~year) +
guides(fill=guide_legend(title="Level"))
这将得到以下图表: 我还搜索了其他问题并尝试了以下代码:
ggplot()+
geom_bar(data=dwt, aes(x=farm, fill=variable1))+ facet_grid(exp~year) +
geom_bar(data = dwt2, aes(x=farm, y=variable2))+ facet_grid(~year)
但出现以下错误:美学必须是长度为1或与数据(20)相同:x、y。我认为这可能是由于分面造成的。如有帮助,将不胜感激。此外,如果可能的话,我更愿意使用两个数据框而不是合并它们。
patchwork
或cowplot
将两个图表对齐并排放置。如果将这两个图表保存到变量a
和b
中,则library(patchwork); a / b
即可实现。 - Jon Spring