R语言ggplot绘制火山图仅显示黑色圆点 自定义分类颜色不生效
你写的代码存在两个问题导致颜色无法正常显示:
geom_point()默认控制点的颜色的参数是color而非fill。fill参数仅对具备填充属性的元素生效(比如条形图、箱线图、指定shape为21-25的带边框点),普通实心散点不会响应fill映射,所以所有点都显示为默认黑色。- 如果你直接将存储了十六进制色值的
log2fc_color列放入aes()映射中,ggplot会将这列内容识别为普通分类变量,自动分配默认调色盘,不会直接调用你存储的色值。
方案1:直接使用预定义的log2fc_color列着色
如果不需要额外调整配色,直接调用已有的色值即可:
ggplot(df.t1, aes(x = logFC, y = pval, color = log2fc_color)) + geom_point() + # 声明直接使用映射列中的色值,无需ggplot自动分配颜色 scale_color_identity()
如果需要显示对应DE分类的图例,可以补充配置:
# 提取DE分类和颜色的对应关系 color_label <- unique(df.t1[, c("DE", "log2fc_color")]) ggplot(df.t1, aes(x = logFC, y = pval, color = log2fc_color)) + geom_point() + scale_color_identity(breaks = color_label$log2fc_color, labels = color_label$DE, guide = "legend")
方案2:通过DE列映射着色,手动指定配色
如果你想要通过DE分类来控制颜色,手动匹配你需要的色值即可:
# 定义DE分类对应的颜色 de_palette <- c( "Upregulated" = "#00519e", "Top10" = "#d51030", "Downregulated" = "#00519e" ) ggplot(df.t1, aes(x = logFC, y = pval, color = DE)) + geom_point() + # 应用自定义配色,同时指定NA值的颜色 scale_color_manual(values = de_palette, na.value = "#a7a7a7")
内容的提问来源于stack exchange,提问作者biobudhan
相关产品推荐
相关产品推荐

