我的第一个问题,希望它的措辞正确。我在这方面找不到任何东西,所以我会咬紧牙关。
我想创建一个geom_tile
图,其中对于 和 的每个组合x
,y
我有 5 个变量,它们的z
总和为 1。我想要每个x-y
组合的正方形颜色来反映哪个z
数字最大。例如,假设我有 5个z
变量a
、b
、c
和。如果和,则正方形为蓝色,如果和为红色,以此类推。如果和 其他为零,则为插值颜色(即紫色)。也许更好,红色和蓝色的交叉影线,但我不知道这是否可能在.d
e
a=1
b=c=d=e=0
b=1
a=c=d=e=0
a=b=0.5
ggplot
我不确定如何最好地继续前进。我考虑过geom_tile
在彼此之上绘制 5 个图,其中每个图都是不同的颜色,并且 alpha 按例如 a 的值缩放(因此单元格在 时是透明的,a = 0
而在 时是强烈着色的a = 1
)。也可能有一种方法可以使用颜色渐变,但我也在那里画了一个空白。
如果有人能不费吹灰之力地看到如何做到这一点,我将不胜感激。这是一个与我的实际数据格式相同的随机数数据集。
rand <- matrix(runif(50*50*5), ncol=5, nrow=50*50)
rand <- rand / apply(rand, 1, sum) # Make sure the numbers sum to one in each row
d <- data.frame(a = rand[,1],
b = rand[,2],
c = rand[,3],
d = rand[,4],
e = rand[,5],
expand.grid(x = 1:50, y = 1:50))
更新:通过使用 sebastian-c 的第一个答案和我自己的数据集,我能够制作这个数字。我使用 RColorBrewer 包中的 brewer.pal(5,"Spectral") 函数获得了颜色。需要一个自定义图例,但除此之外我很满意。纯色显示纯粹的“进化稳定策略”(ESS;即不能被突变策略击败的策略)。重叠颜色区域显示混合 ESS,其中平衡是两种或多种策略的稳定平衡。