2016-10-19 2 views
1

Я нашел много вопросов и ответов, обращаясь к разрыву и промежуткам по оси. Но большинство из них имеют низкое качество (в смысле SO) из-за отсутствия кода примера, изображения или сложных кодов. Вот почему я спрашиваю.Как сломать ось в штриховом шкафу (возможно, используя plotrix gap.barplot)?

Я стараюсь использовать library(plotrix). Если есть решение без него и/или другая библиотека, мне тоже будет хорошо.

Это нормальный R-барплот.

barplot(c(10,20,500)) 

barplot with standard R

Чтобы сломать ось и добавить пробел я попробовал это.

gap.barplot(c(10,20,500),gap=c(50,400), col=FALSE) 

barplot using plotrix library

В результате не красиво.

  • Между барами нет места. space параметр от barplot() не принимается gap.barplot().
  • Бары имеют разную ширину.
  • Положение тиков не находится посередине бара.

Могу ли я контролировать эти параметры с помощью plotrix? Я ничего не вижу в документации. Есть ли другая библиотека или решение для моей проблемы?

ответ

1

Есть так много разных ответов из-за множества индивидуальных проблем. Для вашей проблемы вы можете попробовать следующее. Но всегда есть лучшее решение. И ИМО всегда лучше показывать ваши полные данные, а не обрезать их.

# 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 В качестве альтернативы вы можете попытаться войти вашу ось с помощью log="y".

+1

«И ИМО всегда лучше показывать ваши полные данные, а не обрезать их». - Согласовано! – roman

+0

Обратите внимание на строку '# 9'. Вы уверены, что это правильно? – buhtz

+1

@buhtz Я исправил его. Благодарю. – Jimbou

Смежные вопросы