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

R语言使用fitdistrplus绘图时如何自动避免图例被裁剪

解决fitdistrplus绘图图例遮挡问题的自动方法

你遇到的图例遮挡问题是因为fitdistrplus的系列对比图默认将图例放在绘图区右上角,子图空间较小时就会和曲线重叠,有以下几种全自动的解决方法:

  • 方法1:使用函数内置的legendpos参数调整位置
    这是最简便的方案,denscomp/qqcomp/cdfcomp/ppcomp均原生支持该参数,既可以手动指定"topleft"/"bottomright"等常规位置,也可以传入"auto"让函数自动识别绘图区内的空白区域放置图例,适配性更强。
    修改后的代码示例:
library(fitdistrplus)

# 你的拟合代码(可删除重复的fg定义行,不影响运行)
fg <- fitdist(my_data$adjusted_weight, "gamma")
fln <- fitdist(my_data$adjusted_weight, "lnorm")
fw <- fitdist(my_data$adjusted_weight, "weibull")

par(mfrow = c(2, 2))
plot.legend <- c("Weibull", "lognormal", "gamma")

# 每个绘图函数添加legendpos参数,auto为自动找空白位置
denscomp(list(fw, fln, fg), legendtext = plot.legend, legendpos = "auto")
qqcomp(list(fw, fln, fg), legendtext = plot.legend, legendpos = "auto")
cdfcomp(list(fw, fln, fg), legendtext = plot.legend, legendpos = "auto")
ppcomp(list(fw, fln, fg), legendtext = plot.legend, legendpos = "auto")
  • 方法2:将图例放置在子图外部
    如果绘图区内容较多没有空白位置放图例,可以调整子图边距,把图例放在绘图区外,完全不会遮挡内容:
library(fitdistrplus)

fg <- fitdist(my_data$adjusted_weight, "gamma")
fln <- fitdist(my_data$adjusted_weight, "lnorm")
fw <- fitdist(my_data$adjusted_weight, "weibull")

# 调整子图边距,右侧留出额外空间放图例
par(mfrow = c(2, 2), mar = c(4,4,2,7), xpd = TRUE)
plot.legend <- c("Weibull", "lognormal", "gamma")

# 图例放在子图右侧外部
denscomp(list(fw, fln, fg), legendtext = plot.legend, legendpos = "right")
qqcomp(list(fw, fln, fg), legendtext = plot.legend, legendpos = "right")
cdfcomp(list(fw, fln, fg), legendtext = plot.legend, legendpos = "right")
ppcomp(list(fw, fln, fg), legendtext = plot.legend, legendpos = "right")
  • 方法3:整幅图使用统一图例
    如果不需要每个子图都显示重复的图例,可以只在整幅图的边缘放一个公共图例,最大化子图的绘图空间:
library(fitdistrplus)

fg <- fitdist(my_data$adjusted_weight, "gamma")
fln <- fitdist(my_data$adjusted_weight, "lnorm")
fw <- fitdist(my_data$adjusted_weight, "weibull")

# 调整整图外边距,右侧留出放图例的空间
par(mfrow = c(2, 2), oma = c(0,0,0,7), xpd = NA)
plot.legend <- c("Weibull", "lognormal", "gamma")

# 绘图时不显示子图图例
denscomp(list(fw, fln, fg), legendtext = NULL)
qqcomp(list(fw, fln, fg), legendtext = NULL)
cdfcomp(list(fw, fln, fg), legendtext = NULL)
ppcomp(list(fw, fln, fg), legendtext = NULL)

# 在整图右侧添加统一图例,颜色匹配函数默认的绘图配色
legend("topright", inset = c(-0.3, 0), legend = plot.legend, 
       col = c("red", "blue", "green"), lwd = 2, bty = "n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:06:05