本文介绍了如何在热图中生成不同的颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的数据
df<- structure(list(name = structure(c(2L, 12L, 1L, 16L, 14L, 10L,
9L, 5L, 15L, 4L, 8L, 13L, 7L, 6L, 3L, 11L), .Label = c("All",
"Bab", "boro", "bra", "charli", "delta", "few", "hora", "Howe",
"ist", "kind", "Kiss", "myr", "No", "TT", "where"), class = "factor"),
value = c(1.251, -1.018, -1.074, -1.137, 1.018, 1.293, 1.022,
-1.008, 1.022, 1.252, -1.005, 1.694, -1.068, 1.396, 1.646,
1.016)), .Names = c("name", "value"), class = "data.frame", row.names = c(NA,
-16L))
我想要有非常清晰的色调分隔。如果我想制作特定颜色的热图,我喜欢这样
ggplot(df, aes(x = 1,y = name, fill = value)) +
geom_tile() +
ylab("") +
scale_fill_gradient(low='red', high='blue')
它使它由红变蓝。我想要的是将前7行例如从红色变为蓝色,将其余从粉色变为黑色。
这可能吗?
推荐答案
ggmap通常鼓励每个数据系列使用一个刻度,但如果您确实希望为不同的值子集使用不同的刻度,这里有一种方法可以实现。
您说要为前7行使用不同的刻度。同样,将表示与数据的位置捆绑在一起并不是一种很好的做法,但让我们假设我们创建了一个"组"列。此列必须是数字的,因为我们将使用它来"欺骗"热图中的值。因此,一组分隔您的分布的组值将是很好的:
library(dplyr)
df <- arrange(df, name) %>%
mutate(group = c(rep(-3, 7), rep(3, 9)))
然后fill
美学变为value - group
,我们使用scale_fill_gradientn
指定颜色:
ggplot(df, aes(x = 1,y = name, fill = value - group)) +
geom_tile() +
ylab("") +
scale_fill_gradientn(colours = c('black', 'pink', 'red', 'blue'))
这篇关于如何在热图中生成不同的颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!