我需要创建一个单行热图,偶尔会从仅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
答案 0 :(得分:4)
我认为,如果您在ggplot
调用中使用NA
明确告诉na.value
如何处理scale_fill_manual
值。这样可以解决您的问题,或者至少可以引导您朝正确的方向前进:
ggplot(dat, aes(x=id,y="identity")) +
geom_tile(aes(fill = p2), colour = "white") +
scale_fill_manual(values = "white",
na.value = "black")
您可以更改values
参数以更好地处理您喜欢的颜色