2015-03-15 2 views
0

У меня есть график xy в решетке, на котором я показываю четыре разные вещи. Сюжет выглядит так прямо сейчас. Значения для розовой линии варьируются от 1 до 15000, однако значения для других линий варьируются от 20 до 300. Вот почему все линии, отличные от розового, кажутся статичными. Тем не менее, в них есть колебания, но я чувствую, что график не показывает их свойство из-за yaxis. Есть ли способ сократить яксис таким образом, чтобы граф лучше отображал другие строки?Как изменить значения по оси y для решетки xyplot

enter image description here

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

enter image description here

+0

Это может быть очень ошибочным иметь прерывистую ось, именно потому, что относительная плоскостность трех нижних линий закрыта. – jbaums

+0

Я бы рекомендовал вам сделать два графика. Один с розовой переменной и один без, так же, как вы показали в своем вопросе. Вы можете отображать два графика одновременно, пока ось y видна, и они расположены вертикально. Таким образом вы можете видеть y-отклик для разных переменных, не вводя в заблуждение людей, которые смотрят на графики. – variable

ответ

0

Если вы можете использовать базовый пакет вместо решетки это довольно просто. Кодекс ниже значительно упрощен от одного из моих собственных сюжетов. Вам придется немного поиграть с ним, чтобы добавить еще две строки.

описание линии

1,2 plot from data frame. ylab будет на стороне 2 (слева) шкала будет автоматически определяется из данных

3 начать второй участок

4 участка из кадра данных, с помощью осей = FALSE, xlab = Н.А., ylab = NA

5 создает ось для 4 стороны (справа) шкала будет автоматически определяться по данным

6 делает ylab для стороны 4

1 plot(df[c(4,5)], type = "s", col = "blue", main = "Battery Life", 
2  xlab="minutes", ylab="percent") 
3 par(new=TRUE) 
4 plot(df[c(4,6)], type = "s", col = "red", axes = FALSE, xlab = NA, ylab = NA) 
5 axis(side = 4) 
6 mtext(side = 4, line = 3, "Slope (minutes)") 
0

Вы можете использовать л tticeExtra для создания графика с двумя отдельными y-осями.

Как следует из комментариев, я предпочел бы создать 2 отдельных участка. Это более чистое решение.

В качестве альтернативы: возможно, вы могли бы добавить переменную кондиционирования к вашим данным («величина» или так), которая группирует ваши данные в подходящие куски. Затем вы можете представить свои данные, как показано ниже.

library("lattice") 
library("latticeExtra") 

dat1 <- data.frame(x=1:100, y1=rep(1:10,10), y2=rep(100:91,10)) 

dat2 <- data.frame(x=1:200, y=c(rep(1:10,10), rep(100:91,10)), 
       z=c(rep("small",100), rep("huge",100))) 

p1 <- xyplot(y1~x, data=dat1, type="l") 

p2 <- xyplot(y2~x, data=dat1, type="l") 

doubleYScale(p1, p2) # 2 y-axis: bad 

xyplot(y ~ x | z, data=dat2, type="l", scales="free") # 2 plots: good 
Смежные вопросы