ข้อผิดพลาดสถานะกราฟิกที่ไม่ถูกต้องถาวรเมื่อใช้ 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]

และที่นี่ฉันต้องการสร้าง scatterplot:

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

3
คุณได้ลองติดตั้ง ggplot2 แล้วหรือยัง?
Paul Hiemstra

ฉันเพิ่มสิ่งนี้เป็นคำตอบเพื่อให้คนอื่นหาคำตอบได้ง่ายขึ้น คุณยอมรับคำตอบได้โดยคลิกที่เครื่องหมายถูกข้างคำตอบของฉัน เพื่อยืนยันว่าคุณได้ggplot2ติดตั้งไว้แล้วหรือไม่?
Paul Hiemstra

ใช่มันได้รับการติดตั้งแล้ว
Nazer

3
การรีสตาร์ทเซสชัน R ช่วยแก้ปัญหาของฉันได้
คริส

FYI - ปัญหานี้อาจเกิดขึ้นได้หากคุณพยายามสร้างใช้ขนาดของรูปที่เล็กเกินไป (เช่นพยายามให้ขนาดเป็นนิ้วโดยไม่ระบุหน่วย)
Keith Hughitt

คำตอบ:


353

ฉันพบข้อผิดพลาดเดียวกันนี้และแก้ไขโดยเรียกใช้:

dev.off()

แล้วเรียกใช้พล็อตอีกครั้ง ฉันคิดว่าอุปกรณ์กราฟิกก่อนหน้านี้ยุ่งอยู่แล้วโดยการส่งออกกราฟิกบางส่วนและไม่ได้รับการรีเซ็ต สิ่งนี้ใช้ได้ผลสำหรับฉันและมันง่ายกว่าการติดตั้ง ggplot2 ใหม่


1
วิธีนี้ช่วยแก้ปัญหาได้ แต่คุณมีความคิดว่าเหตุใดจึงเป็นเช่นนั้น
Pedro Cavalcante

2
@PedroCavalcanteOliveira ฉันมีปัญหาหลังจากที่ฉันใช้par(mfrow = c(..., ...))ก่อนหน้านี้ ไม่ทราบเกี่ยวกับพารามิเตอร์กราฟิกอื่น ๆ แต่อาจทำให้เกิดปัญหานี้
โลกิ

1
มันช่วยได้ แต่อะไรคืออะไร?
vasili111

9

ggplot2การแก้ปัญหาก็คือการติดตั้ง อาจมีความเข้ากันไม่ได้ระหว่างเวอร์ชัน R ที่คุณใช้และเวอร์ชันที่ติดตั้งของggplot2คุณ หรืออาจมีบางอย่างผิดพลาดขณะติดตั้งggplot2ก่อนหน้านี้ซึ่งเป็นสาเหตุของปัญหาที่คุณเห็น


4
ขอขอบคุณที่เก็บคำตอบนี้ไว้ที่นี่ แม้ว่าคำตอบอื่นจะง่ายกว่า แต่dev.off()ก็ไม่ได้ผลสำหรับฉันและเป็นตัวเลือกที่สองที่ดีในการลองติดตั้ง ggplot2 ใหม่
Nazer

อาจจะดีกว่าถ้าลองdev.off()ก่อนใช้เวลาน้อยกว่าติดตั้งแพ็คเกจใหม่ นี่อาจเป็นขั้นตอนที่สองหากdev.off()ไม่ได้ผล
Jason Goal

6

ฉันพบว่าสิ่งนี้เกิดขึ้นเมื่อคุณผสมแผนภูมิ ggplot กับแผนภูมิพล็อตในเซสชันเดียวกัน การใช้โซลูชัน 'dev.off' ที่แนะนำโดย Paul ช่วยแก้ปัญหาได้


อะไร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, data = MinusInner, geom = "boxplot")


0

ฉันแก้ไขสิ่งนี้โดยการล้างพล็อตทั้งหมดในคอนโซลจากนั้นตรวจสอบให้แน่ใจว่าพื้นที่พล็อตใหญ่พอที่จะรองรับสิ่งที่ฉันกำลังสร้าง


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.