Sono un principiante con ggplot2 e ho una domanda sulla generazione di un grafico a barre impilato. Ho controllato il libro e la pagina web dedicata, ma non posso risolvere il problema. Ho due fattori, uno dei quali ha 2 livelli (presenza-assenza), gli altri 10 livelli. Chiamiamo questi due "variabili" e "frutto".Grafico a barre in pila in R (ggplot2) con asse y barre in percentuale dei conteggi
Vorrei creare un grafico a barre impilate in cui ogni barra riflette un tipo di frutto e il numero di osservazioni di presenza e assenza in "variabile" sono impilati uno sopra l'altro. Questo è relativamente facile (vedere il codice per la trama 1 di seguito), ma vorrei anche che le barre e l'asse y esprimessero il numero di conteggi di presenza-assenza in "variabile" come percentuale. In altre parole, tutte le barre dovrebbero avere la stessa altezza (che riflette un totale di 100%) e i conteggi delle osservazioni di presenza e assenza dovrebbero essere convertiti in percentuali.
Posso cambiare la scala dell'asse y in una percentuale utilizzando .. conto .. * 100/sum (.. count ..) ma non riesco a capire come convertire le barre effettive. Ho creato un'altra trama con sfaccettatura (codice per la trama 2 di seguito) che realizza ciò che voglio in termini di percentuali, ma preferirei le due barre una sopra l'altra. Qualcuno ha un'idea di come ottenere questo? Ho fornito dati fittizi e esempi riproducibili. Grazie per qualsiasi aiuto.
Steve
dat <- data.frame(fruit=c("Apple", "Apple", "Orange", "Orange", "Orange", "Orange",
"Orange", "Pear", "Pear", "Pear"), variable=c("Present", "Absent",
"Present", "Present", "Present", "Present", "Absent", "Absent",
"Absent", "Present"))
# stacked bar plot
ggplot(dat, aes(x = fruit, fill = variable)) +
geom_bar(aes(y = ..count..*100/sum(..count..))) +
xlab("Fruit") +
ylab("Would like this to be percentage") +
scale_fill_manual("Condition", values = alpha(c("firebrick", "dodgerblue4"), 1))
# with faceting
ggplot(dat, aes(x = variable, fill = variable)) +
geom_bar(aes(y = ..count..*100/sum(..count..))) +
facet_grid(. ~ fruit) +
xlab("Fruit") +
ylab("Would like this to be percentage") +
scale_fill_manual("Condition", values = alpha(c("firebrick", "dodgerblue4"), 1))
Grazie Ramnath, è esattamente ciò di cui ho bisogno per le barre. Quando lo faccio, tuttavia, le etichette dell'asse y tornano a una scala da 0 a 1. Mi piacerebbe che fossero da 0 a 100. Includendo y = .. accounts .. * 100 o y = ..density .. * 100 in "aes" non sembra funzionare. Qualche idea? – Steve
'+ scale_y_continuous (" ", formatter =" percent ")'. L'iniziale "" "elimina l'etichetta" count ", ma è possibile includere qualsiasi etichetta desiderata. – James
Grazie mille James, che funziona perfettamente. – Steve