手动设置中断并保持它们之间的距离相等

Manually set breaks and keep equal distance between them

我想绘制一个由两个长度为 100 的向量组成的数据集。向量的平均差很高,而每个向量的方差都相当小,很难同时绘制两个向量和仍然能够看到每个矢量内的变化。

我希望能够手动设置中断,以便我们都能看到向量之间以及向量内部的差异。

考虑这个数据集

a=rnorm(100,sd=0.005)+1
b=rnorm(100,sd=0.005)+10
vec = c(a,b)

plot(vec)plot(vec,log="y") 都没有给出令人满意的结果,因为无法区分向量内的变化(见图)。

我希望 y 轴上的间隔为 (min(a), max(a), 5, min(b), max(b))(并且它们之间的距离相等)。怎样才能做到这一点?

具体取决于您要执行的操作,对向量每个部分中的数据进行简单的转换可能就足够了:

vec2 <- c( (a - min(a))/ (max(a)-min(a)) , 3 + (b - min(b))/ (max(b)-min(b))  ) 
plot(vec2, axes=F)
box()
axis(1)
axis(2, at=c(0,1,2,3,4), labels = round(c(min(a), max(a), 5, min(b), max(b)),2))

替代方法可能是 ggplot 中的自定义转换、ggplot 中的辅助轴、将图形分解为多个面或使用 ggbreak。