我正在尝试在ggplot中生成热图。我希望每个组都有不同的颜色渐变,但不知道如何做到这一点。我目前的代码如下:
const result = Object.values(data.reduce((r, o) => (r[o.id]
? (r[o.id].total += o.total)
: (r[o.id] = {...o}), r), {}));
如何更改每个组的颜色主题,例如红色表示“圆形”,蓝色表示“错误”,绿色表示“切换”等...
非常感谢!
答案 0 :(得分:4)
您可以通过在数据中创建自己的重新调整后的值,然后轻微“黑客攻击”alpha
美学与fill
美学相结合来实现这一目标:
library(tidyverse)
data %>%
group_by(group) %>%
mutate(rescale = scales::rescale(pct)) %>%
ggplot(., aes(x = factor(id), y = group)) +
geom_tile(aes(alpha = rescale, fill = group), color = "white") +
scale_alpha(range = c(0.1, 1))
首先,我们创建一个名为rescale
的新列rescales
pct
从0
到1
,然后强制scale_alpha(range = c(0, 1))
[注意]在这种情况下,我使用了c(0.1, 1)
,这样你仍然可以“看到”零点。
最后,您可能希望删除指南:
data %>%
group_by(group) %>%
mutate(rescale = scales::rescale(pct)) %>%
ggplot(., aes(x = factor(id), y = group)) +
geom_tile(aes(alpha = rescale, fill = group), color = "white") +
scale_alpha(range = c(0.1, 1)) +
theme(legend.position = "none")
N.B。使用aes(x = factor(id)...
,您可以手动设置x-axis
,因为在这种情况下,您似乎希望将其视为一个因素,而非数字刻度。
最后,如果您真的想要获得幻想,可以将axis.text.y
颜色双重编码为factor
(即data$group
)变量的颜色:
data %>%
group_by(group) %>%
mutate(rescale = scales::rescale(pct)) %>%
ggplot(., aes(x = factor(id), y = group)) +
geom_tile(aes(alpha = rescale, fill = group), color = "white") +
scale_alpha(range = c(0.1, 1)) +
theme(legend.position = "none",
axis.text.y = element_text(color = scales::hue_pal()(length(levels(data$group)))),
axis.ticks = element_blank()) +
labs(x = "", y = "")