#r #ggplot2 #shiny
Вопрос:
Это ввод моих data.frame
данных (первые 25 строк из 2646 в общей сложности)
dput(delitos)
structure(list(fecha = structure(c(17897, 17898, 17899, 17900,
17901, 17902, 17903, 17904, 17905, 17906, 17907, 17908, 17909,
17910, 17911, 17912, 17913, 17914, 17915, 17916, 17917, 17918,
17919, 17920, 17921), class = "Date"), tipo = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("sv", "cv", "tot"
), class = "factor"), n = c(4, 6, 15, 22, 5, 1, 10, 8, 15, 11,
20, 4, 5, 14, 5, 13, 10, 10, 7, 2, 10, 6, 11, 16, 10)), row.names = c(NA,
-25L), class = "data.frame")
Я пытаюсь создать блестящее приложение, которое отображает линию графика на основе двух критериев: fecha
и tipo
(обе переменные на моей data.frame
). Ниже кода до сих пор (пожалуйста, не обращайте внимания на мои комментарии на испанском языке):
library(shiny) # Librería principal
library(tidyverse) # Manipulación de datos
library(bslib) # Modificación de temas
library(thematic) # Ajuste del tema con el plot
thematic::thematic_shiny(font = "auto")
ui <- fluidPage(
theme = bs_theme(version = 4, bootswatch = "minty",
heading_font = font_google("Work Sans"),
base_font = font_google("Work Sans"),
code_font = font_google("Space Mono")
),
titlePanel(
h4(strong("Robos, 2019-2021"))),
sidebarPanel(
dateRangeInput("fecha", "Fecha",
start= "2019-01-01", end= "2021-05-31", format= "dd/mm/yyyy",
separator="-", language= "es"
),
# Caja para seleccionar entre opciones
checkboxGroupInput("tipo",
"Tipo",
choices = list("Con violencia" = "cv",
"Sin violencia" = "sv",
"Total" = "tot"),
selected = "tot")
),
# Creación de panel donde se colocará el output principal (default lado derecho)
mainPanel( # Aquí se puede agregar un título
plotOutput("robos")
)
)
)
server <- function(input, output) {
data <- reactive( {
dplyr::filter(delitos,
dplyr::between(fecha, base::as.Date(input$fecha[1],
format="%d/%m/%Y"),base::as.Date(input$fecha[2],
format="%d/%m/%Y")) amp;
tipo%in%input$tipo)}
)
output$robos <- renderPlot({
ggplot(data(),
aes(x=fecha, y=n, color=tipo, fill=tipo))
geom_line(size=1.2)
xlim(-1.5,1.5)
xlab("Fecha")
ylab("Robos")
scale_fill_manual(values=c("blue","red", "pink"))
scale_color_manual(values=c("blue","red","pink"))
theme(legend.title = element_blank())
})
}
shinyApp(ui, server)
Мне все кажется нормальным, но когда я запускаю приложение, я получаю следующую ошибку в зависимости от моего input$tipo
выбора:
Warning: Removed 882 row(s) containing missing values (geom_path)
Warning: Removed 1764 row(s) containing missing values (geom_path).
Warning: Removed 2646 row(s) containing missing values (geom_path).
Из-за этого ни одна строка не отображается, независимо от того, какие критерии я выбираю. Честно говоря, я не знаю, где ошибка, поэтому буду признателен за любые отзывы и предложения. Заранее спасибо.
Комментарии:
1. Проблема в том, что вы устанавливаете
xlim
c(-1.5, 1.5)
значение, которое кажется странным при работе с датами.2. Боже, ты прав! Я скопировал базовый код с другого графика и не обратил внимания на эту деталь. Спасибо за это, чувак.