2016-12-24 4 views
0

У меня возникли проблемы вращения и размещения х меток осей на spineplot в R. Набор данных, я замышляет имеет несколько уровней категорий с более длинными именамиR как повернуть и поместить метки оси x в spineplot?

набор данных для replicaiton здесь:

psdat <- data.frame(Cat = rep(paste0('LongcategoryName',1:5),(1:5)*5), Level= rep(c('Low', 'Med' , 'High'), 25)) 

I «м после spineplot ....

spineplot(Level~ Cat, data=psdat) 

но метки слишком широки для сюжета, так что я хотел бы, чтобы повернуть их ....

Кажется, что все работает нормально, но я должен смотреть в глаза и угадывать уровни на и не могу, похоже, получить их так же, как с барплотом.

spineplot(Level~ Cat, xaxlabels=F, data=psdat, xlab='') 
at <- c(0.04, 0.15, 0.3, 0.6,0.9) 
axis(1, at=at, labels=levels(psdat$Cat), las=2) 

Может ли кто-нибудь помочь с тем, как получить значения? Спасибо!

ответ

2

Просто используйте par(las = 2), прежде чем создать сюжет:

psdat <- data.frame(Cat = rep(paste0('LongcategoryName', 1:5),(1:5) * 5), 
        Level = rep(c('Low', 'Med' , 'High'), 25)) 
par(las = 2, cex.axis = 0.75, mar = c(7, 4.1, 4.1, 2.1)) 
spineplot(Level ~ Cat, data = psdat, xaxlabels = levels(psdat$Cat), xlab = '') 

enter image description here


Вы также можете использовать разрывы строк (\n) внутри этикетки. Например, если имена категорий содержат пробелы, то просто замените их \n:

psdat <- data.frame(Cat = rep(paste0('Longcategory Name', 1:5), (1:5) * 5), 
        Level = rep(c('Low', 'Med' , 'High'), 25)) 
par(las = 2, cex.axis = 0.75, mar = c(7, 4.1, 4.1, 2.1)) 
spineplot(Level ~ Cat, data = psdat, xlab = '', 
      xaxlabels = gsub(levels(psdat$Cat), pattern = ' ', replacement = '\n')) 

enter image description here

+0

Отлично, именно то, что я надеялся. Благодаря! – knussear

+0

@knussear, так как вы новичок в SO: вы можете отметить этот вопрос как ответ (маркер в левом верхнем углу ответа, который подходит вам лучше всего). –

+0

Done Thanks @ martin-schmelzer – knussear

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