ggplot手动图例scale_fill_manual用于单独的色彩因素

问题描述 投票:0回答:1

我已经搜索了多个线程,但尚未找到解决方案。

我有一个包含40多个变量的geom_bar图。我创建了一个单独的df,以根据特定类别标记每个变量,并为该类别分配颜色。在40多个变量中,图中包含4种颜色/类别。

我希望该图例显示类别的颜色,而不是各个变量的颜色。我知道我可以通过在原始df中使用颜色/类别来完成此操作,但是,我希望能够在许多不同的项目中使用颜色/类别参考df,而不必总是在绘图df中添加列以进行标记类别和颜色。

这里是一个示例,其中df是绘制的数据,而df_cols类似于我的类别/颜色df。理想情况下,图例应具有“ A =红色,B =蓝色,C =橙色”而不是变量名。

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)

r ggplot2 colors legend manual
1个回答
0
投票
library(ggplot2)

variable = c("abc", "def", "ghi", "jkl","mno", "pqr", "stu")
tag = c("A", "B", "C", "A","B", "A", "B")

# Plotting df
df = data.frame(variable, value=c(1:7), tag)

ggplot(df)+
  geom_bar(aes(x=variable, y=value, fill=tag),stat = "identity")+
  scale_fill_manual(values = c("A" = "red", "B" = "blue", "C" = "orange"),
                    labels = c("red", "blue", "orange"))

“”

reprex package(v0.3.0)在2020-05-20创建

© www.soinside.com 2019 - 2024. All rights reserved.