Не знаю, как добавить o к сюжету с пакетом R dbplot - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь добавить легенду в коробочный сюжет, который я создал с помощью R-пакета dbplot. К сожалению, я получаю сообщение об ошибке:

"Don't know how to add o to a plot"

Вот мой пример кода: (Я добавил образцы данных, но я загружаю данные из таблицы spark! )

cars <- c(27,37,9,11,47,29,39,41,18,30)
cars_s <- c(0,99,10,0,0,0,0,0,10,10)
sample_data <- data.frame(cars, cars_s)

sparkTable %>% 
   filter(cars > -1) %>% 
   dbplot_boxplot(x = cars_s, var = cars, coef = 1.5) +
   ggtitle("Boxplot Title") +
   labs(x = "status", y = "cars") +
   legend("topright", inset = .05, title = "Status", legend = as.character(c("0", "1", "2"))) + 
  theme_bw()

Вывод моего боксплота выглядит так без легендарной линии

enter image description here

Как описано, я не могу добавить легенду.

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Это потому, что dbplot_boxplot() в dbplot не поддерживает легенды.

Если бы это был обычный data.frame, вы бы просто добавили color = x:

  library(tidyverse)
  mtcars %>% 
    mutate(cyl = as.factor(cyl)) %>% 
ggplot(aes(x = cyl, y = mpg, color = cyl)) +
  geom_boxplot()

Создано в 2019-05-07 пакетом представ. (v0.2.1.9000)

Однако при работе с базой данных вы всегда должны вычислять в базе данных, а затем собирать в память в R. dbplot - это пакет, который делает это и готовит для вас графики. Теперь боксовые диаграммы немного особенные, потому что вам нужно вычислить количество столбцов, таких как quartiles, inter range quartiles и так далее. Таким образом, сделать это вручную может быть довольно сложно, поскольку легенда не добавит никакой необходимой информации в вашем случае.

Однако, если вы считаете, что пакет должен добавить эту функцию, вы можете оставить запрос функции в качестве проблемы на Github пакета: https://github.com/edgararuiz/dbplot/issues

0 голосов
/ 07 мая 2019

Как предложил FilipW, я оставил запрос на функцию и очень быстро получил ответ от разработчика dbplot. Его ответ решил мою проблему. Он написал мне, что я должен работать с db_compute_boxplot вместо dbplot_boxplot . Поскольку db_compute_boxplot возвращает фрейм данных с вычислениями boxplot. Таким образом, можно вручную добавить boxplot и цвета:

sparkTable %>% 
   filter(cars > -1) %>% 
   db_compute_boxplot(x = cars_s, var = cars, coef = 1.5) +
   ggplot() +
   ggtitle("Boxplot Title") +
   labs(x = "status", y = "cars") +
   theme_bw() +
   geom_boxplot(
    aes(
      x = cars_s,
      ymin = ymin,
      lower = lower,
      middle = middle,
      upper = upper,
      ymax = ymax,
      color = as.factor(cars_s),
    ),
    stat = "identity"
  )

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...