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

如何对ggplot绘图坐标轴做对数缩放且不改变原有拟合结果

解决方法

该问题由scale_*系列函数的变换时机导致:scale_x_log10()/scale_y_log10()属于标度变换,会在统计拟合计算前先对原始数据做对数转换,因此得到的是对数空间下的拟合结果。如果需要保留原始数据的拟合结果、仅将坐标轴显示为对数刻度,可以改用coord_trans()做坐标变换,坐标变换会在所有统计计算完成后再对绘图坐标做缩放,不会影响拟合逻辑。

修改后的代码如下:

ggplot2::ggplot(df, ggplot2::aes(x, y)) +
  ggplot2::geom_point() +
  ggpmisc::stat_poly_eq(
    formula = y ~ x + 0,
    mapping = ggplot2::aes(label = paste(ggplot2::after_stat(adj.rr.label)))
  ) +
  ggpmisc::stat_poly_line(formula = y ~ x + 0) +
  # 坐标变换,仅缩放显示逻辑,不影响拟合计算
  ggplot2::coord_trans(x = "log10", y = "log10")

运行后得到的拟合线、调整R²均与未加对数刻度时的结果完全一致,同时坐标轴保持对数刻度,近零点的点位分布可以清晰展示。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:36:05