2
보다 나은 방법으로 facet_wrap
플롯을 재정렬하고 싶습니다.서브 플롯의 점을 기준으로 facet_wrap 플롯을 재정렬하십시오
library(ggplot2)
set.seed(123)
freq <- sample(1:10, 20, replace = T)
labels <- sample(LETTERS, 20)
value <- paste("i",1:13,sep='')
lab <- rep(unlist(lapply(1:length(freq), function(x) rep(labels[x],freq[x]))),2)
ival <- rep(unlist(lapply(1:length(freq), function(x) value[1:freq[x]])),2)
df <- data.frame(lab, ival, type=c(rep('Type1',119),rep('Type2',119)),val=runif(238,0,1))
ggplot(df, aes(x=ival, y=val, col = type, group = type)) +
geom_line() +
geom_point(aes(x=ival, y=val)) +
facet_wrap(~lab, ncol=3) +
theme(axis.text.x=element_text(angle=45, vjust=0.3)) +
scale_x_discrete(limits=paste('i',1:13,sep=''))
그것은 아래의 플롯 결과 :
빈도에 따라 플롯을 재 배열 어떤 방법이 있나요? lab
주파수 중 일부 (또는 유형 당 포인트 수)가 매우 낮습니다 (1-3
). 나는 레이블 주문 대신 주파수를 facet_wrap
wrt 줄거리를 정리하고 싶습니다. 하나의 장점은 플로팅 영역을 줄이고 플롯에서 더 나은 직감을 얻는 것입니다.
즉석에서 계산 된 빈도 값을 사용하고 facet_wrap
으로 전달할 수 있습니까? 또는 dplyr
접근법을 사용하여 개별적으로 수행하고 데이터를 저/중/고 빈도의 플롯으로 나눕니 까?
이것은 'lab' 변수의 레벨을 재정렬합니다. baseR 접근법을 사용하여 수행 할 수도 있습니다. 플롯 영역을 적절하고 최소한의 방법으로 사용하여 줄이는 방법이 있습니까? 사용할 수있는 포인트가없는 경우 'x 축'제한을 무시합니다. – Prradep
아니면'N '을 만들고'facet_wrap (~ reorder (lab, N))'과 같이'facet_wrap' 호출에서 오래된'reorder'를 사용하면됩니다. 그런 다음'facet_wrap (~ reorder (lab, -N))'이 그것을 뒤집습니다. –
필자는이 재주문을 의미하는 수준이 가장 높이 평가 된 접근법입니다. 그러나 필요한 영역 만 사용하여 줄거리 영역을 줄이는 방법이 있는지 묻습니다. 또는 음모를 주파수에 따라 음모의 하위 집합으로 나누십시오. 기본적으로 플롯을 더 쉽게 이해하는 데 도움이되는 접근법을 찾고 있습니다. 나는 특별한 방법을 염두에두고 있지 않습니다. – Prradep