Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:堆叠几何图形条(ggplot)中每个X轴元素的多列_R_Ggplot2_Stack_Bar Chart - Fatal编程技术网

R:堆叠几何图形条(ggplot)中每个X轴元素的多列

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

我有数据显示,随着时间的推移,我在不同省份的不同技能班就业。我想在一张图表中显示不同省份和班级的就业情况。下图显示了我想要的内容,但仅限一年(2000年)

但是我希望在同一个图表中,每个省的每个条(显示每年)重复两次(在我有2年的例子中)。换言之,我想在2000年的条形图旁边显示2001年的数据,如上图所示

以下是部分数据:

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"))