2010-11-28 4 views
1

ggplot을 사용하여 다른 데이터 프레임의 데이터를 플롯하려고합니다. 그러나 이산스럽고 연속적인 스케일에 문제가 있습니다.요인 및 변수를 같은 종류의 스케일로 사용하십시오 - 가능합니까?

의 우리가이 데이터를 사용하고 싶은 말은하자

x <- rnorm(9,5) 
y <- rnorm(9,5) 
f1 <- rep(c("a","b","c"),3) 
df1 <- data.frame(x,y,f1) 
x <- rnorm(9,5) 
y <- rnorm(9,5) 
f2 <- rep(c("d","e","f"),3) 
df2 <- data.frame(x,y,f2) 

내가 하나의 플롯에 두 데이터 프레임을 보여주고 싶습니다. DF1 $ F1 및 DF1 $의 F2를 모두 점의 색상에 대한 책임을진다 :

p <- ggplot(df1,aes(x,y)) 
p <- p + geom_point(aes(colour=f1)) 
p <- p + geom_point(data=df2,aes(x,y,colour=f2)) 
p 

이 작동합니다. 나는이 데이터를 때

:

x <- rnorm(9,5) 
y <- rnorm(9,5) 
f1 <- rep(c("a","b","c"),3) 
df1 <- data.frame(x,y,f1) 
x <- rnorm(9,5) 
y <- rnorm(9,5) 
quan <- rnorm(9,1) 
df2 <- data.frame(x,y,quan) 

이 플롯은 작동하지 않습니다 quan는 숫자 값입니다하는 요인으로

p <- ggplot(df1,aes(x,y)) 
p <- p + geom_point(aes(colour=f1)) 
p <- p + geom_point(data=df2,aes(x,y,colour=quan)) 
p 

Error: Continuous variable() supplied to discrete scale_hue. 

f1, 그것은 논리적 인 것 같습니다 그들은 그 동일한 크기로 사용할 수 없습니다. 그러나 각 데이터 프레임에 대해 별도의 스케일을 어떻게 정의 할 수 있습니까? 또는 이것이 가능하지 않을 수 있습니까?

나는 scale_colour_discretescale_colour_continuous을 사용해 보았지만 두 음계 중 하나만 한 음모로 사용할 수있는 것처럼 보입니다.

+0

샘플 코드에 약간의 오류가 있습니다. f와 quan은 존재하지 않습니다. 이 f1과 f2가 각각 있습니까? – kmm

+0

지적 해 주셔서 고맙습니다. 질문에서 코드를 수정했습니다 ... – donodarazao

+0

"quan"이 무엇인지 보여줄 수 있습니까? 위의 코드에는 여전히 오류가 있습니다. 직접 복사하여 붙여 넣으십시오. –

답변

2

플롯 당 하나의 유형 만 사용할 수 있습니다. 첫 번째 예에서 두 경우의 척도는 하나의 요소이므로 오류가 발생하지 않습니다.

두 번째 예에서 하나는 연속 변수 (f)이고 다른 하나는 인수 (quan)입니다. 'quan'을 전달하려고하면 ggplot은 요소가 아닌 연속 변수를 기대하고 오류 메시지를 제공합니다.

먼저 rbind()를 사용하여 플로팅 한 후 단순화해야합니다. 그러나 데이터가 동일한 방식으로 포맷되었는지 확인하십시오. rbind가 실패하면 유사한 구조화 된 데이터 프레임을 전달하지 않기 때문입니다.

df3 <- rbind(df1,df2) 
p <- ggplot(df3, aes(x,y,colour=f) + geom_point() 
+0

플롯마다 COLOR 및 SIZE에 대해 하나의 눈금 만 가질 수 있다고 설명해야합니다. –

+0

답장을 보내 주셔서 감사 드리며 늦어서 죄송합니다. 나는 몇 가지 고급 매핑을 위해 ggplot을 사용하려했지만 하나의 스케일/플롯의 한계는 그 방향으로 깊이 들어가는 것을 허용하지 않습니다. 어쨌든, 저기에 특별한 GIS 소프트웨어가있는 이유는 ...;) – donodarazao