凸包的 ggplot 视觉效果 - 有光泽
ggplot visual of convex hull - shiny
我想为用户提供的任何数字变量创建凸包的 ggplot 可视化,同时允许凸包拆分为选定的分类输入变量的多个包。
像 shiny 这样的东西,用户可以根据需要选择任意数量的 x 变量
library(datasets)
library(ggplot2)
library(ggpubr)
df<- iris
str(df)
b <- ggplot(df, aes(x = Sepal.Length+Sepal.Width, y = Petal.Width))
# Convex hull of groups
b + geom_point(aes(color = Species, shape = Species)) +
stat_chull(aes(color = Species, fill = Species),
alpha = 0.1, geom = "polygon") +
scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07")) +
scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
到目前为止,这是我的闪亮代码,不用说,work.Any将不胜感激
library(shiny)
library(dplyr)
library(ggplot2)
library(ggpubr)
df<- mtcars
numeric_cols <- df %>% select(where(is.numeric))
categorical_cols <- df %>% select(where(is.factor))
ui <- fluidPage(
titlePanel("MTCARS"),
selectInput("Columns","Numeric Columns",
names(numeric_cols), multiple = TRUE),
selectInput("Columns","Categorical Columns",
names(categorical_cols), multiple = TRUE),
plotOutput("myplot")
)
server <- function(input, output) {
Dataframe2 <- reactive({
mtcars[,input$Columns]
})
my_plot<- reactive({ggplot(Dataframe2(), aes(mpg, cyl))+geom_point()})
output$myplot <- renderPlot({
my_plot()
})
}
shinyApp(ui, server)
您有 3 个问题。首先,您在 mtcars
中有零个分类变量。其次,您应该使用唯一的 ID
,但您对两个 selectInputs
使用相同的 ID。最后,对于绘图,您需要使用选定的列,而不是指定 mpg
和 cyl
。试试这个
library(shiny)
library(dplyr)
library(ggplot2)
library(ggpubr)
df<- mtcars
numeric_cols <- df %>% dplyr::select(where(is.numeric))
categorical_cols <- df %>% dplyr::select(where(is.factor))
ui <- fluidPage(
titlePanel("MTCARS"),
selectInput("Columns","Numeric Columns",
names(numeric_cols), multiple = TRUE),
# selectInput("Columns","Categorical Columns",
# names(categorical_cols), multiple = TRUE),
plotOutput("myplot")
)
server <- function(input, output) {
Dataframe2 <- reactive({
req(length(input$Columns)>=2)
mtcars[,input$Columns]
})
my_plot<- reactive({ggplot(Dataframe2(), aes(.data[[input$Columns[1]]],.data[[input$Columns[2]]] ))+geom_point()})
output$myplot <- renderPlot({
my_plot()
})
}
shinyApp(ui, server)
我想为用户提供的任何数字变量创建凸包的 ggplot 可视化,同时允许凸包拆分为选定的分类输入变量的多个包。
像 shiny 这样的东西,用户可以根据需要选择任意数量的 x 变量
library(datasets)
library(ggplot2)
library(ggpubr)
df<- iris
str(df)
b <- ggplot(df, aes(x = Sepal.Length+Sepal.Width, y = Petal.Width))
# Convex hull of groups
b + geom_point(aes(color = Species, shape = Species)) +
stat_chull(aes(color = Species, fill = Species),
alpha = 0.1, geom = "polygon") +
scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07")) +
scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
到目前为止,这是我的闪亮代码,不用说,work.Any将不胜感激
library(shiny)
library(dplyr)
library(ggplot2)
library(ggpubr)
df<- mtcars
numeric_cols <- df %>% select(where(is.numeric))
categorical_cols <- df %>% select(where(is.factor))
ui <- fluidPage(
titlePanel("MTCARS"),
selectInput("Columns","Numeric Columns",
names(numeric_cols), multiple = TRUE),
selectInput("Columns","Categorical Columns",
names(categorical_cols), multiple = TRUE),
plotOutput("myplot")
)
server <- function(input, output) {
Dataframe2 <- reactive({
mtcars[,input$Columns]
})
my_plot<- reactive({ggplot(Dataframe2(), aes(mpg, cyl))+geom_point()})
output$myplot <- renderPlot({
my_plot()
})
}
shinyApp(ui, server)
您有 3 个问题。首先,您在 mtcars
中有零个分类变量。其次,您应该使用唯一的 ID
,但您对两个 selectInputs
使用相同的 ID。最后,对于绘图,您需要使用选定的列,而不是指定 mpg
和 cyl
。试试这个
library(shiny)
library(dplyr)
library(ggplot2)
library(ggpubr)
df<- mtcars
numeric_cols <- df %>% dplyr::select(where(is.numeric))
categorical_cols <- df %>% dplyr::select(where(is.factor))
ui <- fluidPage(
titlePanel("MTCARS"),
selectInput("Columns","Numeric Columns",
names(numeric_cols), multiple = TRUE),
# selectInput("Columns","Categorical Columns",
# names(categorical_cols), multiple = TRUE),
plotOutput("myplot")
)
server <- function(input, output) {
Dataframe2 <- reactive({
req(length(input$Columns)>=2)
mtcars[,input$Columns]
})
my_plot<- reactive({ggplot(Dataframe2(), aes(.data[[input$Columns[1]]],.data[[input$Columns[2]]] ))+geom_point()})
output$myplot <- renderPlot({
my_plot()
})
}
shinyApp(ui, server)