Kesalahan status grafik tidak valid yang terus-menerus saat menggunakan ggplot2

119

Saya yakin kerangka data saya baik-baik saja dan kode saya baik-baik saja. Nyatanya, saya telah menghilangkan bagian dari dataframe dan sebagian besar kode grafik untuk membuat semuanya sesederhana mungkin. Tapi tetap saja, saya mendapatkan:

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

Ada apa disini? Berikut datanya:

 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

Ketika saya bekerja dengan data ini, saya menentukan tanggal seperti ini:

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

dan di sini saya ingin membuat sebar:

ggplot(data = df,aes(x = date,y = val)) + 
 geom_point(aes(group = trt))
Nazer
sumber
3
Sudahkah Anda mencoba menginstal (ulang) ggplot2?
Paul Hiemstra
Saya menambahkan ini sebagai jawaban, dengan begitu orang lain dapat menemukan jawabannya dengan lebih mudah. Anda dapat menerima jawaban dengan mengklik tanda centang di sebelah kanan jawaban saya. Sekadar konfirmasi, Anda telah ggplot2menginstal aslinya?
Paul Hiemstra
Ya, itu sudah terpasang.
Nazer
3
memulai kembali sesi R memecahkan masalah saya.
Chris
FYI - masalah ini juga dapat muncul jika Anda mencoba untuk membangun menggunakan dimensi gambar yang terlalu kecil (misalnya mencoba memberikan dimensi dalam inci tanpa menentukan unit).
Keith Hughitt

Jawaban:

353

Saya mengalami kesalahan yang sama dan menyelesaikannya dengan menjalankan:

dev.off()

dan kemudian menjalankan plot lagi. Saya pikir perangkat grafis itu kacau sebelumnya entah bagaimana dengan mengekspor beberapa grafik dan itu tidak diatur ulang. Ini berhasil untuk saya dan lebih sederhana daripada menginstal ulang ggplot2.

paul
sumber
1
Ini menyelesaikan masalah, tetapi apakah Anda tahu mengapa itu terjadi?
Pedro Cavalcante
2
@PedroCavalcanteOliveira Saya punya masalah, setelah saya gunakan par(mfrow = c(..., ...))sebelumnya. Tidak tahu tentang parameter grafis lain tetapi mereka mungkin menyebabkan masalah ini.
loki
1
Ini membantu tapi apa fungsinya?
vasili111
9

Solusinya adalah dengan menginstal ulang ggplot2. Mungkin ada ketidakcocokan antara versi R yang Anda gunakan, dan versi yang Anda instal ggplot2. Atau, ada yang tidak beres saat menginstal ggplot2sebelumnya, menyebabkan masalah yang Anda lihat.

Paul Hiemstra
sumber
4
Terima kasih telah menyimpan jawaban ini di sini. Meskipun jawaban lain lebih sederhana, dev.off()tidak berhasil untuk saya dan ini adalah pilihan kedua yang bagus untuk mencoba menginstal ulang ggplot2.
Nazer
Mungkin lebih baik mencoba dev.off()dulu, membutuhkan waktu lebih sedikit daripada menginstal ulang paket. Ini bisa menjadi langkah kedua jika dev.off()tidak berhasil.
Jason Goal
6

Saya menemukan ini terjadi ketika Anda mencampur grafik ggplot dengan grafik plot dalam sesi yang sama. Menggunakan solusi 'dev.off' yang disarankan oleh Paul memecahkan masalah tersebut.

Ernie
sumber
Apa dev.off'?
vasili111
4

Anda mungkin tidak perlu menginstal ulang ggplot2

Solusi: kembali ke plot yang sebelumnya tidak berfungsi. Ambil output konsol di bawah ini sebagai contoh. Margin gambar (jendela yang menampilkan plot Anda) terlalu kecil untuk menampilkan plot pasangan (MinusInner). Kemudian ketika saya mencoba membuat qplot berikutnya, R masih menutup kesalahan sebelumnya.

pasangan (MinusInner) Kesalahan dalam plot.new (): margin gambar qplot terlalu besar (Sample.Type, BAE, data = MinusInner, geom = "boxplot") Kesalahan di .Call.graphics (C_palette2, .Call (C_palette2, NULL) ): status grafik tidak valid

Saya memperbaiki kesalahan pertama dengan memperluas jendela plot dan menjalankan kembali plot pasangan (MinusInner). Kalau begitu salah, itu berhasil.

pasang (MinusInner) qplot (Sample.Type, BAE, data = MinusInner, geom = "boxplot")

DjBabyKangaroo
sumber
0

Saya menyelesaikan ini dengan membersihkan semua plot di konsol dan kemudian memastikan area plot cukup besar untuk mengakomodasi apa yang saya buat.

bunga aster
sumber
0

mencoba untuk keluar dari grafics dengan x11()atau win.graph()dan memecahkan masalah ini.

MauroMardones
sumber