You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在Stata散点图中按变量缩放点的面积?

Stata中按变量缩放散点面积的解决方法

在Stata里直接使用msize(变量名)会触发报错,因为Stata默认将括号内的内容识别为预定义的样式名称(比如smalllarge),而非数值变量。要实现按变量缩放点的面积,需先将目标变量映射到Stata支持的符号尺寸范围,再指定给msize选项,具体操作如下:

1. 计算变量平方根(匹配面积缩放逻辑)

点的面积与尺寸的平方成正比,对目标变量取平方根,可让点的面积与原变量呈线性相关:

sysuse auto2, clear
gen weight_sqrt = sqrt(weight)

2. 将平方根变量标准化到Stata尺寸范围

Stata的符号尺寸对应数值区间为0(tiny)到5(giant),直接使用sqrt(weight)的数值会远超该范围,需将其标准化到合适区间(例如1到4,对应smallhuge):

summarize weight_sqrt
gen size_var = (weight_sqrt - r(min)) / (r(max) - r(min)) * 3 + 1

代码中的31为调整系数,可根据视觉需求修改,让点的大小更贴合预期。

3. 绘制散点图并指定尺寸变量

通过msize(size_var)调用标准化后的变量,实现按变量缩放点的面积:

scatter price mpg, msize(size_var) legend(off)

简化写法(直接缩放变量)

若不想标准化,也可直接将平方根变量除以一个系数,使其数值落在0-5区间内,示例如下:

gen size_var = sqrt(weight)/15  // 15为适配auto2数据weight范围的估算系数
scatter price mpg, msize(size_var)

上述方法可实现与R语言ggplot2中类似的效果,点的面积会随weight的平方根变化。

内容的提问来源于stack exchange,提问作者bill999

火山引擎 最新活动