Ggplot2 kullanılırken kalıcı geçersiz grafik durumu hatası


119

Veri çerçevemin iyi olduğuna ve kodumun iyi olduğuna inanıyorum. Aslında, işleri olabildiğince basit hale getirmek için veri çerçevesinin bazı kısımlarını ve grafik kodunun çoğunu kaldırdım. Ama yine de anlıyorum:

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

Burada sorun ne? Veriler şu şekildedir:

 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

Bu verilerle çalışırken, şu şekilde tarihler belirlerim:

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

ve burada bir dağılım grafiği yapmak istiyorum:

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

3
Ggplot2'yi yüklemeyi (yeniden) denediniz mi?
Paul Hiemstra

Bunu bir cevap olarak ekledim, böylece diğer insanlar cevabı daha kolay bulabilir. Cevabımın hemen yanındaki onay işaretine tıklayarak cevabı kabul edebilirsiniz. Sadece onaylamak için, ggplot2orijinal olarak yüklediniz mi?
Paul Hiemstra

Evet, zaten kurulmuştu.
Nazer

3
R oturumunu yeniden başlatmak sorunumu çözdü.
Chris

Bilginize - Bu sorun, çok küçük kullanım şekil boyutları oluşturmaya çalışırsanız da ortaya çıkabilir (örneğin, birimi belirtmeden boyutları inç cinsinden sağlamaya çalışmak).
Keith Hughitt

Yanıtlar:


353

Aynı hatayla karşılaştım ve şunu çalıştırarak çözdüm:

dev.off()

ve sonra arsa tekrar çalıştırılıyor. Sanırım grafik cihazı bazı grafikleri dışa aktararak bir şekilde daha önce karıştırıldı ve sıfırlanmadı. Bu benim için çalıştı ve ggplot2'yi yeniden yüklemekten daha basit.


1
Bu sorunu çözer, ancak neden olduğu konusunda herhangi bir fikriniz var mı?
Pedro Cavalcante

2
@PedroCavalcanteOliveira Daha par(mfrow = c(..., ...))önce kullandıktan sonra sorun yaşadım . Diğer grafik parametrelerini bilmiyorum ama bu soruna neden olabilirler.
loki

1
Yardımcı oldu ama ne işe yarıyor?
vasili111

9

Çözüm, basitçe yeniden yüklemektir ggplot2. Belki kullandığınız R sürümü ile kurulu sürümünüz arasında bir uyumsuzluk vardır ggplot2. Alternatif olarak, ggplot2daha önce yüklerken bir şeyler ters gitmiş ve gördüğünüz soruna neden olmuş olabilir .


4
Bu cevabı burada tuttuğunuz için teşekkürler. Diğer cevap daha basit olmasına rağmen, dev.off()benim için işe yaramadı ve ggplot2'yi yeniden yüklemeyi denemek için iyi bir ikinci seçenek.
Nazer

İlk önce denemek daha iyi olabilir dev.off(), paketi yeniden yüklemekten daha az zaman alır. dev.off()İşe yaramadıysa bu ikinci bir adım olabilir .
Jason Goal

6

Aynı oturumda ggplot grafiklerini çizim grafikleriyle karıştırdığınızda bunun meydana geldiğini buldum. Paul tarafından önerilen 'dev.off' çözümünü kullanmak sorunu çözer.


Ne dev.off'yapar?
vasili111

4

Muhtemelen ggplot2'yi yeniden yüklemenize gerek yoktur

Çözüm: Daha önce çalışmayan arsaya geri dönün. Örneğin aşağıdaki konsol çıktısını alın. Şekil kenar boşlukları (grafiklerinizi görüntüleyen pencere), çiftleri (Eksi İç) grafiğini görüntülemek için çok küçüktü. Sonra bir sonraki qplot'u yapmaya çalıştığımda, R hala önceki hatada kapatıldı.

çiftler (MinusInner) plot.new () 'de hata: şekil kenar boşlukları çok büyük qplot (Sample.Type, BAE, data = MinusInner, geom = "boxplot") .Call.graphics'te hata (C_palette2, .Call (C_palette2, NULL) ): geçersiz grafik durumu

İlk hatayı çizim penceresini genişleterek ve çiftleri (MinusInner) grafiğini yeniden çalıştırarak düzelttim. Sonra suçlama, işe yaradı.

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


0

Bunu konsoldaki tüm grafikleri temizleyerek ve ardından arsa alanının yaratmakta olduğum şeyi barındıracak kadar büyük olduğundan emin olarak çözdüm.


0

x11()veya ile grafik çıkarmaya win.graph()ve bu sorunu çözmeye çalışın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.