gpt4 book ai didi

r - 我无法让 ggvis 比例保持固定的 react 输入

转载 作者:行者123 更新时间:2023-12-04 09:28:43 24 4
gpt4 key购买 nike

我正在尝试创建一个 Shiny 的应用程序,允许用户选择某些组以绘制在 ggvis 图上。我遇到的问题是,如果我将 react 数据映射到点的属性(如点填充、形状等),每次用户更新组时,比例都会重置。因此,组标识到填充颜色的映射不会保持不变。我尝试通过对组 ID 进行硬编码以在 react 性元素中填充颜色来解决此问题,但是当应用程序开始加载时,我开始变得难以解释错误。

这是我第一次尝试的代码:

ui.R

#ui.R
library(shiny)
library(ggvis)

shinyUI(fluidPage(

# Application title
titlePanel("Old Faithful Geyser Data"),

# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
checkboxGroupInput("gear", label = "Gears", choices = c("3","4","5"))
),

# Show a plot of the generated distribution
mainPanel(
uiOutput("ggvis_ui"),
ggvisOutput("ggvis"),
textOutput("jawn"))
)
))

服务器.R

#server.R
library(shiny)
library(ggvis)
library(dplyr)

shinyServer(function(input, output) {

selected <- reactive(input$gear)

selectedData <- reactive({
mtcars %>%
filter(gear %in% selected())%>%
mutate(gear = as.character(gear))
})

colorRange <- reactive({
c(`3` = "red", `4` = "blue", `5` = "green")[sort(selected())]
})

output$jawn <- renderText(colorRange())


mtcars%>%
ggvis(~wt, ~mpg)%>%
layer_points()%>%
layer_points(data = selectedData, fill = ~gear)%>%
scale_ordinal("fill", range = colorRange) %>%
bind_shiny("ggvis", "ggvis_ui")
})

当我运行它时出现错误:

Error : x is not a numeric or integer vector

我还有一个 github 存储库,其中包含我对解决方案的其他尝试之一,它得到了一个不同的错误,代码有效,但有重新映射问题:https://github.com/JoFrhwld/ggvis_scales

编辑:我应该说这是 ggvis v0.3、dplyr v0.3 和 shiny v0.10

最佳答案

答案,感谢the ggvis google group

  • 对比例的范围和域进行硬编码,而不是被动编码。
  • group_by() 对数据进行分类,以抑制无意义的动画。

新的server.R代码是这样的

# server.R
library(shiny)
library(ggvis)
library(dplyr)

shinyServer(function(input, output) {

selected <- reactive(input$gear)

selectedData <- reactive({
mtcars %>%
filter(gear %in% selected())%>%
mutate(gear = as.character(gear))%>%
group_by(gear)
})

fill_domain = c("3","4","5")
fill_range = c("red","blue","green")

mtcars%>%
ggvis(~wt, ~mpg)%>%
layer_points()%>%
layer_points(data = selectedData, fill = ~gear)%>%
scale_ordinal("fill", range = fill_range, domain = fill_domain)%>%
bind_shiny("ggvis", "ggvis_ui")
})

关于r - 我无法让 ggvis 比例保持固定的 react 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26085104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com