Создайте второстепенные линии сетки в ggplot2 для категориальных данных

Я хотел бы добавить незначительные линии сетки к категориальным данным на графике, созданном с помощью ggplot2. Например,

library("ggplot2")
data<-data.frame(xcategory=rep(c("a","b","c"),each=30), yvalue=c(1,3,6))

ggplot(data,aes(x=xcategory,y=yvalue,alpha=1.0,size=5))+
                geom_point(position=position_jitter(width=0.1,height=0.0))+
                theme_bw()+
                scale_x_discrete(name="Categorical Data") +
                scale_y_continuous(name="Continuous Response",limits=c(0,7)) +
                theme(axis.text.x=element_text(angle = 90),legend.position="none")

Создает следующий график:

Чего я не хочу

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

Что я хочу

Красные линии, ограничивающие букву "b" - это, наверное, все, что мне нужно, я просто пытался проиллюстрировать три столбца одинаковой ширины.

Помощь или направление к подобному вопросу, который я пропустил, очень ценится. Я попытался добавить информацию сетки через "тему", но безуспешно.

1 ответ

Решение

Ты можешь использовать geom_vline() добавить линии на график и использовать цифры, такие как 0,5, 1,5, чтобы установить позиции. Числа - это векторы, которые начинаются с 0,5 и идут от 1 до "числа категорий" +0,5. Эти строки будут между именами категорий.

ggplot(data,aes(x=xcategory,y=yvalue,alpha=1.0,size=5))+
  geom_vline(xintercept=c(0.5,1.5,2.5,3.5),color="red")+
  geom_point(position=position_jitter(width=0.1,height=0.0))+
  theme_bw()+
  scale_x_discrete(name="Categorical Data") +
  scale_y_continuous(name="Continuous Response",limits=c(0,7)) +
  theme(axis.text.x=element_text(angle = 90),legend.position="none")

введите описание изображения здесь

Другие вопросы по тегам