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 でスケーリングされたデュアル y 軸を作成する方法を知っています。しかし、異なる X で同様の二重軸を作成するにはどうすればよいでしょうか? これら 2 つの X 軸は、異なる変数 (この例では X1 と X2) を参照する必要があります。

これはデュアル X 軸を作成するのに非常に悪いアイデアになる可能性があることはわかっています。しかし、私の作業中のデータセットの 1 つで、そうする必要があるかもしれません。コメントや提案は大歓迎です!

4

1 に答える 1

1

軸がどの変数を反映するかを知るために、2 番目の軸には「名前」が必要です。下記参照:

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'))

ここに画像の説明を入力

ご覧のとおり、上の x 軸は X2 変数を反映しており、4 ~ 8 の範囲です。

rep(4:8,1)また、補足として、 4 から 8 までのベクトルを作成する必要はありません4:8。同じベクトルを返す which を使用するだけです。

于 2015-11-24T10:35:26.613 に答える