Хобрук: Ваш путь к мастерству в программировании

Объект ошибки ggplot geom_rect () не найден

Я пытаюсь построить geom_rect(). Почему я получаю Error in FUN(X[[i]], ...) : object 'Month' not found? Если я запустил df$Month в своей консоли, объект будет там:

df$Month
#> [1] 2019-01 2019-02 2019-03
#> Levels: 2019-01 2019-02 2019-03

Вот мой блок кода:

library(tidyverse)
df <- tibble(Month = factor(c("2019-01", "2019-02", "2019-03")), 
             Value = c(4, 9, 7))

ggplot(df, aes(Month, Value, group = 1)) + 
  geom_line() + 
  theme_minimal() + 
  geom_rect(data = 
              data.frame(xmin = min(as.integer(df$Month)) - 0.5,
                         xmax = max(as.integer(df$Month)) + 0.5,
                         ymin = min(df$Value),
                         ymax = max(df$Value)),
            aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
            alpha = 0.2, fill = "green")

#> Error in FUN(X[[i]], ...) : object 'Month' not found
22.03.2019

  • Я думаю, вам нужно отменить отображение x и y, установив x = NULL, y = NULL в geom_rect, но, перечитав документы, я чувствую, что они могли бы прояснить это. Они как бы подразумевают, что geom_rect вообще не принимает x / y. 22.03.2019
  • Кажется, что для достижения желаемого результата нужно использовать theme(), а не geom_rect(). 22.03.2019

Ответы:


1

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

ggplot(df, aes(Month, Value, group = 1)) + 
  geom_line() + 
  theme_minimal() + 
  geom_rect(aes(xmin = min(as.integer(Month)) - 0.5, 
                xmax = max(as.integer(Month)) + 0.5, 
                ymin = min(Value), 
                ymax = max(Value)),
            alpha = 0.2/nrow(df), fill = "green")
             
22.03.2019

2

Мне удалось вернуть желаемый результат, позвонив df в geom_line() после gemo_rect(). Однако, оставив поле Месяц без изменений, возвращается ошибка: Ошибка: дискретное значение передается в непрерывную шкалу.
Я решил эту проблему, заключив as.integer() в Месяц < / em>.

ggplot() + 
  theme_minimal() + 
  geom_rect(data = 
              data.frame(xmin = min(as.integer(df$Month)) - 0.5,
                         xmax = max(as.integer(df$Month)) + 0.5,
                         ymin = min(df$Value),
                         ymax = max(df$Value)),
            aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
            alpha = 0.2, fill = "green") + 
  geom_line(data = df, aes(as.integer(Month), Value, group = 1))

введите описание изображения здесь

Возможно, вам придется очистить метку оси X, но это приведет к желаемому результату!

22.03.2019

3

Это работает:

ggplot(df, aes(Month, Value, group = 1)) + 
  geom_line() + 
  theme_minimal() + 
  geom_rect(data = 
              data.frame(xmin = min(as.integer(df$Month)) - 0.5,
                         xmax = max(as.integer(df$Month)) + 0.5,
                         ymin = min(df$Value),
                         ymax = max(df$Value)),
            aes(x = NULL,y = NULL,xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
            alpha = 0.2, fill = "green")

отключив унаследованную эстетику x / y от верхнего вызова ggplot. Впрочем, понятно, что это может сбивать с толку, поскольку описание в ?geom_rect sorta kinda подразумевает, что geom_rect вообще не ищет такой эстетики.

22.03.2019
  • inherit.aes = F также работает вместо установки x и y на NULL. 28.03.2019
  • Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..


    © 2024 hobruk.ru, Хобрук: Ваш путь к мастерству в программировании