Вручную устанавливайте разрывы и сохраняйте равное расстояние между ними

#r #ggplot2 #plot #graph

#r #ggplot2 #сюжет #График

Вопрос:

Я хотел бы построить набор данных, состоящий из двух векторов длиной 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)) (и чтобы между ними было равное расстояние). Как можно было этого достичь?

Ответ №1:

В зависимости от того, что именно вы пытаетесь сделать, простого преобразования данных в каждой части вектора может быть достаточно:

 vec2 lt;- 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.