общие метки оси X для более чем одного бара в ggplot2


Я генерирую гистограммы с накоплением ggplot2. Все в порядке, вот мой код

> ab<-read.table("ab.txt", header=TRUE, sep="\t")
> head(ab)
  id P1 P2 P3
1  A  1  6  5
2  B  6  5  3
3  C  8  5  3
4  D  7  1  2
5  E  8  2  1
> library("reshape2")
> ab1<-melt(ab)
Using id as id variables
> head(ab1)
  id variable value
1  A       P1     1
2  B       P1     6
3  C       P1     8
4  D       P1     7
5  E       P1     8
6  A       P2     6
> library("ggplot2")
> ab1$id <- factor(ab1$id, levels=ab1$id)
> p<-ggplot(data=ab1, aes(x=id, y=value, fill=variable))+geom_bar(stat="identity", width=1)+scale_y_continuous(expand = c(0,0)) <br/>
> p

plot
Но мне нравится иметь одинаковые метки по оси X для нескольких полос, например, общую метку для первых трех тактов. Примерно так:

plot2
Здесь общая метка "Кокос" для первых трех батончиков и вторая "Рис" для следующих три бара. По возможности различать первые и следующие три такта.

Мне не интересно делать это с помощью facet_grid.
Заранее спасибо
Рамеш


person ramesh    schedule 13.03.2014    source источник
comment
Этот пост stackoverflow. com/questions/18165863/ должно помочь   -  person user20650    schedule 13.03.2014


Ответы (2)


Просто переименуйте идентификаторы (см. первое изображение). Или вы можете изменить размер осей с помощью темы(), см. r-изменение размера шрифта, Дрю Стин

person Sander Van der Zeeuw    schedule 13.03.2014
comment
Нет!, мне нужны общие метки осей для более чем одного стержня. На моем втором графике у меня есть кокос — это обычная этикетка для первых трех батончиков. - person ramesh; 13.03.2014
comment
В этом случае попробуйте посмотреть страницу руководства gpglot2, попробуйте сгруппировать свои бары с помощью aes_group_order(). - person Sander Van der Zeeuw; 13.03.2014
comment
Спасибо! Да, я мог бы сгруппировать бары. Тем не менее, печать обычных этикеток по оси X по-прежнему остается кошмаром. - person ramesh; 13.03.2014
comment
Я знаю, к сожалению, я также не знаю точно, как это сделать. вероятно, вам нужно использовать ur group_order в +themes () - person Sander Van der Zeeuw; 13.03.2014

Этот?

p<-ggplot(data=ab1, aes(x=id, y=value, fill=variable))+
  geom_bar(stat="identity", width=1)+
  scale_x_discrete(labels=c("","Coconut","","Rice",""))+
  theme(axis.text.x=element_text(angle=45,size=14,face="bold",hjust=1, vjust=1))
p
person jlhoward    schedule 13.03.2014
comment
Спасибо, как предложил здесь один пользователь, это то, что я хотел: заголовок stackoverflow.com/questions/18165863/ - person ramesh; 13.03.2014