R:堆叠垂直条形图,在GGPlot中有两个单独的类别

时间:2016-12-21 19:32:17

标签: r ggplot2

我正在尝试生成堆叠的垂直条形图,但我不确定如何重塑我的数据集以满足ggplot的期望。

我有一个包含两列的数据框,“已杀死”和“受伤”,每个列都与一个州名相关联。我想要一个垂直条形图,每个状态#injured堆叠在#killed。

之上

我可以像这样生成标准条形图:

ggplot(data=data, aes(x=state,y=killed)) + 
  geom_bar(position="dodge",stat="identity") + 
  coord_flip() +
  ggtitle("Mass Shooting Killings and Injuries") + 
  labs(x="Killings and Injuries", y="State") +
  ggtitle("Victims")

我知道“堆叠”条形图的方法是在ggplot美学中添加填充组件,但问题是我不知道如何以适合我的数据的方式这样做。

假冒可重复的例子:

data <- read.table(text = "state killed injured 
1 Arkansas 23 50 
2 Alabama 10 20
3 Texas 19 18
4 Ohio 14 15
5 Illinois 3 5", sep = "", header=T)

library(ggplot2)
library(reshape)
ggplot(data=data, aes(x=state,y=killed)) + 
  geom_bar(position="dodge",stat="identity") + 
  coord_flip() +
  ggtitle("Mass Shooting Killings and Injuries") + 
  labs(x="Killings and Injuries", y="State") +
  ggtitle("Victims")

enter image description here

1 个答案:

答案 0 :(得分:3)

我不得不使用melt对data.frame进行重新整形以获得此图:

temp <- melt(data, id="state")
ggplot(data=temp, aes(x=state,y=value, fill=variable)) + 
  geom_bar(position="stack",stat="identity") + 
  coord_flip() +
  ggtitle("Mass Shooting Killings and Injuries") + 
  labs(x="Killings and Injuries", y="State") +
  ggtitle("Victims")

enter image description here