[R-br] ggplot + geom_bar

Pedro Emmanuel Alvarenga Americano do Brasil emmanuel.brasil em gmail.com
Ter Dez 21 12:02:18 -03 2021


Amigos de R,

Estou num esforço de tentar aprender a usar o tidyverse. Gostaria de manter
a consistência de um relatório que estou trabalhando com gráficos do
ggplot. Mas há um particular gráfico de barras que não estou conseguindo
fazer. Alguém pode me ajudar a fazer o gráfico no ggplot + geom_bar? Segue
abaixo um exemplo como eu faria com o graphics.

# Preparando os dados simulados
tab <- array(c(92,74,11,0,0,94,98,10,1,0,
               83,56,13,2,0,96,68,9,7,0,
               46,28,7,1,1,54,59,16,7,0,
               26,20,3,0,0,36,32,16,4,0,
               8,2,0,0,0,3,3,1,0,0), c(5, 2, 5))
dimnames(tab) <- list(c("Definitively satisfied",
                        "Satisfied",
                        "Little satisfied",
                        "Little dissatisfied",
                        "Definitively dissatisfied"),
                        c("Surface 1","Surface 2"),
                      c(1:5))
names(dimnames(tab)) <- c("Satisfaction","Intervention","Visit")
tab
a <- epitools::expand.table(tab)
a$Visit <- paste0("Visit ", a$Visit)
head(a)

# Fazendo as tabelas ja com os percentuais
x <- sapply(unique(a$Visit), function(i)
prop.table(table(a$Satisfaction[a$Visit==i],a$Intervention[a$Visit==i]),2),
simplify = FALSE)

# Criando o objeto height do barplot
y <- x[[1]] ; for(i in 2:length(x)) {y <- cbind(y,x[[i]])}
ramp <- colorRampPalette(c("darkgreen","red"))

# Criando o gráfico
z <- barplot(y, beside = T, col = ramp(5),
             legend = T,
             args.legend = list(x="top",xpd=NA,inset=-.15,bty="n",cex=.8,
ncol = 2),
             axisnames = FALSE)
axis(2, at = seq(0,1,.025),labels = FALSE, tck = -.01)
text(z[3,], -.005, colnames(y), cex = .5,  srt = 35, xpd = NA, adj = 1,
offset = 5)
axis(1, at = sapply(seq(0,ncol(z)-2,2),function(i) mean(z[,c(1:2) +
i])),labels = unique(a$Visit), line = 1.5, tick = FALSE)
sapply(1:ncol(y), function(i) text(x = z[1:5,i], y = y[1:5,i], labels =
round(y[1:5,i],2), pos = 3, cex = .5, xpd = NA))

Abraço forte a todos,
Pedro Brasil
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20211221/eec1ea19/attachment.htm>


Mais detalhes sobre a lista de discussão R-br