2014-09-19 2 views
12

"merged"라는 데이터 세트가 있습니다. 여기에는 3 개의 숫자 열 "pauseMedian"및 "numTotalPauses"및 "diff"가 있습니다. 또한 숫자 열 "pauseMedian"과 "numTotalPauses"및 6 레벨 요소 "마이크로 스타일"이 포함 된 스플라인 헐 데이터 세트가 있습니다ggplot2 오류 : 연속 눈금에 공급 된 이산 값

다음 코드는 완벽하게 작동합니다. 그것은 산란 플롭을 플롯 한 다음 "마이크로 스타일"에 따라 색상이 지정된 껍질 모양의 다각형으로 오버레이합니다.

스크립트 1 :

ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses)) 
     + geom_point() 
     + geom_polygon(data = splineHull, 
         mapping=aes(x=pauseMedian, 
            y=numTotalPauses, 
            group=microstyle, 
            color = microstyle), 
         alpha=0) 

그럼, 또한 하나의 속성 색상 = DIFF을 추가하여 산포도에있는 점의 색상을 변경하고 싶습니다.

스크립트 2 :

Error: Discrete value supplied to continuous scale 

나는이 오류가 왜 모르겠어요 :

ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff)) 
     + geom_point() 
     + geom_polygon(data = splineHull, 
         mapping=aes(x=pauseMedian, 
            y=numTotalPauses, 
            group=microstyle, 
            color = microstyle), 
         alpha=0) 

나는 다음과 같은 오류를 참조하십시오. 컬러 스 캐터 플롯이 필요하지만 폴리곤이 없으면 다음 코드를 실행하여 다시 작동합니다.

스크립트 3 :

ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff)) 
     + geom_point() 

그래서, 무슨 일이 스크립트 2 일어났다는에서 오류가 어디이고, 나는 그것이 작동하는 방법을 만들 수 있습니까?

+0

이상한 것처럼 보입니다. 예제 데이터를 보지 않고도 오류를 정확히 찾아내는 것은 어렵습니다. 또한'color = diff'를'geom_point (aes (color = diff))'로 옮겨 보았습니까? –

+0

@ SeñorO 안녕하세요, 네, 시도했습니다. 그것은 같은 오류를 주었다. 스크립트 2에는 두 개의 색상 속성이 있습니다. 하나는 ggplot에, 다른 하나는 geom_polygon에 있습니다. 전자에는 숫자 값 "diff"가 지정되고 후자에는 요소 값 "microstyle"이 지정됩니다. 아마도 ggplot은 숫자 색상과 요소 색상을 동시에 처리 할 수 ​​없습니까? – nan

+0

실제로 색깔에 대한 전설을 만들어야하기 때문에 실제로 생각할 수 있습니다. 다각형에'fill = microstyle'을 사용해보세요 –

답변

15

분명히 다른 색상의 미학을 가질 수는 없습니다. 두 가지 다른 기러기. 이 문제를 해결하려면 대신 포인트에 채우기 미학을 사용하십시오. 즉, 내부가 채워진 포인트 마커 스타일을 사용해야합니다 (?pch 참조). 사용 가능한 포인트 스타일을 보려면 아래로 스크롤하십시오.

ggplot() + 
    geom_point(data=merged,aes(x = pauseMedian, y = numTotalPauses, fill = diff), 
      pch=21, size=5, colour=NA) + 
    geom_polygon(data = splineHull, 
       mapping=aes(x=pauseMedian, 
          y=numTotalPauses, 
          colour = microstyle), 
       alpha=0) 

는 점 마커 주위의 기본 검은 색 테두리를 제거한다 (aes()의 외부) colour=NA 추가 : 여기에 해당 할 수있는 방법입니다. 포인트 주위에 컬러 테두리를 원한다면, 원하는 색상으로 colour=NA을 변경하십시오.

ggplot2 Google 그룹의 this thread도 참조하고 유사한 문제와 몇 가지 해결 방법을 논의합니다.

3

이제 우리는 두 가지 색상의 뚜껑이 서로 다른 유형이라는 것을 알았으므로 문제가 있습니다. 당신은 당신이 같은 규모 (컬러)를 사용하는 경우

set.seed(123) 
my_df1 <- data.frame(a=rnorm(100), b=runif(100), c=rep(1:10, 10)) 
my_df2 <- data.frame(a=rnorm(100), b=runif(100), c=factor(rep(LETTERS[1:5], 20))) 

# this won't work. can't assign discrete and continuous to same scale 
ggplot() + 
    geom_point(data=my_df1, aes(x=a, y=b, color=c)) + 
    geom_polygon(data=my_df2, aes(x=a, y=b, color=c), alpha=0.5) 

Error: Discrete value supplied to continuous scale

# but use fill for polygons, and that works: 
ggplot() + 
    geom_point(data=my_df1, aes(x=a, y=b, color=c)) + 
    geom_polygon(data=my_df2, aes(x=a, y=b, fill=c), alpha=0.5) 

plot output

(예 : 대신 색상의 입력) 하나에 대해 다른 척도를 사용하여 시도 할 수 있습니다 변수를 동일한 유형으로 변환하지 마십시오. 자세한 내용은 다음을 참조하십시오. Plotting continuous and discrete series in ggplot with facet

+0

안녕하세요. 매우 큰 데이터 세트가 있으므로 여기에 데이터를 게시하기가 어렵습니다. 알파는 0 이상이어야하지만, 문제가 아니며, 채우기가 오류로 인해 단순히 나타나지 않기 때문에 채워진 다각형이 아닌 컨투어링 만하면됩니다. 나는 당신의 솔루션을 시도했지만 같은 오류가 발생했습니다. geom_point에 지정된 색상의 경우 숫자 변수 "diff"이고 geom_polygon에 지정된 색상은 이산 "요인"입니다. 색상 속성이 다른 유형으로 지정되면 ggplot이 작동하지 않는다고 추측합니다. – nan

+0

아, 누락 된 정보의 중요한 부분입니다. 새로운 솔루션 – arvi1000

+0

을 참조하십시오. 고마워. 예,이 방법으로 작동합니다. 실제로는 컨투어 (빈 폴리곤) 만 갖고 싶기 때문에 여전히 색상을 선호합니다. 어쨌든,이 솔루션은 현재 작동합니다. 감사! – nan

1

위의 기본 eipi10 답변에 뭔가를 추가하기 만하면됩니다 (감사합니다!). 원 모양 (pch = 21) 주위의 테두리를 없애기 위해 color = "NA"옵션은 ""사이에 있어야합니다. color = NA (따옴표 제외)를 사용하면 전체 모양이 사라지고 플롯되지 않습니다. 방금 ​​대답에 댓글을 달았지만 여전히 명성이 없습니다.

관련 문제