2014-04-27 26 views
5

Ho un grafico con un set di punti per diversi valori x: 5 punti per x = 0,5, 5 punti per x = 0,6, ..., 5 punti per x = 1,4, 5 punti per x = 1,6.GNUPlot: come posso creare un boxplot per ogni valore x?

Ora voglio creare un boxplot per ognuno di questi valori x. Ma in qualche modo tutti i miei boxplot sono x = 0.5. Voglio che i boxplot vengano creati al valore x corretto. La distanza tra 2 valori può essere diversa. I miei valori x correnti sono 0,5, 0,6, 0,7, 0,8, 0,9, 1,0, 1,2, 1,4 e 1,6, ma potrebbero anche essere diversi per un grafico diverso. Come potrei farlo?

Questo è lo script GNUPlot per i miei punti: https://dl.dropboxusercontent.com/u/26464165/Points.gnu

Questo è lo script GNUPlot per i miei grafici a scatole: https://dl.dropboxusercontent.com/u/26464165/Boxplots.gnu

Grazie per il vostro tempo!

+0

No, voglio i grafici a scatole. Voglio mostrare quanto i valori y variano per ciascun valore x. Si tratta di risultati di diverse esecuzioni di test. – John

risposta

8

È necessario riorganizzare i dati per i boxplot. Le statistiche sono calcolate su colonne complete. Quindi, è necessario riorganizzare i dati come:

# 1.0 1.2 1.4 ... 
2.2 2.2 3.06 
2.0 2.46 2.93 
2.2 2.46 3.06 
2.0 2.4 2.8 
1.73 2.33 2.8 

Poi si può tracciare con:

set style fill solid 0.25 border -1 
set style boxplot outliers pointtype 7 
set style data boxplot 

set title 'My Plot' font 'Arial,14'; 
set xtics ('1.0' 1, '1.2' 2, '1.4' 3) 
plot for [i=1:3] 'data.txt' using (i):i notitle 

il risultato con 4.6.4 è:

enter image description here

Invece di scrivere il xtics manualmente, è possibile estrarli (con gli strumenti della riga di comando Unix), come mostrato ad esempio in https://stackoverflow.com/a/10799204/2604213:

header = "`head -1 data.txt | cut -b 2-`" 
set for [i=1:words(header)] xtics (word(header, i) i) 
+0

Grazie per l'aiuto. Il mio più grande problema era il modo in cui sono stati organizzati i miei dati. Ho riorganizzato i miei dati e lo sto tracciando in questo modo: 'trama '-' usando (0.5): 1, '-' usando (0.6): 1, '-' usando (0.7): 1, '-' usando (0.8): 1, '-' usando (0.9): 1, '-' usando (1.0): 1, '-' usando (1.2): 1, '-' usando (1.4): 1, '-' usando (1.6): 1; ' – John

+0

Oh sì, questa è la strada da percorrere se si desidera mantenere le posizioni sull'asse numerico. – Christoph

1

risposta di Christoph va bene se si conosce il numero di livelli (colonne) e le loro nomi (xtics) prima del tempo. Altrimenti, http://soc.if.usp.br/manual/gnuplot-doc/htmldocs/boxplot.html fornisce una soluzione con il quarto campo dell'istruzione using (using x:data:width:level).

Hai messo tutti i dati in una colonna, con una colonna fattore che accompagna dando il livello per ogni dato:

2.2 1.0 
2.2 1.2 
3.06 1.4 
2.0 1.0 
... 

L'ordine i dati appaiono in non importa fintanto che i livelli siano corretti . Il livello viene convertito in una stringa, che sovrascrive gli xtics.

sceneggiatura di Modifica Christoph,

set style fill solid 0.25 border -1 
set style boxplot outliers pointtype 7 
set style data boxplot 

plot "data.txt" using (1):1:(0.5):2 

genererà il seguente:

Boxplot generated with GNUPlot using a factor column

Problemi correlati