我制作了以下圖(我使用“npk”資料集作為虛擬資料,因為我無法共享原始資料 - 但圖的系統性保持不變):
library(ggplot2)
library(scales)
ggplot(npk,aes(x=block,group=N))
geom_bar(aes(y = ..prop..))
facet_grid(~ N)
xlab("blocks")
scale_y_continuous(labels = percent)
theme(axis.text.x=element_blank(),axis.ticks.x=element_blank(),
legend.title=element_blank())
塊:塊號 1-6
N:二進制變數 1/0

現在我想根據塊的數量用不同的顏色為每個條(=塊)著色(我知道,這在這里沒有多大意義,因為每個塊(對于變數 N)的比例是相同的,但是對于我的原始資料,我有不同的比例,所以這是有道理的......)。除了對情節進行分面之外,我還必須使用“group=N”,因為我需要每個塊的比例。
我怎樣才能做到這一點?我嘗試了許多不同的方法來宣告這些塊的顏色,但不幸的是我無法為每個塊著色,只能將所有塊以灰色或其他特定顏色組合在一起......
謝謝你的幫助!非常感謝!瑪蒂娜
uj5u.com熱心網友回復:
這似乎確實是一件棘手的事情!從組建一個答案在這里,并在這里你可以稍微調整,使用它來計算y中的方法去做,為了考慮到面的分組沒有覆寫fill的,包括group:
library(tidyverse)
library(scales)
ggplot(npk, aes(x = block))
geom_bar(aes(
y = ..count.. / tapply(..count.., ..PANEL.., sum)[..PANEL..],
fill = block
))
facet_grid( ~ N)
xlab("blocks")
ylab("Percentage")
scale_y_continuous(labels = percent)
theme(
axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
legend.title = element_blank()
)

由reprex 包( v2.0.0 )于 2021 年 10 月 25 日創建
uj5u.com熱心網友回復:
可以通過預先計算您的比例并使用 geom_col 而不是 geom_bar 來解決問題嗎?
library(tidyverse)
npk %>%
slice_sample(n = 15) %>% ## so that percentages vary
group_by(block, N) %>%
count(name = "count") %>%
group_by(block) %>%
mutate(prop = count/sum(count)) %>%
ungroup() %>%
ggplot(aes(x=block,y=prop))
geom_col(aes(fill = block))
facet_grid(~ N)

由reprex 包(v2.0.1)于 2021 年 10 月 25 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/338257.html
