R语言ggplot2绘制双Y轴图调整次轴后对应线条无响应问题求解
R语言ggplot2双Y轴曲线不匹配问题解决方案
问题根因
ggplot2的次坐标轴仅作为刻度标注层存在,不会自动对输入的绘图数据做尺度转换。你当前仅在次轴配置中做了~./100的刻度转换,但taxa_consumo的原始数据仍直接映射到了适配saldo_consumo大数值范围的主Y轴上,因此曲线尺度不匹配,显示位置异常。
修正后代码
library(ggplot2) library(ggthemes) # 对应theme_economist主题依赖 theme_set(theme_economist()) g1 = ggplot(Base) + aes(x = data) + geom_smooth(aes(y = saldo_consumo, col = "Saldo da carteira para consumo")) # 关键修改:对taxa_consumo做*100的逆转换,匹配次轴的/100刻度规则 g2 = g1 + geom_smooth(aes(y = taxa_consumo * 100, col = "Taxa média para consumo")) g3 = g2 + scale_y_continuous(sec.axis = sec_axis(~./100, name = "Taxa média para consumo")) g4 = g3 + scale_color_manual(values = c("brown", "gold")) + labs(title = "Saldo e Taxa de Microcrédito para Consumo", x = NULL, colour = NULL, y = "Saldo da carteira para consumo") g4
补充说明
- 双Y轴图表容易造成读数混淆,ggplot2官方并不推荐使用该类图表,非必要场景下建议拆分为两个独立子图展示两组数据
- 若必须使用双Y轴,需严格保证数据转换逻辑和次轴刻度转换逻辑完全对应:如果次轴设置为
~./N,那么对应的数据需要提前乘以N再映射到Y轴
内容的提问来源于stack exchange,提问作者damascenobp
相关产品推荐
相关产品推荐

