R:堆叠几何图形条(ggplot)中每个X轴元素的多列
我有数据显示,随着时间的推移,我在不同省份的不同技能班就业。我想在一张图表中显示不同省份和班级的就业情况。下图显示了我想要的内容,但仅限一年(2000年) 但是我希望在同一个图表中,每个省的每个条(显示每年)重复两次(在我有2年的例子中)。换言之,我想在2000年的条形图旁边显示2001年的数据,如上图所示 以下是部分数据:R:堆叠几何图形条(ggplot)中每个X轴元素的多列,r,ggplot2,stack,bar-chart,R,Ggplot2,Stack,Bar Chart,我有数据显示,随着时间的推移,我在不同省份的不同技能班就业。我想在一张图表中显示不同省份和班级的就业情况。下图显示了我想要的内容,但仅限一年(2000年) 但是我希望在同一个图表中,每个省的每个条(显示每年)重复两次(在我有2年的例子中)。换言之,我想在2000年的条形图旁边显示2001年的数据,如上图所示 以下是部分数据: df <- structure(list(year = c(2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 20
df <- structure(list(year = c(2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L,
2001L), province = c("Alberta", "Alberta", "Alberta", "Alberta",
"Manitoba", "Manitoba", "Manitoba", "Manitoba", "Alberta", "Alberta",
"Alberta", "Alberta", "Manitoba", "Manitoba", "Manitoba", "Manitoba"
), classes = structure(c(2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L), .Label = c("[0,0.2]", "(0.2,0.4]",
"(0.4,0.6]", "(0.6,0.8]", "(0.8,1)", "1"), class = "factor"),
total = c(11387250L, 4373500L, 18250L, 3215500L, 3984750L,
1414750L, 2000L, 1222750L, 11838250L, 4390000L, 21250L, 3272750L,
4019750L, 1331750L, 7750L, 1237000L)), row.names = c(NA,
-16L), vars = c("year", "province", "classes"), drop = TRUE, class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), indices = list(3L, 0L, 1L, 2L,
7L, 4L, 5L, 6L, 11L, 8L, 9L, 10L, 15L, 12L, 13L, 14L), group_sizes = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), biggest_group_size = 1L, labels = structure(list(
year = c(2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L
), province = c("Alberta", "Alberta", "Alberta", "Alberta",
"Manitoba", "Manitoba", "Manitoba", "Manitoba", "Alberta",
"Alberta", "Alberta", "Alberta", "Manitoba", "Manitoba",
"Manitoba", "Manitoba"), classes = structure(c(1L, 2L, 3L,
4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("[0,0.2]",
"(0.2,0.4]", "(0.4,0.6]", "(0.6,0.8]", "(0.8,1)", "1"), class = "factor")), row.names = c(NA,
-16L), vars = c("year", "province", "classes"), drop = TRUE, class = "data.frame"))
df这就是你要找的吗
ggplot(df,aes(fill=classes,y=total/10^6,x=as.factor(year))+
几何图形栏(position=“stack”,stat=“identity”)+
面_包裹(.~省)
根据@user12728748的建议,您可以修改面板的边距,使其更像一个单独的绘图:
ggplot(df,aes(fill=classes,y=total/10^6,x=as.factor(year))+
几何图形栏(position=“stack”,stat=“identity”)+
面_包裹(.~省)+
主题(panel.margin=grid::unit(-1.25,“行”))
注意:要小心,因为如果您在facet\u wrap
中设置了scales=free
,则不能使用此技巧。当您说,您希望每个条重复,您的意思是每个省每年重复两次吗?那么,以8根堆叠的钢筋结束?还是4个堆叠的条形图?我正在寻找一种在一个图形中完成的方法,我忘了如果我强制facet\u wrap
在一行中完成,它看起来就像我想要的,谢谢你不客气;)您还可以使用facet\u grid
并将nrow
设置为1。如果您添加主题(panel.margin=grid::unit(-1.25,“lines”)
它看起来更像一个图形…@user12728748,很好!我不知道这个选项。我将编辑我的答案,作为备选答案
df <- structure(list(year = c(2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L,
2001L), province = c("Alberta", "Alberta", "Alberta", "Alberta",
"Manitoba", "Manitoba", "Manitoba", "Manitoba", "Alberta", "Alberta",
"Alberta", "Alberta", "Manitoba", "Manitoba", "Manitoba", "Manitoba"
), classes = structure(c(2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L), .Label = c("[0,0.2]", "(0.2,0.4]",
"(0.4,0.6]", "(0.6,0.8]", "(0.8,1)", "1"), class = "factor"),
total = c(11387250L, 4373500L, 18250L, 3215500L, 3984750L,
1414750L, 2000L, 1222750L, 11838250L, 4390000L, 21250L, 3272750L,
4019750L, 1331750L, 7750L, 1237000L)), row.names = c(NA,
-16L), vars = c("year", "province", "classes"), drop = TRUE, class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), indices = list(3L, 0L, 1L, 2L,
7L, 4L, 5L, 6L, 11L, 8L, 9L, 10L, 15L, 12L, 13L, 14L), group_sizes = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), biggest_group_size = 1L, labels = structure(list(
year = c(2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L
), province = c("Alberta", "Alberta", "Alberta", "Alberta",
"Manitoba", "Manitoba", "Manitoba", "Manitoba", "Alberta",
"Alberta", "Alberta", "Alberta", "Manitoba", "Manitoba",
"Manitoba", "Manitoba"), classes = structure(c(1L, 2L, 3L,
4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("[0,0.2]",
"(0.2,0.4]", "(0.4,0.6]", "(0.6,0.8]", "(0.8,1)", "1"), class = "factor")), row.names = c(NA,
-16L), vars = c("year", "province", "classes"), drop = TRUE, class = "data.frame"))