在r中创建堆叠条形图

在r中创建堆叠条形图,r,bar-chart,stacked-area-chart,R,Bar Chart,Stacked Area Chart,我真的很难在R中创建一个堆叠条形图。我是一个初学者,所以即使看其他示例,我也无法找到正确的解决方案。 以下是我的数据的外观: gdp_2 def_2 pcom_2 ff_2 nbr_2 tr_2 unemp_2 [1,] 0.02938106 0.01009107 0.014915879 0.9456120 0.000000000 0.000000000 0.00000000 [2,] 0.04824422 0.02

我真的很难在R中创建一个堆叠条形图。我是一个初学者,所以即使看其他示例,我也无法找到正确的解决方案。 以下是我的数据的外观:

         gdp_2      def_2      pcom_2      ff_2       nbr_2        tr_2    unemp_2
[1,] 0.02938106 0.01009107 0.014915879 0.9456120 0.000000000 0.000000000 0.00000000
[2,] 0.04824422 0.02513049 0.016115796 0.8303659 0.002320698 0.001255257 0.07656760
[3,] 0.06532489 0.05206917 0.011290059 0.7623530 0.002604175 0.008032572 0.09832613
[4,] 0.07485907 0.07576441 0.009215843 0.7064166 0.003207812 0.008397380 0.12213887
[5,] 0.07894689 0.10131343 0.007674296 0.6635104 0.003415185 0.009705830 0.13543392
左侧的数字1到5表示时间范围。因此,我想为每个时间范围叠加变量gdp_2、def_2、pcom_2、ff_2、nbr_2、tr_2和unemp_2的所有值

这应该是这样的

当然,有一个好的图例会很好,但目前我真的不知道如何创建堆叠条形图。 顺便说一下,对于那些对这个主题感兴趣的人来说:这是一个美国经济变量的预测误差方差分解

我已经提前非常感谢你了! 最好的,
Rico

使用
ggplot2
dplyr
tidyr
(tidyverse的所有部分)

库(tidyverse)
图表%mutate(year=1:n())%>%#将year作为列添加到df中
聚集(key=colname,value=value,-year)%>%#转换为长格式
ggplot(aes(x=年份,y=值,fill=colname))+#发送到ggplot
几何图形条(stat=“identity”,position=“stack”)#绘制堆叠条
打印(图表)

使用
ggplot2
dplyr
tidyr
(tidyverse的所有部分)

库(tidyverse)
图表%mutate(year=1:n())%>%#将year作为列添加到df中
聚集(key=colname,value=value,-year)%>%#转换为长格式
ggplot(aes(x=年份,y=值,fill=colname))+#发送到ggplot
几何图形条(stat=“identity”,position=“stack”)#绘制堆叠条
打印(图表)

请查看此链接。谢谢你对我的问题的评论!我已经看过了,但不幸的是,我无法将其应用到我的数据中,因为我是R的初学者。不过,感谢您花时间回答!请查看此链接。谢谢你对我的问题的评论!我已经看过了,但不幸的是,我无法将其应用到我的数据中,因为我是R的初学者。不过,感谢您花时间回答!亲爱的Andew Gustar非常感谢您的回答。在您的示例中,它看起来非常完美!这正是我想要的。然而,当我试图用我自己的数据做这件事时,我得到了一条错误消息:error in UseMethod(“mutate”):没有适用于类“c”(“matrix”,“double”,“numeric”)“亲爱的@Andrew Gustar非常感谢,我只是不得不更改我的数据,它是一个数据帧,现在工作得很好!!!非常感谢你的帮助!这就是我要建议的!很高兴你把它整理好了。亲爱的Andew Gustar非常感谢你的回答。在您的示例中,它看起来非常完美!这正是我想要的。然而,当我试图用我自己的数据做这件事时,我得到了一条错误消息:error in UseMethod(“mutate”):没有适用于类“c”(“matrix”,“double”,“numeric”)“亲爱的@Andrew Gustar非常感谢,我只是不得不更改我的数据,它是一个数据帧,现在工作得很好!!!非常感谢你的帮助!这就是我要建议的!很高兴你把它整理好了。
library(tidyverse)

chart <- df %>% mutate(year=1:n()) %>% #add year as a column to your df
  gather(key=colname,value=value,-year) %>% #convert to long format
  ggplot(aes(x=year,y=value,fill=colname)) + #send to ggplot
  geom_bar(stat="identity",position="stack") #draw stacked bar

print(chart)