У меня есть набор данных в БД, и на основе выбора пользователя я хотел бы построить гистограмму, используя график рендеринга в r shiny. Мне удалось получить данные и отобразить их в виде таблицы с помощью renderTable, но мне не удалось создать renderPlot. Я также пытаюсь получить данные с сервера в пользовательский интерфейс в виде фрейма данных, в настоящее время я получаю его как dataTable.
PS: Я впервые изучаю R Shiny. Просто пытаюсь понять динамику этого языка.
Вот мой код.
library(DT)
library(shiny)
library(DBI)
# the user interface
ui <- fluidPage(
titlePanel(strong ("Welcome to User Details")),
sidebarPanel(
selectInput("selectedName", label = h5("Select the User name here"),
choices = list("A", "B", "C", "D"),
selected = "A"),
submitButton("Submit")
),
mainPanel(
is.data.frame("data"),
tableOutput("data")
)
)
# server
server <- function(input, output){
output$data <- renderTable({
conn <- dbConnect(
drv = RMySQL::MySQL(),
dbname = "mydb",
host = "localhost",
port = 3306,
username = "root",
password = "pwd")
on.exit(dbDisconnect(conn), add = TRUE)
dbGetQuery(conn, paste0(
"Select name, age, gender from table1 Where userShortName = '", intput$selectedName, "';")
})
}
# app launch
shinyApp(ui = ui, server = server)
И вывод создаст False (для фрейма данных) и создаст таблицу с этими именами трех столбцов , возраст, пол.
Я пытаюсь построить простой столбчатый график, основанный на имени и возрасте, сгруппировав полы. имя на оси X, возраст на оси Y, и все женщины сгруппированы, все мужчины сгруппированы вместе.
Обновление:
Попытка с renderplot вместо renderTable
library(DT)
library(shiny)
library(DBI)
ui <- fluidPage(
titlePanel(strong ("Welcome to User Details")),
sidebarPanel(
selectInput("selectedName", label = h5("Select the User name here"),
choices = list("A", "B", "C", "D"),
selected = "A"),
submitButton("Submit")
),
mainPanel(
textOutput("sample_name"),
plotOutput(outputId = "protein_data")
))
# server
server <- function(input, output){
conn <- dbConnect(
drv = RMySQL::MySQL(),
dbname = "mydb",
host = "localhost",
port = 3306,
username = "root",
password = "pwd")
output$data <- renderPlot({
table <- dbGetQuery(conn, statement = "Select name, age, gender from table1 Where userShortName = '", intput$selectedName, "';")
df <- as.data.frame(unclass(table(table$name,
table$age)))
barplot(x=table$name, y=table$age)
})
}
# app launch
shinyApp(ui = ui, server = server)
Этот код дает мне следующую ошибку: Ошибка: нужны блестящие конечные значения xlim.