Как повернуть ось x в ggplot2 в коде R при использовании гистограммы группировки - PullRequest
0 голосов
/ 28 марта 2020

ggplot2: группа дискретных значений оси x в подгруппы

Я обнаружил, что этот рисунок по ссылке выше очень полезен для создания групповой диаграммы. Однако мой вопрос заключается в том, как я могу изменить угол буквы a, b, c, ... et c по оси x? Он работал нормально при построении графика, но, поскольку я использовал другой код для размещения буквы араби c, ось суб-x не вращалась

Мои данные выглядят следующим образом:

rr <- df %>% count(college,department)
View(rr)

enter image description here

И я сделал следующий код, он работал для значения группирования, и метки оси sub-x вращались. Однако буквы c на арабском языке отображаются неправильно.

zz<-ggplot(rr, aes(college, n, fill=department, label = department)) + 
  geom_bar(position="dodge", stat="identity") + 
  geom_text(position = position_dodge(width = 1), aes(x=college, y=0) ) +
  theme(axis.title.y = element_text(size = rel(2), angle = 90), legend.position = "none") + ylim(0,140)+
  theme(axis.text.x = element_text(angle = 60,size = rel(3), color="black"))

enter image description here

Теперь я использую следующий код, чтобы разрешить араби c буквы отображаются правильно, он не поворачивал ось суб-х, когда я переписал предыдущий код следующим:

gg<-ggplotly(zz) %>% layout(titlefont=list(size=10), yaxis = list(side="right",  gridcolor = toRGB("gray90"),
                                                                  gridwidth = 2, ticks="", title="عدد المحاضرات لكل قسم", titlefont=list(size=20)), 
                            xaxis = list(ticks="", tickfont=list(size=14), title="الأقسام الأكاديمية", titlefont=list(size=30)),
                            margin = list(l = 50, r=30, b = 50, t = 80))

Он появился с вертикальной осью суб-х следующим образом:

enter image description here

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

1 Ответ

2 голосов
/ 28 марта 2020

Без воспроизводимого примера вашего набора данных трудно быть уверенным, но на основании того поста, на который вы ссылаетесь, письмо строится с помощью функции geom_text, поэтому вы можете передать angle = 60 в geom_text:

zz<-ggplot(rr, aes(college, n, fill=department, label = department)) + 
  geom_bar(position="dodge", stat="identity") + 
  geom_text(position = position_dodge(width = 1), aes(x=college, y=0), angle = 60 ) +
  theme(axis.title.y = element_text(size = rel(2), angle = 90), legend.position = "none") + ylim(0,140)+
  theme(axis.text.x = element_text(angle = 60,size = rel(3), color="black"))

Вот пример, основанный на сообщении, на которое вы ссылаетесь ( ggplot2: группа дискретных значений оси x в подгруппах ):

dat <- data.frame(value=runif(26)*10,
                    grouping=c(rep("Group 1",10),
                               rep("Group 2",10),
                               rep("Group 3",6)),
                    letters=LETTERS[1:26])

library(ggplot2)

ggplot(dat, aes(grouping, value, fill=letters, label = letters)) + 
  geom_bar(position="dodge", stat="identity") + 
  geom_text(position = position_dodge(width = 1), aes(x=grouping, y=0), angle = 90)

enter image description here

...