如何在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
相关产品推荐
相关产品推荐

