2017-03-08 157 views
0

我正在尝试使用ggplot2在一个图形中创建3个条形图。 3个barplots共享相同的X轴值和那我要怎么组它,而不是把整个地块并排这样的:r - 一起创建3个条形图

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层的威胁存在。

谢谢!

+0

也许试图重塑你的数据,以便款待是一个变量,你可以在你的情节映射。你的分类是因素还是数值? – FlorianGD

回答

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

+0

谢谢。我可以使用'library(reshape2)'和函数'melt()'来做另一种方式。我实际上曾经尝试过,但我无法把头围绕在它上面,所以感觉很好。 – Miles