geom_mosaic не работает в приложении Shiny

Я написал этот код для пользовательского интерфейса:

tabPanel("Plots",
     sidebarLayout(
       sidebarPanel(width = 3,
  selectInput("x_axis_slt", label = h5("Select x-axis variable"),
              ""),
  selectInput("y_axis_slt", label = h5("Select y-axis variable"),
              ""),
  selectInput("fill_slt", label = h5("Select fill color"),
              ""),
  radioButtons("plot_type", "Plot type", c("Histogram", "Mosaic-Plot", "Boxplot","Scatterplot")) 
),
   mainPanel(
  plotOutput("distPlot",width = "100%", height = "700px")
)

))

и для сервера:

output$distPlot <- renderPlot({

 if(is.null(data())) return(NULL)
plotdata <- data()

x_axis <- input$x_axis_slt
y_axis <- input$y_axis_slt
fill_col <- input$fill_slt

if (input$plot_type == "Histogram") {

  ggplot(data=plotdata, aes_string(x = x_axis, color = fill_col, fill = fill_col)) +
    geom_histogram(aes(y = ..density..), position = "identity", alpha =
                     0.5) +
    geom_density(alpha = 0.6) +
    scale_color_manual(values = c("#00c094", "#f23232", "#56B4E9")) +
    scale_fill_manual(values = c("#00c094", "#f23232", "#56B4E9")) +
    labs(title = "Histogram", x = "x-axis", y = "Density") +
    theme_classic() + style + theme(legend.title = element_blank())
} 

else if (input$plot_type == "Mosaic-Plot") {
  ggplot(data = plotdata) + geom_mosaic(aes_string(weight = 1, x = product(y_axis, x_axis),
                                         fill=factor(fill_col)), na.rm=TRUE, offset=0.015) + labs(x="", y="Percent (decimal)", title="") + 
    guides(fill=guide_legend(title = "", reverse = TRUE))  + theme(axis.text.x=element_text(angle=-25, hjust= .1))+
    theme(plot.title = element_text(size = rel(1))) + style +
    scale_fill_brewer(palette="Set2")

    }

else if (input$plot_type == "Boxplot") {
  ggplot(data=plotdata, aes_string(
    x = x_axis,
    y = y_axis,
    color = x_axis,
    fill = fill_col
  )) + scale_fill_brewer(palette = "Dark2") +
    geom_jitter() + geom_boxplot(position = position_dodge(1),
                                 size = 1,
                                 alpha = 0.5) + xlab("x-axis") + ylab("y-axis") +
    ggtitle("Boxplot") + style.boxplot
}

else if (input$plot_type == "Scatterplot") {
ggplot(data=plotdata,aes_string(x=x_axis, y=y_axis,color = "fill_col") ) +
    geom_point() +
    geom_smooth(method=lm, color="DarkOrange", linetype = "dashed",size=1) +
    ggtitle("Scatter Plot") +
    xlab("x-axis") + ylab("y-axis") + style.scatter
  }
 })

Все разные сюжеты работают блестяще, кроме мозаичного. Как я могу решить проблему? так как я пытаюсь сделать мозаичный сюжет только для категориальной переменной. Я получаю следующую ошибку: введите описание изображения здесь

0 ответов

Другие вопросы по тегам