[R-br] ggplot2 geom_bar() argumento fill não retorna legendau
Pedro Emmanuel Alvarenga Americano do Brasil
emmanuel.brasil em gmail.com
Qua Maio 22 10:33:20 -03 2024
Salve Turminha,
Valeu pela ajuda. Entendi que a questão não era exatamente no grafico mas
nos dados que estavam entrando no grafico. Depois de olhar o
primeiro codigo do CID, eu cheguei a quase a mesma solução, sendo a
diferença na definição dos dados, assim:
# o .drop = FALSE fez a diferença porque manteve as categorias com contagem
zero
dados_prop <- df %>%
group_by(Visitas, Classificacao, .drop = FALSE) %>%
summarise(count = n()) %>%
mutate(prop = count / sum(count))
ggplot(dados_prop, aes(x = Visitas, y = prop, fill = Classificacao)) +
geom_bar(stat = "identity", position = "dodge") +
scale_fill_manual(values = ramp(6)) +
labs(x = "", y = "Proporção", fill = "Classificação") +
scale_y_continuous(labels = scales::percent, limits = c(0,1)) +
theme_classic()+
theme(legend.position = "top")
Valeu valeu...
que aforça esteja sempre com voces.
Pedro Brasil
Em qua., 22 de mai. de 2024 às 08:33, Cid Póvoas <cidedson em gmail.com>
escreveu:
>
> 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*
> *Lattes : *http://lattes.cnpq.br/2303498368142537
> *LinkedIn :* http://br.linkedin.com/in/cidedson/
> *Whatsapp :* https://wa.me/5573991519565
>
>
> Em ter., 21 de mai. de 2024 às 17:37, Pedro Emmanuel Alvarenga Americano
> do Brasil por (R-br) <r-br em 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 em 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 em 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.
>>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20240522/b3cedbf0/attachment.htm>
Mais detalhes sobre a lista de discussão R-br