Acredito que assim fica melhor


dados_prop <- df %>%
  count(Visitas, Classificacao) %>%
  complete(Visitas, Classificacao, fill = list(n = 0)) %>%
  group_by(Visitas) %>%
  mutate(prop = n / sum(n))

ggplot(dados_prop, aes(x = Visitas, y = prop, fill = Classificacao)) +
  geom_bar(stat = "identity", position = position_dodge(), color="black") +
  scale_y_continuous(limits = c(0, 1), labels = scales::percent_format()) +
  labs(
    x = "",
    y = "Proporção",
    fill = "Classificação"
  ) +
  scale_fill_manual(
    values = ramp(6),
    labels = c("Não informado", "Definitivamente insatisfeito", "Insatisfeito",
               "Nem satisfeito, nem insatisfeito", "Satisfeito", "Definitivamente satisfeito")
  ) +
  theme_classic() +
  theme(legend.position = "top")

Cid Edson Mendonça Póvoas

Engenheiro Agrônomo - Data Scientist 
CREA-BA: 051984991-4
Técnico em Segurança do Trabalho 
Nº: 0012669/BA
Tel: +55 73 99151-9565


Em ter., 21 de mai. de 2024 às 17:37, Pedro Emmanuel Alvarenga Americano do Brasil por (R-br) <r-br@listas.c3sl.ufpr.br> escreveu:
Turminha, 

Só pra ficar mais fácil de entender, se fosse no graphics, ficaria mais ou menos assim: 
barplot(prop.table(tab,2),
        ylim = c(0,1),
        beside = T,
        legend.text = c("Não informado","Definitivamente insatisfeito","Insatisfeito","Nem satisfeito, nem insatisfeito","Satisfeito","Definitivamente satisfeito"),
        col = ramp(6),
        args.legend = list(fill = ramp(6), x = "top", bty = "n", inset = -.15, xpd = NA, ncol = 2))

Pedro Brasil


Em ter., 21 de mai. de 2024 às 17:06, Pedro Emmanuel Alvarenga Americano do Brasil <emmanuel.brasil@gmail.com> escreveu:
Salve salve irmãos de R, 

Estou batendo a cabeça pra acertar um gráfico de barras. Eu gostaria que houvesse um grupo de 6 barras (categorias) por visita, ou seja, em cada janela de visita houvesse 6 barras. Cada barra de uma cor pra poder fazer a legenda correspondente. E as barras precisariam corresponder com as frequências das categorias nas visitas. Acho que o problema é que há algumas categorias que são zero, mas elas deveriam aparecer no gráfico e na legenda mesmo assim. Mas quando eu consigo fazer as frequências, as cores ficam ruins e quando eu consigo aproximar as cores as frequências vão embora. O mais próximo que consegui foi assim:

#Simulando o banco
tab <- array(c(0,0,0,1,34,46,0,0,0,2,24,19,0,0,1,7,6,2), c(6,3))
dimnames(tab) <- list(c("Não informado","Definitivamente insatisfeito","Insatisfeito","Nem satisfeito, nem insatisfeito","Satisfeito","Definitivamente satisfeito"), c("Visita 2", "Visita 3", "Visita 4"))
names(dimnames(tab)) <- c("Classificacao", "Visitas")
tab
df <- epitools::expand.table(tab)
df
levels(df$Classificacao)
prop.table(table(df$Classificacao, df$Visitas),2)

# O grafico
ramp <- colorRampPalette(c("red","green"))

library(tidyverse)
ggplot(df,
       aes(x = Classificacao)) +
  facet_grid(cols = vars(Visitas)) +
  geom_bar(aes(y = after_stat(prop),
               fill = Classificacao,
               group = 1)) +
  scale_y_continuous(labels = scales::percent) +
  labs(y = "Percentual da satisfação", x = "", fill = "Satisfação") +  #
  scale_x_discrete(drop = FALSE) +
  scale_fill_discrete(drop = FALSE) +
  scale_fill_manual(values = ramp(length(levels(df$Classificacao)))) # 

Abraço forte e que a força esteja sempre com voces. 

Pedro Brasil
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.