Eu tenho um quadro de dados chamado df de 2 variáveis de caracteres e uma dupla.
A questão inicial do problema que estou tentando resolver é esta aqui . Em poucas palavras, estou tentando classificar em cada faceta os valores delta do menor para o maior, mas também quero ver os valores my_vars2 no eixo y. Atualmente, vejo apenas as letras. Como posso consertar isso, mas ainda ter a mesma classificação dos valores menores para os maiores?
library(ggplot2)
library(dplyr)
library(forcats)
library(stringr)
## init data --------------------------------------
set.seed(123) # Setting seed for reproducibility
levels <- c('KAMALA-IT', 'HARRIS-HR', 'DONALD-CEO', 'TRUMP-HR', 'BARACK-IT')
my_var <- sample(levels, 50, replace = TRUE)
levels2 <- c('GEORGIA', 'PENNSYLVANIA', 'WINSCOSIN', 'NORTH CAROLINA', 'NEVADA','ARIZONA','MICHIGAN')
my_var2 <- sample(levels2, 50, replace = TRUE)
delta <- rnorm(50, mean = 0, sd = 1)
df <- tibble(my_var,my_var2,delta);df
df <-
group_by(df, my_var) |>
arrange(delta, .by_group = TRUE) |>
mutate(labels = paste0(letters[1:n()], "/", my_var2))
ggplot(df, aes(x = delta, y = labels)) +
geom_point(colour = "red") +
# "free_y" lets the y axis move around between facets
facet_wrap(~my_var, dir = "v", ncol = 1, scales = "free_y") +
# Remove the ordering component of each label:
scale_y_discrete(labels = \(x) str_extract(x, "(?<=/)."))
Basta modificar o regex para manter apenas os nomes dos estados, também conhecidos como a parte dos rótulos após o separador "/", para o qual eu uso
gsub
: