[英]ggplot manual legend scale_fill_manual for separate color factors
我已經搜索了幾個線程,但還沒有找到解決方案。
我有一個帶有 40 多個變量的 geom_bar plot。 我創建了一個單獨的 df 來根據特定類別標記每個變量,並為該類別分配顏色。 在 40 多個變量中,plot 中包含 4 種顏色/類別。
我希望 plot 的圖例顯示類別的顏色,而不是單個變量。 我知道我可以通過在原始 df 中使用顏色/類別來實現這一點,但是,我希望能夠在許多不同的項目中使用顏色/類別參考 df,並且避免總是必須在繪圖 dfs 中添加列來標記類別和顏色。
這是一個示例,其中 df 是繪制的數據,df_cols 類似於我的類別/顏色 df。 理想情況下,圖例將具有“A=red, B=Blue, C=orange”而不是變量名。
variable = c("abc", "def", "ghi", "jkl","mno", "pqr", "stu")
tag = c("A", "B", "C", "A","B", "A", "B")
colours = as.character(c("red", "blue", "orange", "red", "blue", "red", "blue"))
# Create colour reference df
df_cols = data.frame(variable, tag, colors = as.character(colours))
cols = df_cols$colors
cols = as.character(cols)
names(cols) = as.character(names(cols))
# Plotting df
df = data.frame(variable, value=c(1:7))
ggplot(df)+
geom_bar(aes(x=variable, y=value, fill=variable),stat = "identity")+
scale_fill_manual(values = cols)
我想這可能就是你所追求的。 我已經簡化了您的代碼,以利用“標簽”作為離散變量來控制填充顏色。
library(ggplot2)
# Plotting df
df <- data.frame(variable = c("abc", "def", "ghi", "jkl","mno", "pqr", "stu"),
tag = c("A", "B", "C", "A","B", "A", "B"),
value = c(1:7))
當您在 y 軸上繪制值時,您可以將 geom 簡化為專為這種情況設計的geom_col
並避免調用stat
ggplot(df)+
geom_col(aes(x = variable, y = value, fill = tag)) +
scale_fill_discrete(breaks = c("A", "B", "C"),
values = c("red", "blue", "orange"),
labels = c("red", "blue", "orange"),
name = "Colour")
由reprex package (v0.3.0) 於 2020 年 5 月 20 日創建
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.