2017-03-08 159 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