Flexdashboard checkboxGroupInput теряет данные ggplot - PullRequest
1 голос
/ 17 февраля 2020

У меня есть проблема, связанная с этой , но я не смог найти решение для моей.

У меня есть реактивный ggplot, который я хотел бы обновить, используя флажок на основе данных группы.

В настоящее время, когда я выбрал ОДИН блок, данные отображаются правильно. Если я выберу более одного флажка, я потеряю данные. Смотрите фотографии ниже. Я думаю, что должен изменить способ, которым я фильтрую свои данные и использовать droplevels где-то, но не уверен, как интегрировать это (я новичок в блестящем!). Любые предложения приветствуются!

WHOC_Sum_CMJ <- structure(list(Athlete = structure(c(1L, 1L, 1L, 7L, 7L, 7L, 
7L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 11L, 
11L, 11L, 11L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 13L, 14L, 14L, 
14L, 14L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 
5L, 5L, 5L, 6L, 6L, 6L, 6L), .Label = c("Athlete 1", "Athlete 10", 
"Athlete 11", "Athlete 12", "Athlete 13", "Athlete 14", "Athlete 2", 
"Athlete 3", "Athlete 4", "Athlete 5", "Athlete 6", "Athlete 7", 
"Athlete 8", "Athlete 9"), class = "factor"), Date = structure(c(1L, 
4L, 5L, 1L, 3L, 5L, 7L, 2L, 3L, 5L, 7L, 1L, 3L, 5L, 7L, 1L, 3L, 
5L, 7L, 1L, 3L, 6L, 7L, 2L, 4L, 5L, 8L, 1L, 3L, 5L, 7L, 1L, 3L, 
5L, 7L, 1L, 3L, 5L, 7L, 1L, 3L, 5L, 7L, 1L, 3L, 5L, 7L, 1L, 3L, 
6L, 7L, 1L, 3L, 5L, 7L), .Label = c("2020-01-06", "2020-01-07", 
"2020-01-13", "2020-01-14", "2020-01-21", "2020-01-23", "2020-01-27", 
"2020-01-28"), class = "factor"), Position = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L), .Label = c("DEF", "FWD", "GOALIE"), class = "factor"), 
    Program = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 1L, 1L, 1L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 
    1L, 1L, 1L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 
    4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L), .Label = c("Navy", "Red", "RTP", "White"), class = "factor"), 
    mRSI = c(0.36, 0.38, 0.42, 0.46, 0.46, 0.47, 0.48, 0.31, 
    0.3, 0.24, 0.3, 0.29, 0.26, 0.28, 0.28, 0.36, 0.35, 0.43, 
    0.43, 0.28, 0.31, 0.28, 0.3, 0.33, 0.36, 0.35, 0.37, 0.37, 
    0.36, 0.37, 0.36, 0.3, 0.36, 0.34, 0.37, 0.26, 0.28, 0.34, 
    0.3, 0.39, 0.4, 0.43, 0.43, 0.43, 0.47, 0.46, 0.48, 0.34, 
    0.36, 0.33, 0.37, 0.28, 0.28, 0.34, 0.33), SystemWeight = c(617.21, 
    612.4, 620.45, 672.08, 682.23, 670.5, 663.41, 517.33, 515.23, 
    511.62, 517.85, 697.55, 703.92, 689.43, 691.33, 859.06, 845.9, 
    850.97, 851.84, 655.79, 665.09, 673.91, 667.92, 626.78, 632.92, 
    634.52, 624.88, 637.55, 645.6, 648.78, 646.64, 558.03, 563.23, 
    569.58, 560.95, 693.63, 695.54, 684.37, 684.58, 641.18, 660.8, 
    663.95, 660, 594.92, 596.97, 591.36, 585.64, 522.35, 518.17, 
    530.95, 523.5, 780.65, 789.81, 775.84, 775.48), FTCT = c(0.61, 
    0.62, 0.67, 0.74, 0.75, 0.77, 0.77, 0.54, 0.55, 0.44, 0.53, 
    0.53, 0.49, 0.53, 0.56, 0.6, 0.58, 0.68, 0.68, 0.53, 0.57, 
    0.54, 0.55, 0.61, 0.63, 0.64, 0.65, 0.59, 0.58, 0.59, 0.59, 
    0.51, 0.59, 0.59, 0.59, 0.53, 0.57, 0.63, 0.59, 0.76, 0.76, 
    0.79, 0.78, 0.67, 0.72, 0.72, 0.74, 0.63, 0.65, 0.61, 0.63, 
    0.49, 0.5, 0.53, 0.57), JumpHeight_cm = c(28.97, 29.78, 31.43, 
    35.83, 35.41, 36.59, 36.92, 27.56, 26.11, 26.15, 26.82, 26.15, 
    25.08, 24.98, 24.62, 29.39, 30.17, 32.42, 32.56, 26.6, 27.25, 
    25.58, 27.88, 29.17, 31.58, 28.48, 31.24, 33.73, 32.78, 33.09, 
    33.43, 29.73, 31.91, 30.65, 32.98, 24.15, 24.24, 27.57, 25.44, 
    26.68, 26.39, 27.43, 28.87, 35.44, 36.29, 35.71, 36.06, 26.79, 
    27.76, 26.82, 29.71, 28.69, 26.9, 31.12, 29.77), EJH = c(17.6, 
    18.58, 21.11, 26.66, 26.69, 28.08, 28.38, 14.99, 14.39, 11.41, 
    14.33, 13.8, 12.34, 13.29, 13.67, 17.58, 17.5, 22.03, 22.19, 
    14.03, 15.59, 13.92, 15.39, 17.7, 19.75, 18.37, 20.3, 19.99, 
    18.9, 19.62, 19.61, 15.09, 18.8, 18.18, 19.6, 12.78, 13.87, 
    17.28, 15.06, 20.44, 20.12, 21.74, 22.52, 23.8, 26.25, 25.68, 
    26.73, 16.99, 18.13, 16.42, 18.82, 14.09, 13.43, 16.61, 16.9
    ), Weight = c(62.94, 62.45, 63.27, 68.54, 69.57, 68.38, 67.65, 
    52.76, 52.54, 52.17, 52.81, 71.13, 71.78, 70.31, 70.5, 87.61, 
    86.26, 86.78, 86.87, 66.88, 67.82, 68.72, 68.11, 63.92, 64.54, 
    64.71, 63.72, 65.02, 65.84, 66.16, 65.94, 56.91, 57.44, 58.09, 
    57.2, 70.74, 70.93, 69.79, 69.81, 65.39, 67.39, 67.71, 67.31, 
    60.67, 60.88, 60.31, 59.72, 53.27, 52.84, 54.15, 53.39, 79.61, 
    80.54, 79.12, 79.08)), class = "data.frame", row.names = c(NA, 
-55L))

```
checkboxGroupInput("Program", label = "Program", choices = unique(WHOC_Sum_CMJ$Program), selected = "Red", inline = TRUE)
# (Note: for the code I cut out some of the styling to make it more readable. That's why it looks different than the pictures). 
```  

```
renderPlot({
  f <- WHOC_Sum_CMJ %>%
  select(Date, Athlete, JumpHeight_cm, Program)%>%
  filter(Program == input$Program)

p <- ggplot(f)+
  geom_line(aes(x=Date, y=JumpHeight_cm, colour = Athlete))+
  geom_point(aes(x=Date, y=JumpHeight_cm, colour = Athlete))+
  theme_bw() +
  labs(title = "Team Jump Height", 
       x = "Date", 
       y = "Jump Height (cm)")+
  scale_x_date(limits = c(min = min(WHOC_Sum_CMJ$Date), max = max(WHOC_Sum_CMJ$Date)), labels = date_format("%m/%d"), 
               date_breaks = "2 weeks", expand = c(.08,0))+
  guides(col = guide_legend(nrow = 3))+
  geom_text_repel(data= subset(f, Date == min(Date)), aes(x=Date, y=JumpHeight_cm,label = unique(Athlete)),
                  force        = .1,
                  nudge_x      = -2,
                  direction    = "y",
                  hjust        = 1,
                  )
p
    })

Plot with all items selected What full plot should look like with all items selected

1 Ответ

0 голосов
/ 19 февраля 2020

Проблема в вашем коде действительно основана на вызове filter. Вам нужно будет использовать %in% вместо == при фильтрации вектора операторов. Пожалуйста, смотрите следующее:

---
title: "Test"
output: flexdashboard::flex_dashboard
runtime: shiny
---

```{r global, include=FALSE}
library(ggplot2)
library(dplyr)
library(scales)
library(ggrepel)

WHOC_Sum_CMJ <- structure(list(Athlete = structure(c(1L, 1L, 1L, 7L, 7L, 7L, 
7L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 11L, 
11L, 11L, 11L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 13L, 14L, 14L, 
14L, 14L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 
5L, 5L, 5L, 6L, 6L, 6L, 6L), .Label = c("Athlete 1", "Athlete 10", 
"Athlete 11", "Athlete 12", "Athlete 13", "Athlete 14", "Athlete 2", 
"Athlete 3", "Athlete 4", "Athlete 5", "Athlete 6", "Athlete 7", 
"Athlete 8", "Athlete 9"), class = "factor"), Date = structure(c(1L, 
4L, 5L, 1L, 3L, 5L, 7L, 2L, 3L, 5L, 7L, 1L, 3L, 5L, 7L, 1L, 3L, 
5L, 7L, 1L, 3L, 6L, 7L, 2L, 4L, 5L, 8L, 1L, 3L, 5L, 7L, 1L, 3L, 
5L, 7L, 1L, 3L, 5L, 7L, 1L, 3L, 5L, 7L, 1L, 3L, 5L, 7L, 1L, 3L, 
6L, 7L, 1L, 3L, 5L, 7L), .Label = c("2020-01-06", "2020-01-07", 
"2020-01-13", "2020-01-14", "2020-01-21", "2020-01-23", "2020-01-27", 
"2020-01-28"), class = "factor"), Position = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L), .Label = c("DEF", "FWD", "GOALIE"), class = "factor"), 
    Program = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 1L, 1L, 1L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 
    1L, 1L, 1L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 
    4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L), .Label = c("Navy", "Red", "RTP", "White"), class = "factor"), 
    mRSI = c(0.36, 0.38, 0.42, 0.46, 0.46, 0.47, 0.48, 0.31, 
    0.3, 0.24, 0.3, 0.29, 0.26, 0.28, 0.28, 0.36, 0.35, 0.43, 
    0.43, 0.28, 0.31, 0.28, 0.3, 0.33, 0.36, 0.35, 0.37, 0.37, 
    0.36, 0.37, 0.36, 0.3, 0.36, 0.34, 0.37, 0.26, 0.28, 0.34, 
    0.3, 0.39, 0.4, 0.43, 0.43, 0.43, 0.47, 0.46, 0.48, 0.34, 
    0.36, 0.33, 0.37, 0.28, 0.28, 0.34, 0.33), SystemWeight = c(617.21, 
    612.4, 620.45, 672.08, 682.23, 670.5, 663.41, 517.33, 515.23, 
    511.62, 517.85, 697.55, 703.92, 689.43, 691.33, 859.06, 845.9, 
    850.97, 851.84, 655.79, 665.09, 673.91, 667.92, 626.78, 632.92, 
    634.52, 624.88, 637.55, 645.6, 648.78, 646.64, 558.03, 563.23, 
    569.58, 560.95, 693.63, 695.54, 684.37, 684.58, 641.18, 660.8, 
    663.95, 660, 594.92, 596.97, 591.36, 585.64, 522.35, 518.17, 
    530.95, 523.5, 780.65, 789.81, 775.84, 775.48), FTCT = c(0.61, 
    0.62, 0.67, 0.74, 0.75, 0.77, 0.77, 0.54, 0.55, 0.44, 0.53, 
    0.53, 0.49, 0.53, 0.56, 0.6, 0.58, 0.68, 0.68, 0.53, 0.57, 
    0.54, 0.55, 0.61, 0.63, 0.64, 0.65, 0.59, 0.58, 0.59, 0.59, 
    0.51, 0.59, 0.59, 0.59, 0.53, 0.57, 0.63, 0.59, 0.76, 0.76, 
    0.79, 0.78, 0.67, 0.72, 0.72, 0.74, 0.63, 0.65, 0.61, 0.63, 
    0.49, 0.5, 0.53, 0.57), JumpHeight_cm = c(28.97, 29.78, 31.43, 
    35.83, 35.41, 36.59, 36.92, 27.56, 26.11, 26.15, 26.82, 26.15, 
    25.08, 24.98, 24.62, 29.39, 30.17, 32.42, 32.56, 26.6, 27.25, 
    25.58, 27.88, 29.17, 31.58, 28.48, 31.24, 33.73, 32.78, 33.09, 
    33.43, 29.73, 31.91, 30.65, 32.98, 24.15, 24.24, 27.57, 25.44, 
    26.68, 26.39, 27.43, 28.87, 35.44, 36.29, 35.71, 36.06, 26.79, 
    27.76, 26.82, 29.71, 28.69, 26.9, 31.12, 29.77), EJH = c(17.6, 
    18.58, 21.11, 26.66, 26.69, 28.08, 28.38, 14.99, 14.39, 11.41, 
    14.33, 13.8, 12.34, 13.29, 13.67, 17.58, 17.5, 22.03, 22.19, 
    14.03, 15.59, 13.92, 15.39, 17.7, 19.75, 18.37, 20.3, 19.99, 
    18.9, 19.62, 19.61, 15.09, 18.8, 18.18, 19.6, 12.78, 13.87, 
    17.28, 15.06, 20.44, 20.12, 21.74, 22.52, 23.8, 26.25, 25.68, 
    26.73, 16.99, 18.13, 16.42, 18.82, 14.09, 13.43, 16.61, 16.9
    ), Weight = c(62.94, 62.45, 63.27, 68.54, 69.57, 68.38, 67.65, 
    52.76, 52.54, 52.17, 52.81, 71.13, 71.78, 70.31, 70.5, 87.61, 
    86.26, 86.78, 86.87, 66.88, 67.82, 68.72, 68.11, 63.92, 64.54, 
    64.71, 63.72, 65.02, 65.84, 66.16, 65.94, 56.91, 57.44, 58.09, 
    57.2, 70.74, 70.93, 69.79, 69.81, 65.39, 67.39, 67.71, 67.31, 
    60.67, 60.88, 60.31, 59.72, 53.27, 52.84, 54.15, 53.39, 79.61, 
    80.54, 79.12, 79.08)), class = "data.frame", row.names = c(NA, 
-55L))

WHOC_Sum_CMJ$Date <- as.Date(WHOC_Sum_CMJ$Date)

```

Column {.sidebar}
-----------------------------------------------------------------------

```{r}
checkboxGroupInput("Program", label = "Program", choices = unique(WHOC_Sum_CMJ$Program), selected = "Red", inline = TRUE)
# (Note: for the code I cut out some of the styling to make it more readable. That's why it looks different than the pictures). 
```

Column
-----------------------------------------------------------------------

```{r}
renderPlot({
  f <- WHOC_Sum_CMJ %>%
  dplyr::select(Date, Athlete, JumpHeight_cm, Program) %>%
  filter(Program %in% input$Program)

p <- ggplot(f) +
  geom_line(aes(x=Date, y=JumpHeight_cm, colour = Athlete)) +
  geom_point(aes(x=Date, y=JumpHeight_cm, colour = Athlete)) +
  theme_bw() +
  labs(title = "Team Jump Height", 
       x = "Date", 
       y = "Jump Height (cm)") +
  scale_x_date(limits = c(min = min(WHOC_Sum_CMJ$Date), max = max(WHOC_Sum_CMJ$Date)), labels = date_format("%m/%d"), 
               date_breaks = "2 weeks", expand = c(.08,0)) +
  guides(col = guide_legend(nrow = 3)) +
  geom_text_repel(data= subset(f, Date == min(Date)), aes(x=Date, y=JumpHeight_cm,label = unique(Athlete)),
                  force        = .1,
                  nudge_x      = -2,
                  direction    = "y",
                  hjust        = 1,
                  )
p
    })
```
...