使用ggplot2中的图形缩放点的大小

时间:2014-01-10 11:48:11

标签: r ggplot2

我想绘制相关矩阵的Hinton图,我可以得到99%的路径,但是当我设置我正在绘制的点的大小时,该大小以像素为单位,因此不会随着图形大小的变化而缩放。例如,如何将点的大小“校准”为轴大小的一小部分?我希望它是这样的,当我加倍图形的大小时,点数加倍。我可能使用了错误的geom。

到目前为止我有这个代码:

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_size scale_size_area我可以让对角线填充该区域,但如果我更改图表的大小,则点不会缩放。有没有办法强制点在轴坐标中采用特定尺寸?当然,理想情况下,我想使用矩形,以便我可以有任何形状,它仍然可以工作,但我不知道一个geom会这样做?

enter image description here

1 个答案:

答案 0 :(得分:4)

只需使用as.numeric转换Var1& Var2返回到geom_rect()函数内的网格坐标,以在每个交叉点上绘制矩形。如果你添加0.5单位*相关以生成最大和最小合作,它们将完全适合值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