質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.34%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

Q&A

1回答

171閲覧

8つの凡例を含む棒グラフを作成し、デザイン性を向上させたい。

namekomeko

総合スコア1

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

1グッド

0クリップ

投稿2025/01/08 04:15

編集2025/01/08 09:20

実現したいこと

・二つ目の変数でグループ化した棒グラフを色や描画を用いてより見やすいデザインにしたい。

前提

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
melian👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

・グラフの枠線が表示されない
・エラーバーの位置が大きくずれる
・グラフ内の描画デザインが変わらない

「エラーバーの位置が大きくずれる」問題ですが、これはデータ(Treatment)の順序が並び替えられているためです。なので、順序を元のままに保つために geom_bar_pattern()group = interaction(BbCc, Treatment) を追加します。

r

1g_Test <- ggplot(Test_Data, aes(x = size, y = ave, fill = Treatment))+ 2 geom_bar_pattern(stat = "identity", position = "dodge", color="black", linewidth=.2, 3 aes(group = interaction(BbCc, Treatment), pattern = BbCc, pattern_fill = Aa, pattern_colour = Aa))+ 4 scale_pattern_fill_manual(values = c( A = "skyblue", a = "red"))+ 5 scale_pattern_color_manual(values = c(A = "skyblue", a = "red"))+ 6 scale_fill_manual(values = c("ABC" = "skyblue", "ABc" = "NA", "AbC" = "NA", "Abc" = "NA", 7 "aBC" = "red", "aBc" = "NA", "abC" = "NA", "abc" = "NA"))+ 8 scale_color_manual(values = c("ABC" = "skyblue", "ABc" = "skyblue", "AbC" = "skyblue", "Abc" = "skyblue", 9 "aBC" = "red", "aBc" = "red", "abC" = "red", "abc" = "red"))+ 10 geom_errorbar(aes(ymax = ave + se, ymin = ave - se), position = "dodge")+ 11 labs(x = "size", y = "ave")+ 12 theme_classic()+ 13 theme(text = element_text(size=16))

イメージ説明

投稿2025/01/08 08:26

編集2025/01/08 14:13
melian

総合スコア20721

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

namekomeko

2025/01/16 06:46

ご回答いただきありがとうございます! エラーバーに関しては正しく表示されるようになりました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.34%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問