2016-10-19 2 views
1

나는 많은 질문과 답변을 발견했다. 그러나 대부분의 예제 코드, 그림 또는 복잡한 코드로 인해 (SO 의미로) 낮은 품질입니다. 이것이 내가 묻는 이유입니다.막대 그래프에서 축을 나누는 방법 (아마도 plotrix gap.barplot을 사용하여)?

library(plotrix)을 사용해 봅니다. 그것 및/또는 다른 도서관없이 해결책이있는 경우에 저 역시 좋다.

정상적인 R-barplot입니다.

barplot with standard R

barplot(c(10,20,500)) 

축 휴식 나는이 시도 간격을 추가합니다.
gap.barplot(c(10,20,500),gap=c(50,400), col=FALSE) 

barplot using plotrix library

결과는 아름답 지입니다.

  • 막대 사이에 공백이 없습니다. space 매개 변수 barplot()gap.barplot()으로 허용되지 않습니다.
  • 막대의 너비가 다릅니다.
  • 틱의 위치가 막대 가운데에 없습니다.

plotrix으로 매개 변수를 제어 할 수 있습니까? 나는 문서에서 그것에 대해 뭔가를 보지 못했다. 내 문제의 다른 라이브러리 또는 솔루션이 있습니까?

답변

1

많은 개별적인 문제로 인해 많은 답변이 있습니다. 문제를 해결하려면 다음을 시도해보십시오. 그러나 항상 더 나은 해결책이 있습니다. 그리고 IMO는 항상 전체 데이터를 자르기보다는 표시하는 것이 좋습니다. 당신이 log="y"를 사용하여 축 로그온을 시도 할 수있는 대안으로

# Your data with names 
library(plotrix) 
d <- c(10,20,500) 
names(d) <- letters[1:3] 
# Specify a cutoff where the y.axis should be splitted. 
co <- 200 
# Now cut off this area in your data. 
d[d > co] <- d[d > co] - co 
# Create new axis label using the pretty() function 
newy <- pretty(d) 
newy[ newy > co] <- newy[ newy > co] + co 
# remove values in your cutoff. 
gr <- which(newy != co) 
newy <- newy[ gr ] 
# plot the data 
barplot(d, axes=F) 
# add the axis 
axis(2, at = pretty(d)[gr], labels = newy) 
axis.break(2, co, style = "gap") 

enter image description here .

+1

"IMO는 항상 전체 데이터를 자르지 않고 표시하는 것이 좋습니다." - 동의 해! – roman

+0

'# 9'행을 찾아보십시오. 그게 틀림 없습니까? – buhtz

+1

@buhtz 해결했습니다. 감사. – Jimbou

관련 문제