ggplot2绘制十分位概率图x轴显示小数、缺标签如何解决?
问题解决方法
问题原因
出现异常的核心原因是同一个x轴重复设置了scale规则:xlim()本质是scale_x_continuous(limits = ...)的语法糖,和后续的scale_x_reverse()冲突,导致x轴的范围、刻度规则全部失效。
修正后代码
ggplot(data = df, aes(x = Deciles, y = Probabilities)) + geom_line(color = "#00AFBB", size = 2) + # 将倒序、刻度、范围设置都整合到同一个scale参数中 scale_x_reverse( breaks = 1:10, # 指定x轴刻度为1-10的所有整数,解决标签缺失问题 limits = c(10, 1) # 倒序下的范围设置,对应x轴从左到右展示10到1 )
参数说明
breaks = 1:10:手动指定x轴的刻度位置,强制显示1到10的所有十分位标签,不需要ggplot自动计算刻度间隔- 移除了单独的
xlim()语句,把范围设置整合到scale_x_reverse中避免规则冲突 - 因为刻度已经指定为整数,默认生成的标签不会额外添加小数位,同时解决两个x轴异常问题。
如果需要更严格的强制整数标签格式,可以补充labels参数,示例如下:
# 需先加载scales包:library(scales) scale_x_reverse( breaks = 1:10, limits = c(10, 1), labels = label_integer() )
内容的提问来源于stack exchange,提问作者Parseval
相关产品推荐
相关产品推荐

