如何在R中手动设置Y轴刻度断点并保持断点间距离相等
R 实现Y轴断点等分、同时显示两组小方差高差异向量波动的方案
核心思路
你需要的是**截断Y轴(断裂Y轴)**的效果,将两组数据所在的区间按等距规则映射到绘图区域,跳过两组之间的无数据空白区间,同时保证两组各自的波动都能被清晰观测,以下方案完全匹配你要求的(min(a), max(a), 5, min(b), max(b))五个断点等距显示的规则。
方案1:使用plotrix包实现(最简方案)
plotrix包内置的gap.plot函数原生支持截断轴配置,可以直接满足需求:
# 安装包(首次使用执行) install.packages("plotrix") # 加载包 library(plotrix) # 构造示例数据 set.seed(123) # 加随机种子保证结果可复现 a = rnorm(100, sd=0.005) + 1 b = rnorm(100, sd=0.005) + 10 vec = c(a, b) # 绘制截断Y轴的图 gap.plot( x = 1:length(vec), y = vec, # 设置Y轴截断区间:跳过两组数据之间的空白区域 gap = c(max(a)+0.01, min(b)-0.01), # 配置三段显示区域的宽度相等:对应a的区间、截断空白、b的区间 gap.width = c(1,1), # 坐标轴配置 ytics = c(round(seq(min(a), max(a), length.out=3),3), round(seq(min(b), max(b), length.out=3),3)), ylab = "数值", xlab = "索引", main = "带截断Y轴的序列波动图" ) # 添加截断标记(Y轴上的斜线标识) axis.break(axis=2, breakpos=max(a)+0.01, style="slash")
运行上述代码后,两组数据的内部波动都可以被清晰观测。
方案2:手动坐标映射实现(无第三方包依赖)
如果不想引入外部包,可以手动对Y值做线性映射,把两组数据的区间缩放到等长的显示范围,再自定义坐标轴刻度:
# 构造示例数据 set.seed(123) a = rnorm(100, sd=0.005) + 1 b = rnorm(100, sd=0.005) + 10 vec = c(a, b) # 计算映射参数 a_range = range(a) b_range = range(b) # 显示区域比例:a区间:截断区:b区间 = 1:1:1 display_a_end = 1 display_gap_end = 2 display_b_end = 3 # 写映射函数,把原始Y值转成显示Y坐标 y_map = function(y) { ifelse(y <= a_range[2], (y - a_range[1])/(a_range[2]-a_range[1]) * display_a_end, (y - b_range[1])/(b_range[2]-b_range[1]) * (display_b_end - display_gap_end) + display_gap_end ) } # 逆映射函数,用来生成刻度 y_inv_map = function(display_y) { ifelse(display_y <= display_a_end, display_y / display_a_end * (a_range[2]-a_range[1]) + a_range[1], (display_y - display_gap_end)/(display_b_end - display_gap_end) * (b_range[2]-b_range[1]) + b_range[1] ) } # 绘图 plot(1:length(vec), y_map(vec), yaxt="n", xlab="索引", ylab="数值", main="手动实现截断Y轴效果图") # 自定义Y轴刻度 ticks_display = c(seq(0, display_a_end, length.out=3), seq(display_gap_end, display_b_end, length.out=3)) ticks_label = round(y_inv_map(ticks_display), 3) axis(2, at = ticks_display, labels = ticks_label) # 添加截断标记 axis(2, at = display_a_end + 0.05, labels = "//", tick = F)
内容的提问来源于stack exchange,提问作者Maël
相关产品推荐
相关产品推荐

