ggvis input_select on scale_numeric trans 参数

ggvis input_select on scale_numeric trans parameter


我真的是 ggvis 的新手,我在整个网络上搜索都没有成功。
我有这样一个数据集:

data.example=data.frame("V1"=c(rep("A",times=10),rep("B",times=10)),"V2"=c(runif(10,1,10000),runif(10,100,1000)))

head(data.example)
     V1       V2
    1  A 7261.076
    2  A 1955.755
    3  A 3473.473
    4  A 7593.278
    5  A 3218.867
    6  A 4997.951

tail(data.example)
V1       V2
15  B 721.2147
16  B 185.6676
17  B 939.3541
18  B 276.0682
19  B 910.0322
20  B 444.2188

我可以在 y 中使用线性比例绘制箱线图

data.example %>%
  ggvis(x=~V1,y=~V2,fill=~V1) %>%
  layer_boxplots() %>%
  scale_numeric("y",trans="linear")

和 y 轴对数刻度的箱线图

data.example %>%
  ggvis(x=~V1,y=~V2,fill=~V1) %>%
  layer_boxplots() %>%
  scale_numeric("y",trans="log")

我无法使用这样的代码来绘制带有坐标变换选择的动态箱线图:

select.trans=input_select(choices = c("Linear"="linear","Logarithmic"="log"),selected="linear",label="Scale")
data.example %>%
  ggvis(x=~V1,y=~V2,fill=~V1) %>%
  layer_boxplots() %>%
  scale_numeric("y",trans=select.trans,expand=0)

出现此错误消息:

Error in match(x, table, nomatch = 0L) : 
  'match' requires vectorial arguments

可能是我忽略了一些基本的 ggvis 东西?
谢谢

根据 the ggvis documentation,只能修改带有交互式控件(例如道具)的绘图数据,而不是底层绘图规范(例如比例尺)。

虽然可以使用 Shiny 来实现您想要做的事情,例如:

library(shiny)
library(ggvis)


data.example=data.frame(
    "V1"=c(rep("A",times=10),rep("B",times=10)),
    "V2"=c(runif(10,1,10000),runif(10,100,1000))
)


shinyApp(
    ui = fluidPage(
        selectInput("trans", label="Scale",
                    choices=list(linear="linear", log="log"),
                    selected="linear"),
        ggvisOutput("plot")
    ),
    server = function(input, output) {
        reactive({
            data.example %>%
                ggvis(x=~V1,y=~V2,fill=~V1) %>%
                layer_boxplots() %>%
                scale_numeric("y", trans=input$trans, expand=0)
        }) %>% bind_shiny("plot")
    }
)