2

我想制作一个热图,显示每个框中数字的大小和 p 值。我希望每个单元格的颜色来描述值 (v),并且我希望每个单元格边框的厚度来描述 p 值。

df = data.frame(x=1:5, y=letters[1:5], v=1:5, p=10^(-(1:5)) )

我有的:

plt <- ggplot(df, aes(x=x,y=y,fill=v)) + geom_tile()

我第一次通过,这段代码根据值的重要性改变了边框的粗细:

plt <- ggplot(df, aes(x=x, y=y, fill=v)) + 
                  geom_tile( size=1-df$p, colour='black' )

在此处输入图像描述

现在我只是想清理这个数字。如何在所有单元格之间添加常规间距?我需要创建一个缓冲区,这样边界就不会与相邻单元格重叠?

答案: aes 中的高度和宽度变量


这是我最终得到的数字:

plt3 <- ggplot(mel, aes(y=Subject,x=HMO,fill=b,height=.75,width=.75 ))+ 
geom_tile(size=3*(mel$border)) + 
scale_fill_gradientn(colours=rev(c("blue1",'lightblue', "white" ,'orangered', "red1")) )

在此处输入图像描述

我需要一个边界图例,但我无法让它出现。我认为这是因为它不是aes。知道如何获得边框厚度的图例吗?

4

0 回答 0