2014-10-06 2 views
3

다른 질문이 있지만 아무도 내 질문을 시각화 할 수 없으므로 ive가 예제를 만들었습니다.R 수동으로 도형으로 설정

A <- c('a','b', 'c','d','e') 
types <- factor(A) 
B <- c(1,2,3,4,5) 
C <- c(6,7,8,9,10) 
D <- c(1,2,1,2,3) 
ABC <- data.frame(B,C,D,types) 

library(ggplot2) 

ggplot(ABC, aes(x=B ,y=C ,size=D, colour=as.factor(types),label=types, shape=as.factor(types))) + 
geom_point()+geom_text(size=2, hjust=0,colour="black", vjust=0) + 
scale_size_area(max_size=20, "D", breaks=c(100,500,1000,3000,5000)) + 
scale_x_log10(lim=c(0.05,10),breaks=c(0.1,1,10))+ scale_y_continuous(lim=c(0,30000000)) + 
scale_shape_manual(values=c(15,18,16,17,19))` 

이것을 플로팅하면 요인에 따라 색상 및 모양이 달라질 수 있습니다.

제 코드에서는 모양을 설정하기 위해 scale_shape_manual을 사용합니다. 즉, 순서에 따라 factor의 순서가 a, b, c, d, e이고 값이 15,18,16,17,19이므로 = 15 (정사각형), b = 18 등등

이 도형을 요인별로 설정하고 싶습니다. 내 데이터가 매일 바뀌고 요소가 다른 주문에있게되지만 항상 같은 요소가 같은 모양을 가지기를 바랍니다.

그래서 분명히이 코드 나던 작동하지만, 뭔가 같은 : 내가 너무 색상의 동일한 기능을 수행 할 수 있다면

scale_shape_manual(values=('a'=15, 'b'=18, 'c'=16, 'd'=17, 'e'=19))

이 도움이 될 것입니다.

감사

답변

3

은 항상 "A"다섯 개 가지 범주 (대부분에)있을 것, 제대로 이해하고있어 경우 - "E", 당신은이에 대한 모양과 색상이 데이터 세트에서 일관되고 싶어 . 여기에 한 가지 방법 (참고 : gg_color_hue(...)here에서이다) 인 요소의 수는 17 ~ 19 사이에서 변동하지 않습니다 더 있지만

# set up shapes 
shapes <- c(15,18,16,17,19) 
names(shapes) <- letters[1:5] 

# set up colors 
gg_color_hue <- function(n) { # ggplot default colors 
    hues = seq(15, 375, length=n+1) 
    hcl(h=hues, l=65, c=100)[1:n] 
} 
colors <- gg_color_hue(5) 
names(colors) <- names(shapes) 

# original data 
ggplot(ABC, aes(x=B ,y=C ,size=D, colour=types,label=types, shape=types)) + 
    geom_point()+geom_text(size=2, hjust=0,colour="black", vjust=0) + 
    scale_size_area(max_size=20, "D", breaks=c(100,500,1000,3000,5000)) + 
    scale_x_log10(lim=c(0.05,10),breaks=c(0.1,1,10))+ 
    scale_y_continuous(lim=c(0,30000000)) + 
    scale_shape_manual(values=shapes) + scale_color_manual(values=colors) 

#new data 
DEF <- data.frame(B,C,D,types=factor(c("a","a","a","d","e"))) 
ggplot(DEF, aes(x=B ,y=C ,size=D, colour=types,label=types, shape=types)) + 
    geom_point()+geom_text(size=2, hjust=0,colour="black", vjust=0) + 
    scale_size_area(max_size=20, "D", breaks=c(100,500,1000,3000,5000)) + 
    scale_x_log10(lim=c(0.05,10),breaks=c(0.1,1,10))+ 
    scale_y_continuous(lim=c(0,30000000)) + 
    scale_shape_manual(values=shapes) + scale_color_manual(values=colors) 

+0

덕분에,이 이유 하나의 요소가 포함되지 않은 경우 전체 시퀀스가 ​​제거되는 것처럼 작동하지 않는 시퀀스 방식을 사용합니다. –

+0

아니야. 두 번째 예제에서 요소 "b"와 "c"는 누락되었지만 시퀀스는 버려지지 않습니다. "a"는 여전히 정사각형이고 "d"는 여전히 삼각형이며 "e"는 여전히 원입니다. 당신은 진지하게 19의 형체를 사용할 예정 이냐?? – jlhoward

+0

^나는 원래 시도에서 seq가 버려진 것을 의미했습니다. 아니요, 모양 값 15, 16 및 18 만 사용할 계획입니다. 저는 16 개의 요소 중 2 개를 구체적으로 설정하고 다른 요소는 15,16 또는 18 개로 설정하려고합니다. 여러 가지 모양과 색상을 사용해야합니다. 각 요인에 대해 충분한 분산이 있어야합니다. –