2014-01-10 65 views
5

我想要绘制相关矩阵的Hinton图,并且我可以获得99%的方式,但是当我设置绘制点的大小时,该尺寸以像素为单位,因此不会随着图形大小的变化而缩放。我如何“校准”点的大小为轴的大小的一小部分?我希望它能够让我将图形的大小加倍时,点数加倍。我可能会使用错误的几何。使用ggplot2中的图表制作点的大小比例

我到目前为止这样的代码:

library(ggplot2) 
library(data.table) 
library(reshape2) 

DT = data.table(A = rnorm(10), B = rnorm(10), X = rnorm(10), Y = rnorm(10)) 
C = cor(DT) 

ggplot(melt(C), aes(x=Var1, y=Var2, size=abs(value), color=as.factor(sign(value)))) + 
    geom_point(shape = 15) + 
    scale_size_area(max_size = 40) + 
    theme_bw() 

通过改变max_sizescale_size_area我只差一点就拿到对角线填充的区域,但如果我更改图表的大小点不规模。有没有办法强制点在坐标轴上占据特定的大小?理想情况下,我想使用矩形,以便我可以有任何形状,它仍然可以工作,但是我不知道这样做的几何?

enter image description here

回答

4

只需使用as.numeric打开VAR1 & VAR2回网格坐标的geom_rect()函数内部在每个交叉点来绘制矩形。如果添加了0.5个单位*相关生成最大和最小共同ORDS,他们会完全适合为1的值,并且按比例缩小:

ggplot(melt(C)) + 
    geom_point(aes(Var1,Var2)) + 
    geom_rect(aes(xmin=as.numeric(Var1)-0.5*abs(value),xmax=as.numeric(Var1)+0.5*abs(value),ymin=as.numeric(Var2)-0.5*abs(value),ymax=as.numeric(Var2)+0.5*abs(value),fill=as.factor(sign(value)))) + 
    theme_bw() 

enter image description here

+0

为什么你的图具有标记轴正确吗?当我使用示例代码时,我只获得1,2,3,4? – Corone

+0

对不起 - 更新 - 你必须添加一个geom_point()调用来标记轴上的因子;我得到了我的图像和代码不同步... – Troy

+0

这真是太棒了谢谢! – Corone

相关问题