使用 ggvis 制作基于不同变量的双 X 轴
Make dual X-axs based on different variables using ggvis
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 上创建一个类似的双轴呢?这两个 X 轴应该指向不同的变量(本例中为 X1 和 X2)。
我知道制作双 X 轴可能是一个非常糟糕的主意。但是我的一个工作数据集可能需要我这样做。如有任何意见和建议,我们将不胜感激!
第二个轴需要有一个 'name' 以便轴知道要反映哪个变量。见下文:
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
和 returns 相同的向量。
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 上创建一个类似的双轴呢?这两个 X 轴应该指向不同的变量(本例中为 X1 和 X2)。
我知道制作双 X 轴可能是一个非常糟糕的主意。但是我的一个工作数据集可能需要我这样做。如有任何意见和建议,我们将不胜感激!
第二个轴需要有一个 'name' 以便轴知道要反映哪个变量。见下文:
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
和 returns 相同的向量。