2010-11-14 7 views
1

J'ai un certain nombre d'ensembles de données numériques que j'ai calculé moyennes, médianes, déviations, minima et maxima de, et je voudrais les visualiser (sur Linux, sans X, à un fichier d'image). J'ai vu la fonctionnalité de gnuplot pour tracer des barres d'erreur, mais j'ai quelques problèmes avec eux: Mes ensembles de données sont regroupés de façon plutôt serrée le long de l'axe X, et les barres d'erreur de gnuplot occupent un peu trop d'espace le long du Axe X; et je l'ai seulement vu être capable de tracer un minimum et un maximum avec un point de données entre (vraisemblablement pour une moyenne), et je ne vois pas de bonne façon d'ajuster la médiane et la déviation dans ce modèle.Tracer des données statistiques, de préférence en utilisant gnuplot

Est-ce que quelqu'un connaît un moyen de contourner ces problèmes dans gnuplot? Ou y a-t-il peut-être un meilleur programme que gnuplot?

Répondre

1

J'utilise le package lattice de R pour la représentation graphique de données statistiques.

Vous pouvez jeter un oeil à la R Graph Gallery pour les exemples de scripts qui rendent les barres d'erreur («intervalles de confiance»).

Vous n'avez pas besoin de X pour afficher les graphiques. Enveloppez la fonction de tracé de réseau dans un dispositif postscript, avant l'impression:

mtxf.ps <- "myBarchart.ps" 
postscript(mtxf.ps, 
      width = 6, 
      height = 4, 
      paper = 'special', 
      horizontal = F) 
mtx.p <- barchart(...) 
print(mtx.p) 
dev.off() 

Ce bout de code imprime le barchart à un fichier PostScript, que vous pouvez convertir avec Imagemagick en PNG ou autres formats:

$ convert -density 200 myBarchart.ps myBarchart.png 

R est un peu un langage étrange, mais expressif une fois que vous comprendre ses bizarreries. This est un très bon livre d'introduction sur R, et this est un très bon livre sur la façon d'utiliser lattice dans différents scénarios.

+0

Je pensais presque que R serait la réponse. :) Je suppose que ce serait une bonne occasion de le vérifier, alors. Merci! – Dolda2000

1

Je pense que vous ne devriez pas mettre la moyenne et la moyenne dans la même intrigue, car elles sont fondamentalement différentes.

Une méthode standard pour afficher les statistiques médianes est le "box-and-whisker"-plot, qui indique le minimum, le premier quartile, la médiane, le troisième quartile et le maximum. Afin d'obtenir que gnuplot, vous devez faire plusieurs passes en utilisant multicourbes:

set multiplot 
set style fill empty 
set boxwidth 0.4 
plot "data" using 1:3:2:6:5 with candlesticks lt -1 lw 5 notitle,\ 
    '' using 1:4:4:4:4 with candlesticks lt -1 lw 10 notitle 
set boxwidth 0.3 
plot "data" using 1:2:2:2:2 with candlesticks lt -1 lw 5 notitle,\ 
    '' using 1:6:6:6:6 with candlesticks lt -1 lw 5 notitle 

Cela suppose que votre fichier « données » contient les colonnes x-valeur, minimum, premier quartile, la médiane, le troisième quartile, maximum dans cet ordre. Bien sûr, vous pouvez jouer avec les boxwidths, les types de lignes (lt) et les largeurs de ligne (lw) pour obtenir ce dont vous avez besoin.

Si vous voulez à la place la moyenne avec écart-type, vous pouvez utiliser les barres d'erreur standard; Je crois que vous pouvez utiliser boxwidth pour ajuster la taille des barres d'erreur. Pour définir le type de sortie, utilisez le set terminal. Je recommande d'utiliser un format vectoriel afin d'éviter la pixellisation. Vous pouvez voir quels terminaux sont disponibles dans votre installation avec help set terminal à l'invite gnuplot. En outre, utilisez l'option butt pour cela, si disponible (cela empêche les lignes de "dépasser").

0

En plus de la réponse de Svante, vous pouvez utiliser

set bars small 

pour enlever le « x-partie » aux barres d'erreur.Par exemple,

#!/bin/bash 
echo "1 2 2.0 2.4 
2 4 3.9 4.5 
3 1.4 0.1 1.5 
4 2.9 2.2 4" > "data.dat" 
gnuplot<<EOF 
set term png small; set output "data.png" 
set xrange [0:5]; set yrange [0:5] 
set bars small 
plot "./data.dat" using 1:2:3:4 with errorbars 
set output ; set term pop 
EOF 

Tom

0

Vous pouvez regarder la MathGL - il est une bibliothèque de traçage GPL qui peut tracer dans la console (ne pas besoin X). Et il a un grand ensemble de types graphiques (y compris ceux pour les données à 2 et 3 plages) que gnuplot.

Questions connexes