如何在热图中制作不同的颜色

时间:2016-08-12 15:12:22

标签: r plot ggplot2 heatmap

这是我的数据

<div id="jstree_menu"></div>
<script>
/* Load menu tree data */
$('#jstree_menu').jstree(
    {
        'core' : {
            'data' : {
                'url' : '/jstree-menu-data/index.html',
            }
        },
        'plugins' : [ "types" ],
        'types' : {
            'default' : {
                'icon' : 'fa fa-angle-right fa-fw'
            },
            'f-open' : {
                'icon' : 'fa fa-folder-open fa-fw'
            },
            'f-closed' : {
                'icon' : 'fa fa-folder fa-fw'
            }
        }
    }
);

/* Toggle between folder open and folder closed */
$("#jstree_menu").on('open_node.jstree', function (event, data) {
    data.instance.set_type(data.node,'f-open');
});
$("#jstree_menu").on('close_node.jstree', function (event, data) {
    data.instance.set_type(data.node,'f-closed');
});
</script>

我想要非常清晰的阴影分离。 如果我想制作具有特定颜色的热图,我喜欢这个

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

它变成红色到蓝色。我想要的是将前7行设为红色为蓝色,其余为粉红色为黑色。

这可能吗?

1 个答案:

答案 0 :(得分:1)

ggplot通常鼓励每个数据系列使用一个比例,但如果你真的想要为不同的值子集设置不同的比例,那么这就是一种方法。

你说你想要前7行的不同比例。再次,将演示文稿与数据的位置联系起来并不是一种很好的做法,但我们假设我们创建了一个&#34;组&#34;柱。这个专栏是数字的,这一点非常重要,因为我们会将它用于&#34;作弊&#34;热图中的值。因此,一组分离您的分布的组值将很好:

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

这给你这个情节: enter image description here