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")
}
)
我真的是 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")
}
)