You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将smoothScatter生成的绘图输出为正方形尺寸?

解决smoothScatter绘制正方形图的问题

你遇到的核心问题是:smoothScatter属于base R绘图系统,不是ggplot2的函数,所以你用的ggplot2专属的theme(aspect.ratio = 1)完全不起作用;而直接尝试asp=1无效,是因为需要正确的设置方式。

以下是两种可行的解决方案:

方法一:用par()提前设置纵横比

在调用smoothScatter前,通过par(asp=1)强制绘图的纵横比为1(即正方形):

# 注:这里不需要加载ggplot2,因为使用的是base R函数
if(any(Test$HQ == 1)) {
  par(asp = 1) # 固定纵横比为1
  smoothScatter(Test$FREQ, Test$AF, nrpoints = 0,
                xlab = "FREQ", ylab = "AF")
}

方法二:统一x轴和y轴范围+设置asp=1

如果x轴和y轴的数值范围差异较大,仅设置asp=1可能看起来不是严格正方形,这时可以先计算两者的共同范围,再同步xlim和ylim:

if(any(Test$HQ == 1)) {
  # 计算FREQ和AF的共同数值范围
  common_range <- range(c(Test$FREQ, Test$AF))
  smoothScatter(Test$FREQ, Test$AF, nrpoints = 0,
                xlab = "FREQ", ylab = "AF",
                xlim = common_range, # 统一x轴范围
                ylim = common_range, # 统一y轴范围
                asp = 1) # 强制纵横比1
}

补充说明

  • 若后续需要绘制其他非正方形图,记得用par(asp = "")重置纵横比设置,避免影响后续绘图。
  • 你代码里加载的ggplot2包在这里没有实际作用,可以去掉,除非你后续要切换到ggplot2绘图系统。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:50:08