/ / Come usare ggplot2 per generare un grafico a torta? - r, ggplot2

Come usare ggplot2 per generare un grafico a torta? - r, ggplot2

Ho un vettore di valori che vorreivisualizza come grafico a torta. Il vettore è composto da 1 "s, 2" se 3 "s, e vorrei che il mio grafico a torta visualizzasse la percentuale di 1" s, 2 "se 3" s nel vettore oltre alle etichette per il le zone. I 1 sarebbero democratici, repubblicani di 2 e indipendenti di 3. Il vettore con cui ho lavorato è una colonna di un dataframe. Potrebbero esserci alcuni problemi di tipo, anche se l'ho passato usando come. numerico () e come.factor ().

Ecco un esempio di df (nota, come puoi vedere nel codice, ho intersecato in col Q7):

  Q6 Q7 Q8 Q9
3 30  3  5  1
4 30  3  5  1
5 65  3  2  2
6 29  3  5  1
7 23  1  4  1
8 24  1  5  1

Ecco il codice che ho provato:

install.packages("ggplot2")
library(ggplot2)

# pie graph for party
pie <- ggplot(data=data, aes(x = as.factor(data$Q7), fill = factor(cyl)))
pie + coord_polar(theta = "y")

Restituisce un errore: "Nessun livello nella trama"

Grazie per l'aiuto!

risposte:

26 per risposta № 1

I grafici polari in ggplot sono in pratica trasformati in grafici a barre impilati, quindi è necessario geom_bar per farlo funzionare. Useremo un singolo gruppo (x = factor(1)) per riunire tutti i valori e fill sulla colonna di interesse per dividere l'area. A questo punto otterrai un grafico a barre con una sola barra.

bar <- ggplot(data, aes(x = factor(1), fill = factor(Q7))) + geom_bar(width = 1)
bar

inserisci la descrizione dell'immagine qui

Tutto ciò che resta è da aggiungere coord_polar:

pie <- bar + coord_polar(theta = "y")
pie

inserisci la descrizione dell'immagine qui

Puoi aggiungere theme_void() per eliminare gli assi e le etichette:

pie + coord_polar(theta = "y") + theme_void()

inserisci la descrizione dell'immagine qui