#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.