gpt4 book ai didi

r - 颜色按行缩放时的热图

转载 作者:行者123 更新时间:2023-12-05 00:12:51 24 4
gpt4 key购买 nike

你好stackoverflowers!

正如标题所示,我想制作一个热图,但颜色缩放应该跨越每一行并且彼此独立。

下面的例子将表明我想要什么:

library(tidyverse)
library(data.table)
data_heat <- expand.grid(y = letters[seq( from = 1, to = 6 )],x = LETTERS[ seq( from = 1, to = 10 )]) %>% as.data.table()
data_heat %>% setkey(y)
data_heat[, fill_value := seq(from = 1,to = nrow(data_heat))]


data_heat%>% ggplot(aes(x = x, y = y)) +
geom_tile(aes(fill = fill_value), colour = "black") + scale_fill_gradient(low = "green",
high = "red") +
theme(axis.text.x = element_text(angle = 30, hjust = 1)) + geom_text(aes(label = fill_value))

这将产生:

basic heat map

而我想要的是图表的右侧是红色的,因为每行都有最大值。

最佳答案

解决方案:

使用函数 scale() 缩放值每组 ( data_heat$y )。

代码:

library(ggplot2)
library(data.table)
data_heat[, fillScaled := scale(fill_value), y]
ggplot(data_heat, aes(x, y)) +
geom_tile(aes(fill = fillScaled), colour = "black") +
scale_fill_gradient(low = "green", high = "red") +
geom_text(aes(label = fill_value)) +
theme(axis.text.x = element_text(angle = 30, hjust = 1))

结果:

enter image description here

数据 ( data_heat ):
structure(list(y = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L), .Label = c("a", "b", "c", "d", "e", "f"), class = "factor"),
x = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L,
5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L,
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), .Label = c("A", "B", "C",
"D", "E", "F", "G", "H", "I", "J"), class = "factor"), fill_value = 1:60), .Names = c("y",
"x", "fill_value"), out.attrs = structure(list(dim = structure(c(6L,
10L), .Names = c("y", "x")), dimnames = structure(list(y = c("y=a",
"y=b", "y=c", "y=d", "y=e", "y=f"), x = c("x=A", "x=B", "x=C",
"x=D", "x=E", "x=F", "x=G", "x=H", "x=I", "x=J")), .Names = c("y",
"x"))), .Names = c("dim", "dimnames")), class = c("data.table",
"data.frame"), row.names = c(NA, -60L))

关于r - 颜色按行缩放时的热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49673942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com