scale_fill_manual 仅适用于图例而不适用于条形图
Posted
技术标签:
【中文标题】scale_fill_manual 仅适用于图例而不适用于条形图【英文标题】:scale_fill_manual is only applying to the legend and not bars 【发布时间】:2022-01-03 04:50:03 【问题描述】:我有一个如下所示的数据框 (df):
gene | p_value | p_value_dif | p-value category |
---|---|---|---|
a | 0.06 | 0.01 | non-sig |
c | 0.07 | 0.02 | non-sig |
d | 0.008 | - 0.03 | sig |
e | 0.009 | - 0.04 | sig |
我使用以下代码创建了一个发散条形图:
ggplot(df, aes(x=gene,
y=p_value_dif ,
label=p_value_dif )) +
geom_bar(stat='identity',
aes(fill= (as.factor(p_value_dif)),
width=0.9) +
scale_fill_manual("legend",
values = c("Significant" = "black", "Insignificant" = "orange"))+
coord_flip()
问题是只有我的图例将颜色变为黑色和橙色。条形保持灰色。我该怎么做才能使图例中的颜色与条形图的颜色相匹配?
注意:如果“fill”未设置为“as.factor”,我会得到以下信息: 错误:提供给离散刻度的连续值
【问题讨论】:
【参考方案1】:问题是您的列p_value_dif
不包含任何值"Significant"
或"Insignificant"
。只有这些值将被填充为“黑色”或“橙色”。所有其他值将使用比例的默认na.value
填充。相反,您可以将您的列 p-value.category
映射到填充并设置填充颜色和标签,如下所示:
library(ggplot2)
ggplot(df, aes(x=gene,
y=p_value_dif ,
label=p_value_dif )) +
geom_bar(stat='identity',
aes(fill= `p-value.category`),
width=0.9) +
scale_fill_manual("legend",
values = c("sig" = "black", "non-sig" = "orange"),
labels = c("sig" = "Significant", "non-sig" = "Insignificant"))+
coord_flip()
数据
df <- data.frame(
stringsAsFactors = FALSE,
check.names = FALSE,
gene = c("a", "c", "d", "e"),
p_value = c(0.06, 0.07, 0.008, 0.009),
p_value_dif = c("0.01", "0.02", "- 0.03", "- 0.04"),
`p-value.category` = c("non-sig", "non-sig", "sig", "sig")
)
【讨论】:
以上是关于scale_fill_manual 仅适用于图例而不适用于条形图的主要内容,如果未能解决你的问题,请参考以下文章