데이터 세트의 열을 기반으로 ggplot2
범례 가이드의 aes
크기 값을 어떻게 무시합니까?ggplot2의 라인 크기에 맞게 색상 표 범례 가이드 수정
예를 참조
library(data.table)
set.seed(26798)
dt<-rbind(data.table(Trial="A",Value=rweibull(1000,1.0,0.5)),
data.table(Trial="B",Value=rweibull(100,1.2,0.75)),
data.table(Trial="C",Value=rweibull(10,1.3,0.8)))
# Add a count and something like a cumulative distribution:
dt2<-dt[order(Trial,Value),list(Value,N=.N),by=Trial][,list(Value,N,y=1-cumsum(N)/sum(N)),by=Trial]
dt2
## Trial Value N y
## 1: A 0.0003628745 1000 0.999
## 2: A 0.0013002615 1000 0.998
## 3: A 0.0017002173 1000 0.997
## 4: A 0.0022597343 1000 0.996
## 5: A 0.0026608082 1000 0.995
## ---
##1096: B 1.6821827814 100 0.040
##1097: B 2.2431595707 100 0.030
##1098: B 2.5122479833 100 0.020
##1099: B 2.5519954416 100 0.010
##1100: B 2.6848412995 100 0.000
ggplot(dt2) +
geom_line(aes(x=Value,y=y,group=Trial,color=Trial,size=N)) +
scale_size(range=c(0.1, 2), trans="log") +
guides(size=F, color=guide_legend(override.aes=list(size=2)))
제가 각각에 대한 선 두께를 원하는 (편집 2는 : 시험 C를 첨가하고, 로그 스케일을 사용하여 라인 크기를 변경) ("A"는 두껍고 "B"는 얇아 야 함)와 일치하도록 가이드 범례의 Trial 값. 편집 1 : @Arun과 @ChelseaE는 수동으로 각 두께를 조정할 수있는 좋은 제안을 주었지만 실제 데이터 세트는 많은 요소 수준을 가지며 끊임없이 변화하므로 "동적"이어야합니다.
@DidzisElferts에서 비슷한 질문 (Control ggplot2 legend look without affecting the plot)으로 대답하면 크기를 정적 값으로 설정하는 방법이 나와 있습니다. 위 예제의 마지막 줄에있는 size=2
부분을 사용하면 범례의 선 크기를 변경할 수 있지만 플롯에서 선의 크기와 일치 시키길 원합니다. 대신 size=N
을 사용하면 논리적 인 것처럼 보이지만 "object 'N'not found"오류가 발생합니다. 올바른 구문은 무엇입니까?
원하는 출력 :
이해가 안됩니다. 회선 크기를 평가판과 일치 시키려면, 왜 N에 매핑합니까? – baptiste
글쎄, 내 구현에서 뭔가 올바르게하고있는 게 아니 겠지만 줄거리의 의도는 선의 두께를 사용하여 각 시험의 관측 수가 다르다는 것을 보여주는 것이다. 그럼 전설이 그 음모와 일치하길 바래요. 나의 실제 데이터는 두 개가 아닌 5-10 라인을 가지고 있으며, 범례가 일치 할 때 플롯의 라인을 찾아내는 것이 시각적으로 도움이됩니다. – dnlbrky