2016-06-19 2 views
7

동일한 플롯에서 여러 데이터 세트를 플롯하려고합니다. 예를 들어, 아래의 두 세트의 실험 세트가 있습니다 : "P-0.1"과 "P-0.2"는 B로 표시됩니다. 각 실험에서 세 개의 출력 값 "P", "Q", "O" "로 표시됩니다. 필자는 채우기 색으로 실험을 그룹화하고 출력을 색, 선 종류 및 모양으로 그룹화했습니다.ggplot2를 사용한 여러 범례

library(ggplot2) 

dat <- data.frame(
    A = factor(c("O", "O", "P", "P", "Q", "Q", "O", "O", "P", "P", "Q", "Q"), levels=c("O", "O", "P", "P", "Q", "Q","O", "O", "P", "P", "Q", "Q")), 
    B = factor(c("P-0.1", "P-0.1", "P-0.1", "P-0.1","P-0.1", "P-0.1", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2"), levels = c("P-0.1", "P-0.1", "P-0.1", "P-0.1","P-0.1", "P-0.1", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2")), 
    X = c(0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1), 
    Y = c(10, 15, 12, 13, 9, 14, 30, 20, 32, 21, 27, 19) 
) 

p = ggplot(data=dat, aes(x=X, y=Y, colour=A, size=A, shape=A, linetype=A, fill=B, group=interaction(A,B))) + geom_point() + geom_line() + theme_bw() 
p = p + geom_point(size=4, alpha=0) + geom_point(size=4, show.legend=FALSE) + guides(shape = guide_legend(nrow=3, byrow = TRUE, keywidth = 1.5, keyheight = 1), colour = guide_legend(override.aes = list(alpha=1))) 

p = p + scale_shape_manual(name="", values=c(21,22,23)) 
p = p + scale_colour_manual(name="", values=c("#005ccc", "#007700", "#56B4E9")) 
p = p + scale_linetype_manual(name="", values=c(0,0,1)) 
p = p + scale_size_manual(name="", values = c(1, 1, 1)) 
p = p + scale_fill_manual(name="", values = c("red", "blue")) 

위의 코드는 제대로 그림을 그립니다,하지만 난 빨간색과 파란색 상자를 채워 기다리고 있었다 채우기 규모의 범례에 흑인 서클을 얻고있다. 이 문제를 해결하는 방법? 주석에서 설명한 바와 같이 = ""값 = C (")", ","빨강, 파랑, 안내

Reference Figure

+1

이 = "나'P = P + scale_fill_manual (이름을 작동 안내)" ","빨강, 파랑 = guide_legend (override.aes ​​= AES "값 = C (": 것 같습니다 (모양 = 21)))'. 자세한 내용 [여기] (https://github.com/hadley/ggplot2/issues/857) – Tung

+0

감사합니다. 이것은 효과가있다. – max

+1

빨간색 상자와 파란색 상자를 얻으려면,'override.aes ​​= list (shape = 22, size = 5)'를 사용하는 것이 좋습니다. – Jaap

답변

2

, I는

p = P + scale_fill_manual (이름으로 업데이트 = guide_legend (override.aes ​​= list (shape = 22, size = 5)))

원하는 이미지를 얻을 수 있습니다.

enter image description here