Я пытаюсь построить точечную диаграмму с несколькими входами, используя выборочный вход с несколькими = ИСТИНА.
В основном, у меня есть список различных генов, и я хочу построить их друг против друга, используяточечный график.Я могу выбрать 2 гена и нанести их друг на друга в порядке, но я хочу иметь возможность выбрать один ген для построения на оси Y, а затем выбрать несколько других для построения на нем одновременно на оси Xи на том же участке через selectizeInput( multiple = TRUE)
.в настоящее время приведенный ниже код прекрасно работает для одной пары генов, но как только я выберу другой ген для построения графика против гена на оси Y, я получу Error: more than one expression parsed
Я знаю, что должен быть какой-то способделать это через пакет dpylr, но когда я попытался это сделать, я не мог понять, как выбрать только несколько выбранных столбцов, а не растопить всю таблицу.
Мой блестящий код, ограниченный соответствующимираздел и сокращенная версия моей таблицы данных приведены ниже.
> Short_cortex5
Names MARC1 MARC2 MARCH1 SEPT1 DEC1 MARCH2 SEPT2
1 GTEX-1117F-3226-SM-5N9CT 4.459 15.30 2.501 1.0680 0.02610 81.15 66.14
2 GTEX-111FC-3126-SM-5GZZ2 6.902 16.07 4.700 0.2980 0.00000 68.90 88.95
3 GTEX-1128S-2726-SM-5H12C 5.361 17.27 2.462 0.3812 0.00000 63.41 65.20
4 GTEX-117XS-3026-SM-5N9CA 4.792 11.37 3.107 0.5550 0.02261 84.53 48.98
5 GTEX-1192X-3126-SM-5N9BY 5.772 21.76 6.123 0.7558 0.00000 88.49 106.20
6 GTEX-11DXW-1126-SM-5H12Q 5.143 15.55 4.239 0.5859 0.03581 58.91 69.80
7 GTEX-11DXY-3226-SM-5GIDE 3.856 16.74 4.596 0.6551 0.02627 70.38 68.50
8 GTEX-11EI6-3026-SM-5GZZO 6.386 11.48 2.167 0.3567 0.01090 60.14 74.04
library(shiny)
library(ggplot2)
#TPM5
GeneNames <- colnames(Short_cortex5[2:ncol(Short_cortex5)])
# Define UI for application
ui <- fluidPage(
# Application title
titlePanel("Cell specific gene expression enrichment"),
# Sidebar
sidebarLayout(
sidebarPanel(
selectizeInput(inputId = "gene_X",
label = "Select gene X:",
choices = GeneNames,
selected = "MARCH1",
multiple = TRUE),
selectizeInput(inputId = "gene_Y",
label = "Select gene Y:",
choices = GeneNames,
selected = "SEPT1")
),
# Show a plot
mainPanel(
plotOutput(outputId = "corrPlot")
)
)
)
# Define server logic
server <- function(input, output) {
output$corrPlot <- renderPlot({
req(input$gene_X)
ggplot(data = Short_cortex5, aes_string(x=input$gene_X, y=input$gene_Y)) +
geom_point() +
geom_smooth(method = lm, se = FALSE) +
scale_x_log10() +
scale_y_log10()
})
}
# Run the application
shinyApp(ui = ui, server = server)
Я знаю, что мог бы просто вручную создать строки ggplot для каждой возможности, что возможно, если бы я просто хотел отобразить короткое фиксированное числовходов, но не тогда, когда я хочу иметь возможность выбрать несколько одновременно.
ggplot() +
geom_point(data = Short_cortex5, aes(x = Short_cortex5$SEPT2, y = Short_cortex5$MARC1)) +
geom_smooth(data = Short_cortex5, aes(x = Short_cortex5$SEPT2, y = Short_cortex5$MARC1), method = lm, se = FALSE) +
geom_point(data = Short_cortex5, aes(x = Short_cortex5$SEPT2, y = Short_cortex5$MARC2)) +
geom_smooth(data = Short_cortex5, aes(x = Short_cortex5$SEPT2, y = Short_cortex5$MARC2), method = lm, se = FALSE)