řGGPLOT2热图,力的离散比例与自定义范围,加网格映射

问题描述:

I中热图创建řGGPLOT2热图,力的离散比例与自定义范围,加网格映射

heatmap

为此,我使用的这样的代码:

library(ggplot2) 
library(reshape2) 

winners_min_expd0 <- matrix(c(NA, 2, 2, 3, NA, 3, 2, 2, NA), nrow=3, ncol=3, byrow = T) 
colnames(winners_min_expd0) <- c("homophily","heterophily","preferential") 
rownames(winners_min_expd0) <- c("homophily","heterophily","preferential") 
melted_min_expd0 <- melt(winners_min_expd0) 
colnames(melted_min_expd0) <- c("winning", "looses", "times") 
p_min_expd0 <- ggplot(melted_min_expd0, aes(looses, winning)) + 
    geom_tile(aes(fill = times), colour = "white") + 
    scale_fill_gradient(low = "white", high = "red") + 
    ggtitle("Min function, exp decay off") + 
    scale_y_discrete(limits=c("preferential", "heterophily", "homophily")) + 
    xlab("(x) looses against (y)") + ylab("(y) winning over (x)") 
p_min_expd0 

我想:

  • rescale“times”bar to range <0:5>,据我所知没有{0,1,4,5}值,但我希望有这个范围
  • 使“时间”热量标度离散,这意味着一个数字,例如一个单一的颜色。 5 = hot red4 = red等(可能重复:ggplot2 heatmap with colors for ranged values),范围等<0,1)是可接受的,但我的规模(而不是值范围)
  • 喜欢单个自然数加一薄网格上的热图,因此所有瓦片(包括白色的)都是由它
  • 变化NA的灰度颜色值分离以一些浅灰色

帮助理解的,以及更短的代码。
谢谢!

这里是因为你想有一个离散的规模进行一些修改

p_min_expd0 <- ggplot(melted_min_expd0, aes(looses, winning)) + 
    geom_tile(aes(fill = cut(times, breaks=0:5, labels=1:5)), colour = "grey") + 
    ggtitle("Min function, exp decay off") + 
    scale_y_discrete(limits=c("preferential", "heterophily", "homophily")) + 
    scale_fill_manual(drop=FALSE, values=colorRampPalette(c("white","red"))(5), na.value="#EEEEEE", name="Times") + 
    xlab("(x) looses against (y)") + ylab("(y) winning over (x)") 

,你可以自己用cut()做转换采取你的前两个“希望”的照顾。这使得连续变量的离散变量。由于我们现在使用分立比例尺,所以我们必须使用scale_fill_manual自己设置颜色渐变。 “网格”颜色通过geom_tile中的colour=参数进行设置。 NA颜色设置为scale_fill_maual(na.value=)

enter image description here

+0

我注意到我的问题是downvoted。你认为我没有做足够的研究,或者我使用了不恰当的写作风格?我想成为一个更好的SO用户。 Thx的建议。 – oski86

+2

你基本上只是发布了一个编辑清单,让你的情节,并要求别人为你做。这些任务中的每一个都可能在SO上已经有了答案。只是一次只问一个明确的焦点问题,并表明你已经努力自己回答。但你确实做得很好,包括一个非常有用的可重复的例子。 – MrFlick