Постійна помилка невірного стану графіки при використанні ggplot2


119

Я вважаю, що мій кадр даних добре, а мій код - це нормально. Насправді я усунув частини фрейму даних та більшість графічного коду, щоб зробити речі максимально базовими. Але все-таки я отримую:

Error in .Call.graphics(C_palette2, .Call(C_palette2, NULL)) : 
  invalid graphics state

Що тут не так? Ось дані:

 date   trt var val
1/8/2008    cc  sw5 0.2684138
1/8/2008    cc  sw15    0.2897586
1/8/2008    cc  sw5 0.2822414
2/8/2008    cc  sw5 0.2494583
2/8/2008    cc  sw5 0.2692917
2/8/2008    cc  sw15    0.2619167
2/8/2008    cc  sw5 0.204375
3/8/2008    cc  sw5 0.2430625
3/8/2008    cc  sw5 0.2654375
3/8/2008    cc  sw5 0.2509583
3/8/2008    cc  sw5 0.2055625
1/8/2008    ccw sw15    0.2212414
1/8/2008    ccw sw5 0.3613448
1/8/2008    ccw sw5 0.2607586
2/8/2008    ccw sw5 0.2087917
2/8/2008    ccw sw15    0.3390417
2/8/2008    ccw sw5 0.2436458
2/8/2008    ccw sw5 0.290875
3/8/2008    ccw sw5 0.20175
3/8/2008    ccw sw15    0.328875
3/8/2008    ccw sw5 0.2328958
3/8/2008    ccw sw5 0.2868958

Під час роботи з цими даними я вказую такі дати:

df<-df[order(as.Date(df$date,format="%d/%m/%Y")),,drop=FALSE]

і тут я хочу зробити розсип:

ggplot(data = df,aes(x = date,y = val)) + 
 geom_point(aes(group = trt))

3
Ви спробували (пере) встановити ggplot2?
— Пол Хіемстра

Я додав це як відповідь, таким чином інші люди можуть легше знайти відповідь. Ви можете прийняти відповідь, натиснувши галочку біля моєї відповіді. Просто для підтвердження, ви ggplot2встановили спочатку?
— Пол Хіемстра

Так, це вже було встановлено.
— Nazer

3
перезапуск сеансу R вирішив мою проблему.
— Кріс

FYI - ця проблема також може виникнути, якщо ви намагаєтеся побудувати використані розміри фігур, які є занадто малими (наприклад, намагаючись надати розміри в дюймах, не вказуючи одиницю).
— Кіт Х'югітт

Відповіді:


353

Я зіткнувся з цією ж помилкою і вирішив її, запустивши:

dev.off()

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


1
Це вирішує проблему, але чи маєте ви уявлення, чому це відбувається?
— Педро Кавальканте

2
@PedroCavalcanteOliveira У мене виникла проблема після використання par(mfrow = c(..., ...))раніше. Не знайте про інші графічні параметри, але вони можуть спричинити цю проблему.
— loki

1
Це допомогло, але що це робить?
— vasili111

9

Рішення - просто перевстановити ggplot2. Можливо, існує несумісність між використовуваною вами версією R та встановленою версією ggplot2. Крім того, під час встановлення ggplot2раніше щось може піти не так , що призведе до проблеми.


4
Дякуємо, що зберегли цю відповідь тут. Хоча інша відповідь простіша, dev.off()для мене не вийшло, і є гарним другим варіантом спробувати перевстановити ggplot2.
— Назер

Можливо, краще спробувати dev.off()спочатку, це займе менше часу, ніж перевстановити пакет. Це може бути другим кроком, якщо dev.off()не вийшло.
— Гол Джейсона

6

Я виявив, що це відбувається, коли ви змішуєте ggplot-графіки з графіками сюжетів в одному сеансі. Використовуючи рішення "dev.off", запропоноване Полом, вирішує проблему.


Що dev.off'робить?
— vasili111

4

Вам, ймовірно, не потрібно перевстановлювати ggplot2

Рішення: поверніться до сюжету, який раніше не працював. Візьмемо, наприклад, консольний висновок нижче. Поле фігури (вікно, яке відображає ваші графіки) було занадто малим для відображення пар (MinusInner). Потім, коли я спробував зробити наступний qplot, R все ще був відключений від попередньої помилки.

пари (MinusInner) Помилка в plot.new (): надмірна межа фігури qplot (Sample.Type, BAE, data = MinusInner, geom = "boxplot") Помилка в .Call.graphics (C_palette2, .Call (C_palette2, NULL) ): недійсний стан графіки

Я виправив першу помилку, розширивши вікно сюжету та повторно повторивши пар (MinusInner). Тоді звинувачуйте, це спрацювало.

пар (MinusInner) qplot (Sample.Type, BAE, дані = MinusInner, geom = "boxplot")


0

Я вирішив це, очистивши всі ділянки в консолі, а потім переконавшись, що площа ділянки була достатньо великою, щоб вмістити те, що я створював.


0

спробувати вийти з Графіком x11()або win.graph()і вирішити цю проблему.

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