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를 (재) 설치해 보셨습니까?
Paul Hiemstra

다른 사람들이 더 쉽게 답을 찾을 수 있도록 이것을 답으로 추가했습니다. 내 답변 옆에있는 체크 표시를 클릭하여 답변을 수락 할 수 있습니다. 확인하기 위해 ggplot2원래 설치 했습니까?
Paul Hiemstra 2013

예, 이미 설치되었습니다.
Nazer

3
R 세션을 다시 시작하면 문제가 해결되었습니다.
크리스

참고-이 문제는 너무 작은 그림 치수를 사용하려는 경우에도 발생할 수 있습니다 (예 : 단위를 지정하지 않고 치수를 인치 단위로 제공하려는 경우).
Keith Hughitt

답변:


353

이 같은 오류가 발생하여 다음을 실행하여 해결했습니다.

dev.off()

그런 다음 플롯을 다시 실행합니다. 그래픽 장치가 일부 그래픽을 내 보내서 어떻게 든 엉망이되었고 재설정되지 않은 것 같습니다. 이것은 나를 위해 일했으며 ggplot2를 다시 설치하는 것보다 간단합니다.


1
이것은 문제를 해결하지만 그 이유에 대해 알고 있습니까?
Pedro Cavalcante 2018 년

2
@PedroCavalcanteOliveira par(mfrow = c(..., ...))전에 사용한 후에 문제가 발생했습니다 . 다른 그래픽 매개 변수에 대해서는 모르지만이 문제가 발생할 수 있습니다.
loki dec.

1
도움이되었지만 무엇입니까?
vasili111

9

해결책은 간단히 ggplot2. 사용중인 R 버전과 설치된 버전 사이에 비 호환성이있을 수 있습니다 ggplot2. 또는 ggplot2이전에 설치하는 동안 문제가 발생하여 문제가 발생할 수 있습니다.


4
이 답변을 여기에 보관 해 주셔서 감사합니다. 다른 대답은 더 간단하지만 dev.off()저에게는 작동하지 않았으며 ggplot2를 다시 설치하는 좋은 두 번째 옵션입니다.
Nazer

dev.off()먼저 시도하는 것이 더 좋을 수 있으며 패키지를 다시 설치하는 것보다 시간이 덜 걸립니다. dev.off()작동하지 않으면 두 번째 단계가 될 수 있습니다 .
Jason Goal

6

동일한 세션에서 ggplot 차트와 플롯 차트를 혼합하면 이런 일이 발생한다는 것을 알았습니다. Paul이 제안한 'dev.off'솔루션을 사용하면 문제가 해결됩니다.


무엇입니까 dev.off'?
vasili111

4

ggplot2를 다시 설치할 필요가 없습니다.

솔루션 : 이전에 작동하지 않았던 플롯으로 돌아갑니다. 예를 들어 아래 콘솔 출력을 사용하십시오. Figure 여백 (플롯을 표시하는 창)이 너무 작아 쌍 (MinusInner) 플롯을 표시 할 수 없습니다. 그런 다음 다음 qplot을 만들려고 할 때 R은 여전히 ​​이전 오류에 중단되었습니다.

pair (MinusInner) Error in plot.new () : Figure margins too large qplot (Sample.Type, BAE, data = MinusInner, geom = "boxplot") Error in .Call.graphics (C_palette2, .Call (C_palette2, NULL) ) : 잘못된 그래픽 상태

플롯 창을 확장하고 pair (MinusInner) 플롯을 다시 실행하여 첫 번째 오류를 수정했습니다. 그런 다음 작동했습니다.

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


0

콘솔에서 모든 플롯을 지운 다음 플롯 영역이 내가 만들고있는 것을 수용 할 수있을만큼 충분히 큰지 확인하여이 문제를 해결했습니다.


0

와 grafics을 얻으려고 x11()하거나 win.graph()이 문제를 해결한다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.