如何修改ggbreak中y轴断裂后的刻度格式(转10^科学计数形式)
解决y轴断裂后刻度格式匹配问题
要让断裂后的y轴刻度和你自定义的scientific_10格式一致,直接把ticklabels里的数值用这个函数处理即可,具体修改如下:
首先确保已加载ggbreak包(scale_y_break是该包的功能),然后调整代码中scale_y_break的ticklabels参数:
scientific_10 = function(x) { ifelse( x==0, "0", parse(text = sub("e[+]?", "%*%10^", scientific_format()(x))) ) } # 修改后的示例代码 test_plot <- ggplot(data, aes(x = groups, y = values)) + # 补全aes包裹,原代码遗漏会报错 geom_boxplot() + scale_y_break(c(210000, 2025000), scales = 0.3, ticklabels = scientific_10(c(2.03e+06, 2.07e+06))) + # 用自定义函数处理刻度值 scale_y_continuous(limits = c(0, 2075000), label = scientific_10) + theme(axis.text.y.right = element_blank(), axis.ticks.y.right = element_blank(), axis.line.y.right = element_blank())
关键说明
scientific_10会把数值转换成#.# %*% 10^#的表达式格式,ggbreak能直接识别并渲染成你需要的#.# x 10^#样式(绘图时%*%会显示为乘号)。- 原代码中
ggplot的x、y参数未用aes()包裹,这会导致语法错误,已帮你补全。
内容的提问来源于stack exchange,提问作者Linh P
相关产品推荐
相关产品推荐

