実現したいこと
・二つ目の変数でグループ化した棒グラフを色や描画を用いてより見やすいデザインにしたい。
前提
Rで、下記のデータフレームを用いて、グループ化した棒グラフを作成したい。
・x軸をSize、y軸をAveとし、se(標準誤差)で各棒にエラーバーを付与した棒グラフ
・Treatmentを二つ目の変数としてグループ化し、8つの凡例がある状態
・棒グラフの色はAを青、aを赤に指定してAaを区別し、かつ、BbCcで4つの描画パターン(斜線や横線、縦線、塗りつぶしなど)をそれぞれ指定したい
・棒グラフ内部の背景色は白とし、枠線と描画(斜線、横線、縦線、塗りつぶしなど)のみに赤または青色を反映させたい。
・凡例はTreatmentの8パターンのみを表示したい
・棒グラフのグループ内の並び順は左から順にABC,ABc,AbC,Abc,aBC,aBc,abC,abcにしたい。
Treatment Aa BbCc size ave se
ABC A BC 2000 10 1
ABc A Bc 2000 12 2
AbC A bC 2000 14 2
Abc A bc 2000 13 1
aBC a BC 2000 4 1
aBc a Bc 2000 6 2
abC a bC 2000 7 1
abc a bc 2000 6 1
ABC A BC 1000 8 2
ABc A Bc 1000 7 2
AbC A bC 1000 6 2
Abc A bc 1000 8 1
aBC a BC 1000 5 1
aBc a Bc 1000 7 2
abC a bC 1000 6 2
abc a bc 1000 8 2
ABC A BC 500 4 1
ABc A Bc 500 3 1
AbC A bC 500 4 2
Abc A bc 500 5 2
aBC a BC 500 10 1
aBc a Bc 500 10 1
abC a bC 500 11 2
abc a bc 500 9 2
ABC A BC 100 2 1
ABc A Bc 100 4 1
AbC A bC 100 3 2
Abc A bc 100 2 2
aBC a BC 100 4 2
aBc a Bc 100 4 1
abC a bC 100 3 1
abc a bc 100 4 2
発生している問題・エラーメッセージ
・グラフの枠線が表示されない
・エラーバーの位置が大きくずれる
・グラフ内の描画デザインが変わらない
以下の画像のようにグラフが生成されますが、ここから先どのようにコマンドを改善すればよいか見当がつかず手詰まり状態です。
該当のソースコード
R
1 2Test_Data <- data.frame( 3 Treatment = c("ABC", "ABc", "AbC", "Abc", "aBC", "aBc", "abC", "abc", 4 "ABC", "ABc", "AbC", "Abc", "aBC", "aBc", "abC", "abc", 5 "ABC", "ABc", "AbC", "Abc", "aBC", "aBc", "abC", "abc", 6 "ABC", "ABc", "AbC", "Abc", "aBC", "aBc", "abC", "abc"), 7 Aa = c(rep("A", 4), rep("a", 4), 8 rep("A", 4), rep("a", 4), 9 rep("A", 4), rep("a", 4), 10 rep("A", 4), rep("a", 4)), 11 BbCc = c("BC", "Bc", "bC", "bc","BC", "Bc", "bC", "bc", 12 "BC", "Bc", "bC", "bc","BC", "Bc", "bC", "bc", 13 "BC", "Bc", "bC", "bc","BC", "Bc", "bC", "bc", 14 "BC", "Bc", "bC", "bc","BC", "Bc", "bC", "bc"), 15 size = c(rep(2000, 8), rep(1000, 8), rep(500, 8), rep(100, 8)), 16 ave = c(10, 12, 14, 13, 4, 6, 7, 6, 17 8, 7, 6, 8, 5, 7, 6, 8, 18 4, 3, 4, 5, 10, 10, 11, 9, 19 2, 4, 3, 2, 4, 4, 3, 4), 20 se = c(1, 2, 2, 1, 1, 2, 1, 1, 21 2, 2, 2, 1, 1, 2, 2, 2, 22 1, 1, 2, 2, 1, 1, 2, 2, 23 1, 1, 2, 2, 2, 1, 1, 2) 24) 25 26Test_Data$Treatment = as.factor(Test_Data$Treatment) 27Test_Data$Aa = as.factor(Test_Data$Aa) 28Test_Data$BbCc = as.factor(Test_Data$BbCc) 29Test_Data$size = as.factor(Test_Data$size) 30 31g_Test <- ggplot(Test_Data, aes(x = size, y = ave, fill = Treatment))+ 32 geom_bar_pattern(stat = "identity", position = "dodge", 33 aes(pattern = BbCc, pattern_fill = Aa, pattern_colour = Aa))+ 34 scale_pattern_fill_manual(values = c( A = "skyblue", a = "red"))+ 35 scale_pattern_color_manual(values = c(A = "skyblue", a = "red"))+ 36 scale_fill_manual(values = c("ABC" = "skyblue", "ABc" = "NA", "AbC" = "NA", "Abc" = "NA", 37 "aBC" = "red", "aBc" = "NA", "abC" = "NA", "abc" = "NA"))+ 38 scale_color_manual(values = c("ABC" = "skyblue", "ABc" = "skyblue", "AbC" = "skyblue", "Abc" = "skyblue", 39 "aBC" = "red", "aBc" = "red", "abC" = "red", "abc" = "red"))+ 40 geom_errorbar(aes(ymax = ave + se, ymin = ave - se), position = "dodge")+ 41 labs(x = "size", y = "ave")+ 42 theme_classic()+ 43 theme(text = element_text(size=16)) 44 45g_Test 46
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/01/16 06:46