Lỗi trạng thái đồ họa không hợp lệ liên tục khi sử dụng ggplot2


119

Tôi tin rằng khung dữ liệu của tôi ổn và mã của tôi ổn. Trên thực tế, tôi đã loại bỏ các phần của khung dữ liệu và hầu hết mã vẽ đồ thị để làm cho mọi thứ trở nên cơ bản nhất có thể. Nhưng tôi vẫn nhận được:

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

Có gì sai ở đây? Đây là dữ liệu:

 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

Khi tôi làm việc với dữ liệu này, tôi chỉ định các ngày như sau:

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

và ở đây tôi muốn tạo biểu đồ phân tán:

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

3
Bạn đã thử cài đặt lại ggplot2 chưa?
Paul Hiemstra

Tôi đã thêm câu trả lời này như một câu trả lời, theo cách đó những người khác có thể tìm thấy câu trả lời dễ dàng hơn. Bạn có thể chấp nhận câu trả lời bằng cách nhấp vào dấu tích ngay bên cạnh câu trả lời của tôi. Chỉ để xác nhận, bạn đã ggplot2cài đặt ban đầu?
Paul Hiemstra

Có, nó đã được cài đặt.
Nazer

3
khởi động lại phiên R đã giải quyết được vấn đề của tôi.
Chris

FYI - vấn đề này cũng có thể phát sinh nếu bạn cố gắng sử dụng các kích thước hình quá nhỏ (ví dụ: cố gắng cung cấp kích thước theo inch mà không chỉ định đơn vị).
Keith Hughitt

Câu trả lời:


353

Tôi đã gặp phải lỗi tương tự này và đã giải quyết nó bằng cách chạy:

dev.off()

và sau đó chạy lại cốt truyện. Tôi nghĩ rằng thiết bị đồ họa trước đó đã bị rối bằng cách nào đó do xuất một số đồ họa và nó không được đặt lại. Điều này phù hợp với tôi và nó đơn giản hơn việc cài đặt lại ggplot2.


1
Điều này giải quyết được vấn đề, nhưng bạn có biết tại sao nó lại như vậy không?
Pedro Cavalcante

2
@PedroCavalcanteOliveira Tôi đã gặp sự cố sau khi tôi sử dụng par(mfrow = c(..., ...))trước đó. Không biết về các thông số đồ họa khác nhưng chúng có thể gây ra sự cố này.
loki

1
Nó đã giúp nhưng những gì là không?
vasili111

9

Giải pháp là chỉ cần cài đặt lại ggplot2. Có thể có sự không tương thích giữa phiên bản R bạn đang sử dụng và phiên bản đã cài đặt của bạn ggplot2. Ngoài ra, có thể đã xảy ra lỗi khi cài đặt ggplot2trước đó, gây ra sự cố mà bạn thấy.


4
Cảm ơn vì đã giữ câu trả lời này ở đây. Mặc dù câu trả lời khác đơn giản hơn dev.off()nhưng không phù hợp với tôi và đó là một lựa chọn tốt thứ hai để thử cài đặt lại ggplot2.
Nazer

Nó có thể tốt hơn để thử dev.off()trước, mất ít thời gian hơn so với gói cài đặt lại. Đây có thể là bước thứ hai nếu dev.off()không hiệu quả.
Mục tiêu của Jason

6

Tôi thấy điều này xảy ra khi bạn trộn biểu đồ ggplot với biểu đồ âm mưu trong cùng một phiên. Sử dụng giải pháp 'dev.off' do Paul đề xuất sẽ giải quyết được vấn đề.


Cái gì dev.off'?
vasili111

4

Bạn có thể không cần cài đặt lại ggplot2

Giải pháp: quay lại cốt truyện không hoạt động trước đó. Lấy ví dụ đầu ra bảng điều khiển bên dưới. Lề hình (cửa sổ hiển thị các ô của bạn) quá nhỏ để hiển thị các ô của cặp (MinusInner). Sau đó, khi tôi cố gắng thực hiện qplot tiếp theo, R vẫn bị treo do lỗi trước đó.

cặp (MinusInner) Lỗi trong plot.new (): lề hình qplot quá lớn (Sample.Type, BAE, data = MinusInner, geom = "boxplot") Lỗi trong .Call.graphics (C_palette2, .Call (C_palette2, NULL) ): trạng thái đồ họa không hợp lệ

Tôi đã sửa lỗi đầu tiên bằng cách mở rộng cửa sổ âm mưu và chạy lại âm mưu của các cặp (MinusInner). Sau đó, blam, nó hoạt động.

cặp (MinusInner) qplot (Sample.Type, BAE, data = MinusInner, geom = "boxplot")


0

Tôi đã giải quyết vấn đề này bằng cách xóa tất cả các ô trong bảng điều khiển và sau đó đảm bảo rằng diện tích ô đủ lớn để chứa những gì tôi đang tạo.


0

cố gắng thoát ra khỏi grafics với x11()hoặc win.graph()và giải quyết rắc rối này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.