次のデータフレームとggplotを使用しています...
sample ="BC04"
df<- data.frame(Name=c("Pseudomonas veronii", "Pseudomonas stutzeri", "Janthinobacterium lividum", "Pseudomonas viridiflava"),
Abundance=c(7.17, 4.72, 3.44, 3.33))
ggplot(data=df, aes(x=sample, y=Abundance, fill=Name)) +
geom_bar(stat="identity")
...次のグラフを作成します
「geom_bar(stat = "identity")」は「identity」に設定されていますが、データフレーム内の順序は無視されます。存在比に基づいてスタック順序を取得したい(昇順で一番上のパーセンテージが最も高い)
以前は、に渡された文字列ggplot
はで評価されますaes_string
(現在は非推奨です)。ここで、文字列をsym
bolに変換し、評価します(!!
)
library(ggplot2)
ggplot(data=df, aes(x= !! rlang::sym(sample), y=Abundance, fill=Name)) +
geom_bar(stat="identity")
または別のオプションは .data
ggplot(data=df, aes(x= .data[[sample]]), y=Abundance, fill=Name)) +
geom_bar(stat="identity")
プロットを確認すると、OPが 'sampleという名前の列を作成した可能性があります。その場合、「Abundance」の終了順序にreorder
基づいた「Name desc
」
df$sample <- "BC04"
ggplot(data = df, aes(x = sample, y = Abundance,
fill = reorder(Name, desc(Abundance)))) +
geom_bar(stat = 'identity')+
guides(fill = guide_legend(title = "Name"))
-出力
または別のオプションは、「name」を変換することであるfactor
とlevels
として挙げるunique
「名前」の要素(データは既に「豊富」の降順に配置されているように)
library(dplyr)
df %>%
mutate(Name = factor(Name, levels = unique(Name))) %>%
ggplot(aes(x = sample, y = Abundance, fill = Name)) +
geom_bar(stat = 'identity')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加