本文介绍了如何在热图中生成不同的颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的数据

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'))

这给出了这个图:

这篇关于如何在热图中生成不同的颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 05:08