【问题标题】:r - Creating 3 barplots togetherr - 一起创建 3 个条形图
【发布时间】:2017-03-08 13:53:57
【问题描述】:

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

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

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

哪个有输出:

与此类似,我希望情节看起来像这样,但存在所有 3 个威胁。

谢谢!

【问题讨论】:

  • 也许可以尝试重塑您的数据,因为 Treat 是您可以在绘图中映射的变量。您的类别是因素还是数值?

标签: r ggplot2 bar-chart


【解决方案1】:

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

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

【讨论】:

  • 谢谢。我可以使用library(reshape2) 和函数melt() 以另一种方式做到这一点。我实际上曾经尝试过一次,但我无法完全理解它,所以继续前进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2011-01-02
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
  • 2017-10-13
相关资源
最近更新 更多