Estou tentando criar um gráfico de calor para dados em escala Likert usando o likert
pacote em R e quero agrupar os rótulos do eixo y str_wrap
para torná-los mais legíveis. Porém, quando utilizo str_wrap
with scale_y_discrete
, a ordem dos rótulos muda para ordem alfabética ao invés de preservar a ordem original.
MRE com e sem comentários de scale_y_discrete(labels = function(x) str_wrap(x, width = 5))
:
library(likert)
library(ggplot2)
library(stringr)
library(dplyr)
diamonds %>%
select(cut) %>%
as.data.frame() %>%
likert() %>%
plot(., type = "heat") +
# scale_y_discrete(labels = function(x) str_wrap(x, width = 5))
NULL
Quando eu uso scale_y_discrete(labels = str_wrap)
, os rótulos do eixo y são agrupados corretamente, mas a ordem dos rótulos é alterada para ordem alfabética. Quero preservar a ordem original dos rótulos como em original_levels. Pergunta:
Como posso agrupar os rótulos do eixo str_wrap
y preservando a ordem original ggplot2
?
Tenho certeza de que o problema é causado pela conversão de cut
um fator em uma classe de personagem. No entanto, não consigo resolver esse problema.
Qualquer ajuda ou orientação sobre como conseguir isso seria muito apreciada!
IMHO, a maneira mais fácil seria agrupar os rótulos antes de passar os dados para
likert()
: