簡體   English   中英

ggplot 手動圖例 scale_fill_manual 用於單獨的顏色因子

[英]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)

這是我正在制作的實際 plot 的副本: 在此處輸入圖像描述

我想這可能就是你所追求的。 我已經簡化了您的代碼,以利用“標簽”作為離散變量來控制填充顏色。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM