gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:32:17 25 4
gpt4 key购买 nike

我想绘制一个相关矩阵的 Hinton 图,我可以得到 99% 的结果,但是当我设置要绘制的点的大小时,该大小以像素为单位,因此不会按比例缩放图大小发生变化。例如,如何将点的大小“校准”为轴大小的一小部分?我希望它是这样的,当我将图形的大小加倍时,点加倍。我可能使用了错误的几何图形。

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

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

最佳答案

只需使用 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

关于r - 使用ggplot2中的图形使点的大小缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com