如何在R基础绘图中将Y轴刻度从小数转为百分比(不使用ggplot)
R基础绘图Y轴改为百分比格式(无需ggplot)
直接通过手动自定义Y轴刻度就能实现,修改你的代码如下:
# 先绘制基础图,禁用默认Y轴 plot(x = dfinvtprop$fyear, y = dfinvtprop$ratio, type="l", lty=2, lwd=3, col="darkgrey", xlab="年份", cex.lab=2, cex.main=1.5, ylab="占总资产比例", cex.axis=1.5, main = "A: 各类资产占总资产比例", ylim=c(0, 0.65), xlim=c(1980,2020), yaxt="n") # 手动添加带百分比的Y轴 axis(2, at = seq(0, 0.6, by = 0.1), labels = paste0(seq(0, 60, by = 10), "%"), cex.axis=1.5) # 后续的线条和文本保持不变 lines(x = dfacqprop$fyear, y= dfacqprop$ratio, lwd=3, type="l", col="black") lines(x = dfotherinttprop$fyear, y = dfotherinttprop$ratio, type="l", lty=4, lwd=3, col="black") text(x=1988, y=0.4, labels="生产性资产", col="darkgrey", cex=2) text(x=2010, y=0.18, label="商誉", col="black", cex=2) text(x=2013, y=0.06, label="无形资产", col="black", cex=2) text(x=2013, y=0.025, label="(不含商誉)", col="black", cex=2)
关键修改点说明:
yaxt="n":禁用默认Y轴,避免和自定义轴重复axis(2, ...):手动生成左侧Y轴(参数2代表左侧):at:指定刻度对应的数值位置(比如0对应0%,0.1对应10%)labels:设置要显示的百分比文本,用paste0拼接数字和%符号
- 如果需要适配任意小数数值,也可以用
sprintf批量生成标签,比如:y_ticks <- seq(0, 0.65, by=0.05) axis(2, at=y_ticks, labels=sprintf("%d%%", y_ticks*100), cex.axis=1.5)
内容的提问来源于stack exchange,提问作者Ayoze Alfageme
相关产品推荐
相关产品推荐

