2014-11-07 1 views
2

39 종의 박스 플롯과 분포 범위의 연간 온도 값 (bio01)이 있습니다. 중간 값은 boxplot$stats의 3 행에 있습니다. 가장 높은 중간 값 인 빨간색과 가장 낮은 파란색 즉 온도 구배를 채색하고 싶습니다. medcol에 대한 아래 코드는 작동하지 않습니다. 누군가가 해결책을 제안 할 수 있습니까?중간 색온도의 색을 가진 박스 플롯

b <- boxplot(bio01 ~ species, data=species.threshold.22.climate.751, las=2, ylab ="bio01", par(mar = c(18, 5,5, 2)+ 0.1), cex.names=0.2, bw = 5, medcol=b$stat[3,]) 
b$stats 

답변

0

당신은 그 자체가 변수 b 생성 boxplotb$stats[,3]를 전달하는 데 노력하고있다. 이것은 작동하지 않습니다.

가장 간단한 것은 boxplot을 두 번 호출하는 것입니다.

b <- boxplot(weight ~ Diet, data=ChickWeight) 
boxplot(weight ~ Diet, data=ChickWeight, medcol=order(b$stats[,3])) 

또는

b <- boxplot(weight ~ Diet, data=ChickWeight) 
colors <- colorRampPalette(c("red", "blue")) 
colors <- colors(nrow(b$stats)) 
boxplot(weight ~ Diet, data=ChickWeight, medcol=colors[order(b$stats[,3])]) 
2

이 바른 길에 당신을 볼처럼 더 복잡한 일을 수행 할 수 있습니다 :

# Dummy data 
x = data.frame(col1=rep(month.abb, 20), col2=rnorm(20*12)) 

# develop colour gradient 
cols = colorRampPalette(c("blue", "red")) 
# Calculate medians 
m = unname(tapply(x$col2, x$col1, median)) 

# Plot and colour by size of median 
boxplot(col2 ~ col1, x, col=cols(length(unique(x$col1)))[findInterval(m, sort(m))]) 

그리고 출력 : 여기에 작동하는 예입니다 enter image description here

덕분에 One colour gradient according to value in column scatterplot in R 그는 간격 도움.

+0

감사합니다. 그게 내가 찾고 있었던 것입니다. –

+0

@ niels-raes를 도와 주셔서 감사합니다. 내 대답을 정확하게 기재 해 주시겠습니까? – MikeRSpencer