Как я могу отсортировать легенду по горизонтали со многими значениями в верхней позиции?

#r

#r

Вопрос:

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

Вот заимствованные данные:

 data <- structure(list(mon = c(9L, 10L, 11L, 10L, 8L, 7L, 7L, 11L, 9L, 
10L, 12L, 11L, 7L, 12L, 8L, 12L, 9L, 7L, 9L, 10L, 10L, 8L, 12L, 
7L, 11L, 10L, 8L, 7L, 11L, 12L, 12L, 9L, 9L, 7L, 7L, 12L, 12L, 
9L, 9L, 8L), gclass = structure(c(9L, 1L, 8L, 6L, 4L, 4L, 3L, 
6L, 2L, 4L, 1L, 1L, 5L, 7L, 1L, 6L, 8L, 6L, 4L, 7L, 8L, 7L, 9L, 
8L, 3L, 5L, 9L, 2L, 7L, 3L, 5L, 5L, 7L, 7L, 9L, 2L, 4L, 1L, 3L, 
8L), .Label = c("Down-Down", "Down-Stable", "Down-Up", "Stable-Down", 
"Stable-Stable", "Stable-Up", "Up-Down", "Up-Stable", "Up-Up"
), class = c("ordered", "factor")), NG = c(222614.67, 9998.17, 
351162.2, 37357.95, 4140.48, 1878.57, 553.86, 40012.25, 766.52, 
15733.36, 90676.2, 45000.29, 0, 375699.84, 2424.21, 93094.21, 
120547.69, 291.33, 1536.38, 167352.21, 160347.01, 26851.47, 725689.06, 
4500.55, 10644.54, 75132.98, 42676.41, 267.65, 392277.64, 33854.26, 
384754.67, 7195.93, 88974.2, 20665.79, 7185.69, 45059.64, 60576.96, 
3564.53, 1262.39, 9394.15)), .Names = c("mon", "gclass", "NG"
), row.names = c(NA, -40L), class = "data.frame") 


data%>%
  ggplot(aes(mon,NG,fill=gclass)) 
  geom_col(position = position_stack(reverse = TRUE)) 
  theme(legend.position = "top") 
  coord_flip()
 

Результат:

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

Я пытался legend.direction = "horizontal" , но безуспешно.

Я хотел бы сделать что-то вроде этого:

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

Приветствия!

Ответ №1:

Просто добавьте эту строку кода guides(fill= guide_legend(nrow = 1))

 data%>%
  ggplot(aes(mon,NG,fill=gclass)) 
  geom_col(position = position_stack(reverse = TRUE)) 
  theme(legend.position = "top") 
  coord_flip()  
  guides(fill= guide_legend(nrow = 1))
 

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