さまざまな種の平均を示す棒グラフのグリッドを作成しようとしています。iris
この質問にはデータセットを使用しています。
データをまとめて、長い形に溶かして、使ってみましたfacet_wrap
。
iris %>%
group_by(Species) %>%
summarise(M.Sepal.Length=mean(Sepal.Length),
M.Sepal.Width=mean(Sepal.Width),
M.Petal.Length= mean(Petal.Length),
M.Petal.Width=mean(Petal.Width)) %>%
gather(key = Part, value = Value, M.Sepal.Length:M.Petal.Width) %>%
ggplot(., aes(Part, Value, group = Species, fill=Species)) +
geom_col(position = "dodge") +
facet_grid(cols=vars(Part)) +
facet_grid(cols = vars(Part))
ただし、取得しているグラフには、各ファセットグリッドにまたがるx.axisラベルがあります。さらに、クラスター化されたグラフは、各ファセットボックス内の中央に配置されません。代わりに、それぞれのx軸ラベルの場所に表示されます。x軸のラベルを削除し、グラフを中央に配置し、各ファセット内でグラフをスケーリングしたいと思います。
これは、期待される出力でマークアップされた結果のグラフの画像です。
おそらくこれはあなたが探しているものですか?
主な変更点は次のとおりです。
Part
マップされた変数として削除しますx
。これにより、データはすべてのファセットの同じ場所にプロットされます。facet_wrap
使用できるようにするscales = "free_y"
labs
xタイトルを手動で追加するために使用しますtheme
して、x軸の目盛りと目盛りラベルを削除します。library(ggplot2)
library(dplyr) # Version >= 1.0.0
iris %>%
group_by(Species) %>%
summarise(across(1:4, mean, .names = "M.{col}")) %>%
gather(key = Part, value = Value, M.Sepal.Length:M.Petal.Width) %>%
ggplot(., aes(x = 1, y = Value, group = Species, fill=Species)) +
geom_col(position = "dodge") +
facet_wrap(.~Part, nrow = 1, scales = "free_y") +
labs(x = "Part") +
theme(axis.ticks.x = element_blank(),
axis.text.x = element_blank())
また、手動呼び出しをsummarise
新しいacross
機能に切り替える自由もありました。
エラーバーを計算する方法は次のとおりです。
library(tidyr)
iris %>%
group_by(Species) %>%
summarise(across(1:4, list(M = mean, SE = ~ sd(.)/sqrt(length(.))),
.names = "{fn}_{col}")) %>%
pivot_longer(-Species, names_to = c(".value","Part"),
names_pattern = "([SEM]+)_(.+)") %>%
ggplot(., aes(x = 1, y = M, group = Species, fill=Species)) +
geom_col(position = "dodge") +
geom_errorbar(aes(ymin = M - SE, ymax = M + SE), width = 0.5,
position = position_dodge(0.9)) +
facet_wrap(.~Part, nrow = 1, scales = "free_y") +
labs(x = "Part", y = "Value") +
theme(axis.ticks.x = element_blank(),
axis.text.x = element_blank())
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加