2015-11-24 3 views
1
df <- data.frame(X1 = rep(1:5,1), X2 = rep(4:8,1), var1 = sample(1:10,5), row.names = c(1:5)) 
library("ggvis") 
graph <- df %>% 
     ggvis(~X1) %>% 
     layer_lines(y = ~ var1) %>% 
     add_axis("y", orient = "left", title = "var1") %>% 
     add_axis("x", orient = "bottom", title = "X1") %>% 
     add_axis("x", orient = "top", title = "X2") 
graph 

Очевидно, что верхняя ось X (X2) здесь неверна, поскольку она относится к той же переменной, что и X1. Я знаю, как создать масштабированную ось двойного у в ggvis. Но как я могу создать подобную двойную ось на разных X? Эти две оси X должны относиться к различным переменным (X1 и X2 в этом примере).Сделать двойные X-axs на основе разных переменных, используя ggvis

Я знаю, что это может быть НАДЕЖНАЯ идея сделать двойную ось Х. Но мне может понадобиться один из моих рабочих наборов данных. Любые комментарии и предложения приветствуются!

ответ

1

Вторая ось должна иметь «имя», чтобы ось знала, какую переменную отражать. Смотрите ниже:

df <- data.frame(X1 = rep(1:5,1), 
       X2 = rep(4:8,1), 
       var1 = sample(1:10,5), 
       row.names = c(1:5)) 

library("ggvis") 
df %>% 
    ggvis(~X1) %>% 
    #this is the line plotted 
    layer_lines(y = ~ var1) %>% 
    #and this is the bottom axis as plotted normally 
    add_axis("x", orient = "bottom", title = "X1") %>% 
    #now we add a second axis and we name it 'x2'. The name is given 
    #at the scale argument 
    add_axis("x", scale = 'x2', orient = "top", title = "X2") %>% 
    #and now we plot the second x-axis using the name created above 
    #i.e. scale='x2' 
    layer_lines(prop('x' , ~X2, scale='x2')) 

enter image description here

И как вы можете видеть верхнюю ось й отражает переменную X2 и колеблется в пределах от 4 до 8.

Кроме того, в качестве примечания: Вы надеваете» t нужно rep(4:8,1), чтобы создать вектор от 4 до 8. Просто используйте 4:8, который возвращает тот же вектор.

+0

спасибо! LyzandeR. Точно решайте мою проблему. – Chuan

+0

Добро пожаловать @ChuanTang. Рад, что я мог бы помочь :) – LyzandeR