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
}
})
Все разные сюжеты работают блестяще, кроме мозаичного. Как я могу решить проблему? так как я пытаюсь сделать мозаичный сюжет только для категориальной переменной. Я получаю следующую ошибку: введите описание изображения здесь