In R, ho un data.frame come quello nella parte superiore dell'immagine.Crea barplot da data.frame
Esiste la possibilità di creare un barattolo come quello nella parte inferiore dell'immagine?
In R, ho un data.frame come quello nella parte superiore dell'immagine.Crea barplot da data.frame
Esiste la possibilità di creare un barattolo come quello nella parte inferiore dell'immagine?
Utilizzando la grafica di base si può fare questo semplicemente:
mydf <- data.frame(X1=c(A=2, B=4, C=1), X2=c(3,2,NA), X3=c(4,1,NA))
barplot(t(as.matrix(mydf)), beside=TRUE)
Utilizzando le chiamate aggiuntive a axis
possono dare l'etichettatura più come nella questione.
questa dovrebbe essere la risposta accettata: perché utilizzare due librerie per svolgere un compito così semplice? –
perché la conversione in una matrice e quindi una tabella potrebbe aggiungere un sacco di spese generali se si dispone di un file df di grandi dimensioni? – wordsforthewise
@wordforthewise, se il df è così grande che questo overhead è addirittura notabile (per non parlare di un problema) allora un barplot non è probabilmente la migliore visualizzazione di esso comunque. –
Supponendo, che non si vuole in uscita ASCII, ecco una soluzione utilizzando ggplot2
:
# load/generate your data
mydf <- data.frame(X1 = c(2,4,1), X2 = c(3,2,NA), x3 = c(4,1,NA), row.names=c("A","B","C"))
mydf$Category <- row.names(mydf)
# bring your data to long format as needed by ggplot
library(reshape2)
mydf.molten <- melt(mydf, value.name="Count", variable.name="Variable", na.rm=TRUE)
# plot and facet by categories
library(ggplot2)
qplot(data=mydf.molten, x = Variable, y = Count, geom="bar", stat = "identity") + facet_wrap("Category")
Per ulteriori dettagli, vi consiglio di consultare il ggplot2 manual, in particolare il capitolo su geom_bar
e facet_wrap
.
Ha funzionato per me! Grazie! – ElPatzo
ha ottenuto questo errore con il tuo codice: '> mydf.molten <- melt (mydf, value.name =" Conteggio ", variable.name =" Variabile ", na.rm = TRUE) Utilizzo della categoria come variabili di identificazione > qplot (data = mydf.molten, x = Variabile, y = Conteggio, geom = "bar", stat = "identità") + facet_wrap ("Categoria") Errore: stat_count() non deve essere utilizzato con estetici. Inoltre: Messaggio di avviso: 'stat' è deprecato' –
@Mona Jalal; 'ggplot2' è cambiato dal 2013, specialmente quando è stato aggiornato da ver. Da 1.xxx a 2.xxx. – cuttlefish44
Se si intende un output ASCII, provare il pacchetto 'txtplot'. –
Siamo spiacenti, questo era solo un esempio;) Voglio avere una trama come quella che ottengo con la funzione barplot – ElPatzo
Probabilmente vuoi cambiare il titolo della tua domanda? In realtà vuoi creare un barplot da un data.frame e non viceversa. – Beasterfield