【问题标题】:Need to create ggplot heatmap with NA-only data, but get "Error: Must request at least one colour from a hue palette."需要使用仅限 NA 的数据创建 ggplot 热图,但得到“错误:必须从色调调色板中请求至少一种颜色。”
【发布时间】:2020-01-02 19:50:03
【问题描述】:

我需要创建单行热图,偶尔会从仅 NA 列派生,但无论如何都必须显示。在下面的示例中,从 p2 列生成热图将呈现“错误:必须从色调调色板中请求至少一种颜色。”。有什么方法可以强制 ggplot 显示“空”热图?

library(ggplot2)
id <- letters[1:5]
p1 <- factor(c(1,NA,2,NA,3))
p2 <- factor(c(NA,NA,NA,NA,NA))
dat <- data.frame(id=id, p1=p1, p2=p2)

ggplot(dat, aes(x=id,y="identity")) + geom_tile(aes(fill = p1), colour = "white") #works fine

ggplot(dat, aes(x=id,y="identity")) + geom_tile(aes(fill = p2), colour = "white") #renders error

【问题讨论】:

  • 如果将scale_fill_manual(values = "white") 添加到不起作用的那个怎么办?不确定在这种情况下您希望它是什么样子。
  • @MrFlick 这确实解决了问题:ggplot(dat, aes(x=id,y="identity")) + geom_tile(aes(fill = p2)) + scale_fill_manual(values = "red ") 感谢您的帮助!
  • 如果问题的回答令您满意,请考虑通过勾选它旁边的复选标记来接受答案 - 这样它就不会再标记为“未回答”。谢谢

标签: r ggplot2 heatmap


【解决方案1】:

我想如果你明确告诉ggplot 如何在scale_fill_manual 调用中使用na.value 处理NA 值。这应该可以解决您的问题,或者至少引导您朝着正确的方向前进:

ggplot(dat, aes(x=id,y="identity")) + 
  geom_tile(aes(fill = p2), colour = "white") + 
  scale_fill_manual(values = "white", 
                    na.value = "black") 

您可以更改values 参数以更好地处理您喜欢的颜色

【讨论】:

  • 是的,你是对的,戴夫。 scale_fill_maual 成功了。谢谢帮忙!
猜你喜欢
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
相关资源
最近更新 更多