如何将ggplot堆叠面积图Y轴间隔从25%改为10%?
问题:调整ggplot堆叠面积图Y轴刻度间隔为10%
我用ggplot制作的堆叠面积图整体效果良好,但希望将Y轴的显示间隔从25%调整为10%。尝试添加breaks参数(代码:scale_y_continuous(breaks = seq(0, 100, by=10), limits=c(0,100)))也无效,恳请提供帮助。
我的代码:
ggplot(data3_long, aes(x = fyear, y = percentage, fill = factor(variable, levels = c("CHE", "IVAO", "ACO", "RECT", "AO", "INTAN", "PPENT")), group = variable)) + geom_area(position = 'stack') + scale_fill_manual(values = color_palette, name = NULL) + scale_y_continuous(name = "Percentage", labels = scales::percent_format()) + labs(x = "Year", title = "Test") + theme_minimal() + theme(legend.position = "bottom") + guides(fill = guide_legend(nrow = 1))
当前图表Y轴间隔为25%。
解决方案
问题核心是Y轴数据的数值格式与刻度设置不匹配,分两种情况处理:
情况1:
percentage列是小数格式(0~1,如0.1对应10%)
你之前设置的breaks=seq(0,100,10)是百分比的数值(10对应1000%),超出了数据的实际范围(0~1),所以ggplot只会显示0和1的刻度。正确的做法是把breaks改成小数序列:scale_y_continuous(name = "Percentage", labels = scales::percent_format(), breaks = seq(0, 1, by = 0.1), # 步长0.1对应10%间隔 limits = c(0, 1))情况2:
percentage列是0~100的数值(如10对应10%)
默认的scales::percent_format()会把数值乘以100转成百分比(10会变成1000%),需要调整labels的scale参数,同时保留你的breaks设置:scale_y_continuous(name = "Percentage", labels = scales::percent_format(scale = 1), # 直接将数值转为百分比 breaks = seq(0, 100, by = 10), limits = c(0, 100))
将原代码中的scale_y_continuous部分替换为上述对应代码即可生效。
内容的提问来源于stack exchange,提问作者JRudz
相关产品推荐
相关产品推荐

