gnuplot: Box-Whisker-Plot

Als ich mit gnuplot vernünftige Boxplots, sogenannte Box-Whisker-Plots, erstellen wollte, fand ich keine nativen Funktionen dafür. Trotzdem hab ich für dieses Problem ein Workaround ausgemacht: Man legt einfach zwei Candelsticks übereinander, der zweite dient einfach nur als flache Markierung für den Median als eine schwarzer Linie. Fertig ist der Boxplot. :)

Der Code sieht dann bei mir etwa so aus:

set size 1.0,1.0
set key box linestyle 1
set auto y
set auto x
set terminal png
set output "myBoxPlot.png"
set title "sample-boxplot"
set xlabel "evolution"
set ylabel "sequence relationen"
set boxwidth 0.4
plot 'tmp.plot' using 1:3:2:6:5 with candlesticks fs solid 0.7 title "upper / under quartil", \
'' using 1:4:4:4:4 with candlestick lt -1 fs solid 1.0 title "median"

Wobei in den eingelesenen Daten der erste Eintrag den entsprechenden boxplot spezifiziert, gefolgt von unteres Quartil und Minimum, dann Maximum und oberes Quartil im 5. und 6. Eintrag. Der Median wird dann im nächsten Plot aus dem 4. Eintrag genommen und einfach als flacher Candlestick dargestellt. Damit lassen sich Boxplot dann auch schön automatisiert aus csv-Dateien mit gegebenen Quartil- und Median-Werten mit gnuplot zeichnen.

Beispiel Boxplot mit gnuplot

Beispiel Boxplot mit gnuplot


Nebenbei vielleicht noch einmal bemerkt, in einem geordneten Array sind Median genau in der Mitte, unteres und oberes Quartil an der 1/4- bzw. 3/4-Stelle des Arrays. Minimum und Maximum sind dann natürlich 1. und letztes Arrayelement. :)
Es sieht nicht perfekt aus, und ein Nachteil ist auch, dass man keine Ausreißer darstellen kann. Aber gnuplot ist halt nur zum plotten und nicht berechnen. Naja, ich denke ich werd nächstes mal direkt was mit python und R machen, weil das Rechnen in nem Shell-Script dann doch zu schnell zu aufwendig wird. Aber funktionieren tut es. Wenns nicht automatisiert sein muss, würd ichs sogar eher mit gnumeric machen.

Share and Enjoy:
  • Twitter
  • Google Bookmarks
  • MisterWong.DE
  • del.icio.us
  • MySpace
  • Yigg
  • Slashdot
  • Technorati
  • PDF
  • email
  • Print

Tags: ,

Leave a Comment