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

如何在R语言中将4张统计图表叠加绘制到同一张画布中

R语言实现4组图表叠加/排列的解决方案

你原来每次调用plot()函数都会新建空白画布,要实现多图整合可以根据需求选择以下两种方案:


方案1:2行2列子图排列(匹配你提供的参考图效果)

通过par(mfrow)设置画布布局,依次在4个子区域绘图:

years = 2010:2019
# 设置画布为2行2列的子图布局
par(mfrow = c(2, 2))

# 1. 南部-中部产值比值图
plot(years,
     c(rapp.valProd.sud.centro$ValProd10, rapp.valProd.sud.centro$ValProd11,
       rapp.valProd.sud.centro$ValProd12, rapp.valProd.sud.centro$ValProd13,
       rapp.valProd.sud.centro$ValProd14, rapp.valProd.sud.centro$ValProd15,
       rapp.valProd.sud.centro$ValProd16, rapp.valProd.sud.centro$ValProd17,
       rapp.valProd.sud.centro$ValProd18, rapp.valProd.sud.centro$ValProd19),
     xlab = "年份", ylab = "产值", type = "b", col = "red", main = "南部 vs 中部")

# 2. 南部-中部资本比值图
plot(years,
     c(rapp.immob.sud.centro$Immob10, rapp.immob.sud.centro$Immob11,
       rapp.immob.sud.centro$Immob12, rapp.immob.sud.centro$Immob13,
       rapp.immob.sud.centro$Immob14, rapp.immob.sud.centro$Immob15,
       rapp.immob.sud.centro$Immob16, rapp.immob.sud.centro$Immob17,
       rapp.immob.sud.centro$Immob18, rapp.immob.sud.centro$Immob19),
     xlab = "年份", ylab = "资本", type = "b", col = "black", main = "南部 vs 中部")

# 3. 南部-中部劳动力比值图
plot(years,
     c(rapp.lavoro.sud.centro$Dipendenti10, rapp.lavoro.sud.centro$Dipendenti11,
       rapp.lavoro.sud.centro$Dipendenti12, rapp.lavoro.sud.centro$Dipendenti13,
       rapp.lavoro.sud.centro$Dipendenti14, rapp.lavoro.sud.centro$Dipendenti15,
       rapp.lavoro.sud.centro$Dipendenti16, rapp.lavoro.sud.centro$Dipendenti17,
       rapp.lavoro.sud.centro$Dipendenti18, rapp.lavoro.sud.centro$Dipendenti19),
     xlab = "年份", ylab = "劳动力", type = "b", col = "green", main = "南部 vs 中部")

# 4. 南部-中部生产率比值图
plot(years,
     c(rapp.produt.sud.centro$Produttività10, rapp.produt.sud.centro$Produttività11,
       rapp.produt.sud.centro$Produttività12, rapp.produt.sud.centro$Produttività13,
       rapp.produt.sud.centro$Produttività14, rapp.produt.sud.centro$Produttività15,
       rapp.produt.sud.centro$Produttività16, rapp.produt.sud.centro$Produttività17,
       rapp.produt.sud.centro$Produttività18, rapp.produt.sud.centro$Produttività19),
     xlab = "年份", ylab = "生产率(A)", type = "b", col = "blue", main = "南部 vs 中部")

# 绘图完成后重置画布布局,避免影响后续绘图
par(mfrow = c(1,1))

方案2:4条折线叠加到同一坐标系

如果需要把4组数据放在同一张图里对比,第一次用plot()初始化画布,后续用lines()叠加折线即可,要注意提前统一Y轴范围避免数据截断:

years = 2010:2019
# 提前提取所有指标的数值
val_prod <- c(rapp.valProd.sud.centro$ValProd10, rapp.valProd.sud.centro$ValProd11,
              rapp.valProd.sud.centro$ValProd12, rapp.valProd.sud.centro$ValProd13,
              rapp.valProd.sud.centro$ValProd14, rapp.valProd.sud.centro$ValProd15,
              rapp.valProd.sud.centro$ValProd16, rapp.valProd.sud.centro$ValProd17,
              rapp.valProd.sud.centro$ValProd18, rapp.valProd.sud.centro$ValProd19)
capitale <- c(rapp.immob.sud.centro$Immob10, rapp.immob.sud.centro$Immob11,
              rapp.immob.sud.centro$Immob12, rapp.immob.sud.centro$Immob13,
              rapp.immob.sud.centro$Immob14, rapp.immob.sud.centro$Immob15,
              rapp.immob.sud.centro$Immob16, rapp.immob.sud.centro$Immob17,
              rapp.immob.sud.centro$Immob18, rapp.immob.sud.centro$Immob19)
lavoro <- c(rapp.lavoro.sud.centro$Dipendenti10, rapp.lavoro.sud.centro$Dipendenti11,
            rapp.lavoro.sud.centro$Dipendenti12, rapp.lavoro.sud.centro$Dipendenti13,
            rapp.lavoro.sud.centro$Dipendenti14, rapp.lavoro.sud.centro$Dipendenti15,
            rapp.lavoro.sud.centro$Dipendenti16, rapp.lavoro.sud.centro$Dipendenti17,
            rapp.lavoro.sud.centro$Dipendenti18, rapp.lavoro.sud.centro$Dipendenti19)
produt <- c(rapp.produt.sud.centro$Produttività10, rapp.produt.sud.centro$Produttività11,
            rapp.produt.sud.centro$Produttività12, rapp.produt.sud.centro$Produttività13,
            rapp.produt.sud.centro$Produttività14, rapp.produt.sud.centro$Produttività15,
            rapp.produt.sud.centro$Produttività16, rapp.produt.sud.centro$Produttività17,
            rapp.produt.sud.centro$Produttività18, rapp.produt.sud.centro$Produttività19)

# 计算所有数值的上下限,留出10%边距避免线超出画布
y_min <- min(val_prod, capitale, lavoro, produt) * 0.9
y_max <- max(val_prod, capitale, lavoro, produt) * 1.1

# 初始化画布绘制第一条线
plot(years, val_prod, xlab = "年份", ylab = "比值", type = "b", col = "red", 
     main = "南部 vs 中部 各指标比值变化", ylim = c(y_min, y_max))
# 叠加剩余三条线
lines(years, capitale, type = "b", col = "black")
lines(years, lavoro, type = "b", col = "green")
lines(years, produt, type = "b", col = "blue")
# 添加图例区分指标
legend("topright", 
       legend = c("产值", "资本", "劳动力", "生产率"),
       col = c("red", "black", "green", "blue"),
       lty = 1, pch = 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 15:06:11