Come è possibile creare un istogramma in cui il centro di ciascuna barra si trova lungo un asse comune? Questo apparirebbe come una trama di violino con bordi a forma di gradino.Istogramma simmetrico e violino simile alla trama?
Mi piacerebbe farlo in Lattice e non mi interessa personalizzare le funzioni del pannello, ecc., Ma sarei felice di utilizzare la grafica di base R o anche ggplot2. (Non mi sono ancora gettato in ggplot2, ma a un certo punto lo farò.)
(Perché voglio fare questo? Penso che potrebbe essere un utile sostituto per una trama di violino quando i dati sono discreti e si verifica in alcuni valori numerici equidistanti di [5-50] .Ogni bin rappresenta quindi un punto, naturalmente potrei semplicemente generare un normale istogramma, ma penso che a volte sia utile visualizzare sia un box-and-whisker trama e trama di un violino: con dati discreti a intervalli regolari, un istogramma simmetrico con lo stesso orientamento di un boxplot consente di confrontare la struttura dettagliata dei dati con il boxplot, proprio come fa un diagramma di violino. In questo caso l'istogramma simmetrico potrebbe essere più informativo di una trama di violino. (Un beanplot potrebbe essere un'altra alternativa per quello che ho appena descritto, anche se in realtà i miei dati non sono letteralmente discreti, ma convergono in prossimità di una serie di valori regolari. Questo rende il pacchetto beanplot di R meno utile per me, a meno che non normalizzi i valori mappandoli al valore normale più vicino.)
Ecco un sottoinsieme di 30 osservazioni di alcuni dati, che viene generato da un agente- simulazione basata:
df30 <- data.frame(crime.v=c(0.2069526, 0.2063516, 0.06919754,
0.2080366, -0.06975912, 0.206277, 0.3457634, 0.2058985, 0.3428499,
0.3428159, 0.06746109, -0.07068694, 0.4826098, -0.06910966, 0.06769761,
0.2098732, 0.3482267, 0.3483602, 0.4829777, 0.06844112, 0.2093492,
0.4845478, 0.2093505, 0.3482845, 0.3459249, 0.2106339, 0.2098397,
0.4844956, 0.2108985, 0.2107984), bias=c("beast", "beast", "beast",
"beast", "beast", "beast", "beast", "beast", "beast", "beast", "beast",
"beast", "beast", "beast", "beast", "virus", "virus", "virus", "virus",
"virus", "virus", "virus", "virus", "virus", "virus", "virus", "virus",
"virus", "virus", "virus"))
un dataframe nome df
con un set completo di 600 osservazioni in un file RDATA può essere scaricato da questo link: CVexample.rdata.
I valori crime.v
sono tutti vicino ad una delle seguenti, che chiamerò foci:
[1] -0.89115386 -0.75346155 -0.61576924 -0.47807693 -0.34038463 -0.20269232 -0.06500001
[8] 0.07269230 0.21038460 0.34807691 0.48576922 0.62346153 0.76115383 0.89884614
(I valori crime.v
sono effettivamente medie di 13 variabili, i cui valori possono variare da -1 a 1, ma che finiscono per convergere in valori che si trovano nelle vicinanze di .9 o -.9. Le medie di 13 valori intorno a 0,9 o -9 sono un po 'vicine ai fuochi. In pratica ho determinato i valori appropriati per i fuochi esaminando il dati, poiché sono necessarie alcune variazioni aggiuntive.)
Una trama di violino può essere prodotta con:
require(lattice)
bwplot(crime.v ~ bias, data=df30, ylim=c(-1,1), panel=panel.violin)
Se si esegue questo con il set di dati più grandi, vedrete che una delle trame violino prodotta è multimodale, mentre l'altro non lo è. Tuttavia, questo non sembra riflettere una differenza nei dati sottostanti i due grafici del violino; è un artefatto dovuto alla posizione dei fuochi in relazione alla trama, per quanto posso dire. Posso attenuare la differenza modificando i parametri di density
passati a panel.violin, ma sarebbe più semplice rappresentare solo quanti punti ci sono in ogni cluster.
Grazie!
Hai provato a iniziare e manipolare per soddisfare le tue esigenze? http://docs.ggplot2.org/0.9.3/geom_violin.html –
No, ma grazie per questa pagina molto informativa. Potrei provarlo. (Sembra che la documentazione di ggplot sia più facile da usare in qualche modo rispetto alla documentazione di lattice, che non è una critica al reticolo.) – Mars
In questo caso, i dati di esempio sarebbero davvero utili. Come sembra piuttosto interessante. – Henrik