2015-12-19 3 views
0

У меня есть что-то вроде этого:Lattice: Заговор две линии с различного масштаба и осей в одной и той же панели

a <- c(1,4,2,8) 
b <- c(100,80,40, 0) 
c <- 1:4 
x <- rep("foo",4) 
y <- rep("bar",4) 

df1 <- data.frame(c, y = a, gr = x) 
df2 <- data.frame(c, y = b, gr = y) 
df <- rbind(df1,df2) 

xyplot(y ~ c, data = df, type = "l", group = df$gr) 

результаты в этом:

enter image description here

Я ищу способ, который позволит мне изменить масштаб так, чтобы синяя линия заполнила всю площадь панели и добавила соответствующую ось в правую сторону графика.

Если добавление оси слишком тяжелое, то это не является обязательным требованием. В любом случае единицы на оси y произвольны (в моих собственных данных). Может быть, способ нормализовать данные будет работать?

На этом сайте есть несколько ответов, но все они работают над базовой графикой R, и никто из них не использует решетку.

ответ

2

Это то, что вы хотите?

library(latticeExtra) 
library(dplyr) 
dfgr <-df %>% filter(gr == "foo") 
dfbar <-df %>% filter(gr == "bar") 
obj1 <- xyplot(y ~ c, dfgr, type = "l") 
obj2 <- xyplot(y ~ c, dfbar, type = "l") 
doubleYScale(obj1, obj2, add.ylab2 = TRUE) 

enter image description here

+1

+1 за указание на одну из приятных особенностей 'latticeExtra'. Но нет необходимости загружать 'dplyr' и создавать 2 новых кадра данных. 'obj1 <- xyplot (y ~ c, dfgr, type =" l ", subset = gr ==" foo ")' и т. д. является более прямым и не менее ясным. – DaveTurek

+0

Упс. Это должно быть 'obj1 <- xyplot (y ~ c, df, type =" l ", subset = gr ==" foo ")' (я не создал 'dfgr'). – DaveTurek

 Смежные вопросы

  • Нет связанных вопросов^_^