r - 一起创建3个条形图

时间:2017-03-08 13:53:57

标签: r ggplot2 bar-chart

我正在尝试使用ggplot2在一个地块中创建3个条形图。 3个条形图共享相同的x轴值,这就是我想要分组的方式,而不是像这样并排放置整个图:

enter image description here

由于我使用的数据帧相当大,我在下面提出了一个理想化的数据框:

> d1rm.null
  Threat1_Cat Threat1 Threat2_Cat Threat2 Threat3_Cat Threat3
1           1     1.2           5     5.2           7     7.2
2           7     7.2           4     4.1           2     2.1
3           4     4.3           7     7.2           1     1.1
4           5     5.1           7     7.1           1     1.1
5           4     4.2           2     2.1           3     3.0

我用来创建脚本的脚本如下:

ggplot(data = d1rm.null, aes(x = Threat1_Cat, colour = Threat1)) +
    geom_bar() +
    labs(x = "Higher Threat Category", y="Frequency") +
    ggtitle("Threat 1 Distribution Before Any Exclusions") + 
    guides(colour=guide_legend(title="Higher Resolution Threat Category"))

哪个有输出:

enter image description here

这与我的目标类似,我的目标是看起来像,但存在所有3种威胁。

谢谢!

1 个答案:

答案 0 :(得分:2)

我试图重塑数据,但我找不到自动执行的操作,所以我“手动”完成了。必须有一个更好的解决方案。 无论如何,这是我的代码

T1 <- d1rm.null %>% 
  select(1:2) %>% 
  gather(Threat, Value, Threat1) %>% 
  rename(Cat = Threat1_Cat)

T2 <- d1rm.null %>% 
  select(3:4) %>% 
  gather(Threat, Value, Threat2) %>% 
  rename(Cat = Threat2_Cat)

T3 <- d1rm.null %>% 
  select(5:6) %>% 
  gather(Threat, Value, Threat3) %>% 
  rename(Cat = Threat3_Cat)

Total <- bind_rows(T1, T2, T3)
Total
# A tibble: 15 × 3
# Cat  Threat Value
# <dbl>   <chr> <dbl>
#   1      1 Threat1   1.2
# 2      7 Threat1   7.2
# 3      4 Threat1   4.3
# 4      5 Threat1   5.1
# 5      4 Threat1   4.2
# 6      5 Threat2   5.2
# 7      4 Threat2   4.1
# 8      7 Threat2   7.2
# 9      7 Threat2   7.1
# 10     2 Threat2   2.1
# 11     7 Threat3   7.2
# 12     2 Threat3   2.1
# 13     1 Threat3   1.1
# 14     1 Threat3   1.1
# 15     3 Threat3   3.0

然后是图表,如果我明白你想要什么。

ggplot(data = Total, aes(x = Cat, fill = Threat)) +
  geom_bar(position = "dodge")

Bar plot