首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >geom_mosaic()中的产品()不接受R上的反应性输入吗?

geom_mosaic()中的产品()不接受R上的反应性输入吗?
EN

Stack Overflow用户
提问于 2019-03-01 23:18:42
回答 2查看 446关注 0票数 1

我在R上玩geom_mosaic()函数( ggmosaic包的一部分),并想出了一个我几天来一直试图解决的问题。

首先,一些样本数据:

代码语言:javascript
复制
a <- "a"
b <- "b" 
c <- "c"

df <- tribble(
  ~id, ~var1, ~var2, ~var3, 
  1, a, b, c,
  2, b, b, c,
  3, b, b, c,
  4, a, c, b, 
  5, a, a, a,
  6, b, c, c, 
  7, b, c, a,
  8, a, a, b,
  9, a, a, a, 
  10, b, b, c
)

geom_mosaic()似乎不接受闪亮的反应性输入,即代码1(下面)在R控制台上工作得很好,但是代码2(R闪亮的等价物)不起作用,给出了以下错误消息:

错误:找不到对象______

代码1 (geom_mosaic在控制台上工作良好):

代码语言:javascript
复制
library(tidyverse)
library(ggmosaic)

selected_var1 <- "var1"
selected_var1_dat <- df[[selected_var1]]

selected_var2 <- "var2"
selected_var2_dat <- df[[selected_var2]]

ggplot(data = df) + 
  geom_mosaic(aes(x = product(selected_var1_dat), 
                  fill = selected_var2_dat, na.rm = T))

输出格图(一切看起来都很好):

代码2(现在,要在Shiny中实现):

代码语言:javascript
复制
library(shiny) 
library(tidyverse)
library(ggmosaic)

varOptions <- c("var1", "var2", "var3")
a <- "a"
b <- "b"
c <- "c"

df <- tribble(
  ~id, ~var1, ~var2, ~var3, 
  1, a, b, c,
  2, b, b, c,
  3, b, b, c,
  4, a, c, b, 
  5, a, a, a,
  6, b, c, c, 
  7, b, c, a,
  8, a, a, b,
  9, a, a, a, 
  10, b, b, c
)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput(inputId = "selected_var1",
                  label = "X:",
                  choices = varOptions),
      selectInput(inputId = "selected_var2",
                  label = "Y:", 
                  choices = varOptions)
    ),
    mainPanel(
      plotlyOutput(outputId = "mosaic")
    )
  )
)

server <- function(input, output) {
  output$mosaic <- renderPlotly({

    selected_var1 <- input$selected_var1
    selected_var1_dat <- df[[selected_var1]]

    selected_var2 <- input$selected_var2
    selected_var2_dat <- df[[selected_var2]]

    ggplot(data = df) + 
      geom_mosaic(aes(x = product(selected_var1_dat), 
                      fill = selected_var2_dat, na.rm = T))

  })
}

shinyApp(ui = ui, server = server) 

它输出此错误消息:

我已经尝试过不同的方法来解决这个问题,而没有运气。我使用过相当多的闪亮图形,它似乎适用于我使用过的所有其他ggplot图。有人对可能发生的事情有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-04 21:40:53

ggmosaicplotly目前不兼容。您可以让您的应用程序工作,而不是巧妙地使用以下代码。

代码语言:javascript
复制
library(shiny) 
library(tidyverse)
library(ggmosaic)
#library(plotly)

a <- "a"
b <- "b"
c <- "c"

df <- tribble(
  ~id, ~var1, ~var2, ~var3, 
  1, a, b, c,
  2, b, b, c,
  3, b, b, c,
  4, a, c, b, 
  5, a, a, a,
  6, b, c, c, 
  7, b, c, a,
  8, a, a, b,
  9, a, a, a, 
  10, b, b, c
)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput(inputId = "selected_var1",
                  label = "X:",
                  choices = names(df)[-1]),
      selectInput(inputId = "selected_var2",
                  label = "Y:", 
                  choices = names(df)[-1])
    ),
    mainPanel(
      plotOutput(outputId = "mosaic")
    )
  )
)

server <- function(input, output) {

  output$mosaic <- renderPlot({
    ggplot(data = df) + 
      geom_mosaic(aes(x = product(!!sym(input$selected_var1)), 
                      fill = !!sym(input$selected_var2)))
  })
}

shinyApp(ui = ui, server = server) 
票数 0
EN

Stack Overflow用户

发布于 2019-03-02 02:17:04

我还没有完全弄清楚这一点,但是如果您:

  1. 运行ui /服务器部分之前的代码
  2. 在控制台中输入selected_var1_dat = df[["var1"]]selected_var1_dat = df[["var2"]]
  3. 运行应用程序

因此,问题似乎在于,在服务器代码中,selected_var1_dat <- df[[selected_var1]]不会产生任何结果,这意味着selected_var1 <- input$selected_var1不会产生任何结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54953618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档