R绘图如何修正legend不显示所有线条、Gini值显示错误问题
错误原因
- 初始代码的
paste0拼接逻辑错误:你传入了4个独立的单元素值给paste0,会直接拼接为1个长字符串,导致legend参数仅获取到1个条目,和你传入的2组颜色、线型参数无法对应,因此显示异常。 - 第二次修改的
round参数位置错误:你没有将两个Gini计算结果放入同一个向量作为round的第一个入参,反而把第二个Gini值当成了round的第二个参数,digits=2也放错了层级,最终计算结果出错。
正确代码
你可以先提前计算Gini值让代码更易读,再生成图例:
# 提前计算两个地区的Gini系数,避免重复调用 gini_bel <- round(Gini(`BEL_2016_final.csv`$value), digits = 2) gini_cro <- round(Gini(`CRO_2016_final.csv`$value), digits = 2) legend(x = "topleft", legend = c(paste0("Belgium, Gini ", gini_bel), paste0("Croatia, Gini ", gini_cro)), col = c("red", "blue"), lty = c(1, 1), # 你的两幅图折线都为实线,和实际绘图保持一致即可,不要写1:2 lwd = 1.5, cex = 1)
如果要写成更简洁的批量拼接写法,也可以用如下代码:
legend(x = "topleft", legend = paste0( c("Belgium, Gini ", "Croatia, Gini "), round(c(Gini(`BEL_2016_final.csv`$value), Gini(`CRO_2016_final.csv`$value)), digits = 2) ), col = c("red", "blue"), lty = c(1, 1), lwd = 1.5, cex = 1)
修改后legend会收到长度为2的字符向量,自动分两行对应红色、蓝色两条折线的信息。
内容的提问来源于stack exchange,提问作者vojtam
相关产品推荐
相关产品推荐

