ggplot,geom_tile:使用不规则、用户定义的离散间隔绘制连续变量的图表

4

我正在使用ggplot和geom_tile绘制连续变量。默认情况下,它会使用连续的颜色条进行绘制。类似于这样的:

data <- cbind(ID = 1:100, a = runif(100, 0, 1), b = runif(100, 0, 1), c = runif(100, 0, 1))
data <- as.data.frame(data)
data <- melt(data, id.vars = "ID")
colnames(data) <- c("ID", "Parameter", "Value")

p <- ggplot(data, aes(y = ID, x = Parameter)) + geom_tile(aes(fill = Value))
print(p)

这将生成以下绘图。

Resulting plot

现在,我实际上希望颜色对应于离散的、不规则的间隔。例如,[0, 0.2) 是红色,[0.2, 0.5) 是蓝色,而 [0.5, 1.0] 是紫色。我认为这很简单,但我似乎无法弄清楚如何实现这一点。有什么建议吗?

这个问题有帮助吗?https://dev59.com/EmMl5IYBdhLWcg3wVlxf - David Robinson
4
这似乎是使用 cutHmisc::cut2 函数来完成的工作,代码可能看起来像 aes(fill = cut(Value, breaks = c(0, .2, .5, 1), include.lowest = TRUE)),然后在 scale_fill_manual 中设置颜色/图例名称。 - aosmith
1个回答

2

感谢 @aosmith 提出的解决方案。以下是代码,如果对某人有用,可以参考一下。

p <- ggplot(data, aes(y = ID, x = Parameter)) 
p <- p + geom_tile(aes(fill = cut(Value, breaks = c(0, .2, .5, 1), include.lowest = TRUE)))
p <- p + scale_fill_manual(values = c("red", "blue", "green"),
                           labels = c("[0, 0.2)", "[0.2, 0.5)", "[0.5, 1.0]"),
                           name = "Stuff")
print(p)

这将生成以下图表。

生成的图表


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接