Ділянки ggplot у сценаріях не відображаються в Rstudio


82

У мене дивна проблема з Rstudio: якщо сценарій викликає функції ggplot2 для відображення сюжету, то використання Source для запуску сценарію не створює графіків. Якщо я виділю весь сценарій за допомогою Ctrl+A, а потім запустити поточний рядок або виділення ( Ctrl+Enter), тоді графік буде відображатися. Аналогічним чином, введення команд побудови графіку в консолі видає правильний результат.

Наприклад:

library(ggplot2)

p = ggplot(mtcars, aes(wt, mpg))
p + geom_point()

Виводитиметься лише за умови вставлення в консоль, а не за джерелом.

Є інші запитання щодо цього, але жодне не корисне:

Як я можу змусити Rstudio відображати графіки, коли скрипт отриманий? Я використовую Rstudio 0.98.1062 та R 3.1.1.

Відповіді:


129

Рішення полягає в явному виклику print()об'єкта ggplot:

library(ggplot2)

p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
print(p)

ggplotфункція повертає об'єкт класу ggplot; ggplot2 працює, перевантажуючи printфункцію, щоб поводитися по-різному на об'єкти класу ggplot - замість того, щоб друкувати їх у STDOUT, він створює діаграму.

Все працює добре в інтерактивному режимі, оскільки R передбачає, що більшість команд виконуються через print()функцію. Це для нашої зручності і дозволяє нам вводити rnorm(1)та отримувати будь-які видимі результати. Коли використовується команда Виконати поточний вибір ( Ctrl+Enter), RStudio поводиться так, ніби кожен вибраний рядок набраний в інтерактивному режимі та запущений. Ви можете це перевірити, перевіривши історію команд на Consoleпанелі після запуску декількох вибраних рядків.

Але цей зручний режим відмовляється від читання файлу source(). Оскільки ця функція призначена для запуску (потенційно довгих та обчислювально обчислених) сценаріїв R, небажано забруднювати STDOUT повідомленнями з низьким пріоритетом. Ось чому source()за замовчуванням виводиться лише повідомлення про помилку. Якщо ви хочете чогось іншого, ви повинні прямо просити про це.


20

хоча це досить давнє запитання. У мене була та сама проблема, і я знайшов швидке рішення, якщо ви хочете скористатися кнопкою "джерело" у вікні редагування R studio.

ви можете просто увімкнути "джерело з відлунням" (Ctrl + Shift + Enter), і сюжет відображається, як очікувалося


1
Чудово, не знав цього! Це чудово додає пояснення, подане @ Mirosław Zalewski.
Уве


2

Я знайшов це питання під час пошуку подібної проблеми (графіки не відображаються в RStudio). Я намагався усунути складний блок ggplot2, запускаючи його частинами, але не міг отримати нічого, щоб відобразитися у вікні графіка.

Причина: tiff()функція, яку я відкрив раніше, не закривалася.

Рішення: Я запускав dev.off()кілька разів, поки всі мої попередні tiff()функції не завершились, тоді я зміг створити графіки в RStudio і переглянути результати у вікні графіку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.