2014-06-06 5 views
1

Nous avons travaillé avec des chandeliers sur des données financières réelles. Cela fonctionne très bien, sauf si j'ai des lacunes dans les données, qui sont nombreuses avec des données financières historiques. J'ai eu "set boxwidth 1 relatif" et cela fonctionne bien, il me donne une "largeur" ​​appropriée du chandelier dans la plupart des cas. Mais s'il n'y a pas de données entre 2 points, le chandelier deviendra plus gros, c'est-à-dire qu'il s'étendra droit pour combler ce vide. Le visuel est horrible, l'extension vers la droite est vraiment mauvaise.Gnuplot Candlesticks et boxwidth

J'ai essayé de jouer avec set boxwidth x absolute, mais je n'arrive pas à comprendre comment il est affiché. Je l'ai réduit à set boxwidth 37500 absolute et je n'ai aucune idée de la raison pour laquelle ce nombre fonctionne, même s'il a des problèmes encore plus graves que l'ensemble relatif boxwidth 1.

La première image est ce à quoi elle ressemble en utilisant set boxwidth 37500 absolute. Les dates sont les 31/01/13, 02/01/13, 02/03/13, 02/04/13, 02/05/13. Il n'y a pas 02/02/13:

enter image description here

L'absolu montre un écart approprié entre 02/01 et 02/02, mais 02/03 et 02/04 se chevauchent pour des raisons que je ne peux pas expliquer.

La deuxième image utilise set boxwidth 1 relatif. Cela l'a surtout comme je le veux. Les chandeliers sont adjacents et surtout à droite. Mais l'écart le 02/02/13 il se faufile vers la droite. Il y a aussi un écart le 02/09/13 où il se faufile aussi, ou peut-être les 2 de chaque côté s'étendent pour combler le vide que je ne connais pas.

enter image description here

Comment puis-je configurer cela pour que tous les chandeliers sont les mêmes adjacents et la largeur des lacunes dans les données sont vides?

Je l'ai googlé comme un fou et personne n'en parle. Les quelques exemples de chandeliers que j'ai trouvés n'utilisent pas des «dates» mais des entiers, totalement sans valeur. Les graphiques en chandelier exigent des dates selon le manuel.

Courir Gnuplot 4.6 patchlevel 0 sur Windows 7.

Merci

PS: Je aurais dû ajouter des données ici va.

basic.csv:

2013-01-15 00:00:00,93.879000,93.949000,92.874000,93.078000 
2013-01-16 00:00:00,93.079000,93.672000,92.458000,92.800000 
2013-01-17 00:00:00,92.799000,95.011000,92.629000,94.616000 
2013-01-18 00:00:00,94.617000,94.872000,94.157000,94.662000 
2013-01-20 17:00:00,94.649000,94.820000,93.965000,94.155000 
2013-01-21 00:00:00,94.159000,94.938000,93.726000,94.009000 
2013-01-22 00:00:00,94.011000,94.284000,93.147000,93.231000 
2013-01-23 00:00:00,93.229000,94.024000,92.793000,93.649000 
2013-01-24 00:00:00,93.650000,94.715000,93.559000,94.489000 
2013-01-25 00:00:00,94.490000,95.083000,94.472000,94.749000 
2013-01-27 17:00:00,94.819000,95.007000,94.652000,94.834000 
2013-01-28 00:00:00,94.835000,94.968000,94.082000,94.809000 
2013-01-29 00:00:00,94.803000,95.330000,94.370000,95.248000 
2013-01-30 00:00:00,95.245000,95.450000,94.255000,94.365000 
2013-01-31 00:00:00,94.372000,95.799000,94.328000,95.714000 
2013-02-01 00:00:00,95.715000,96.718000,95.457000,96.597000 
2013-02-03 17:00:00,96.716000,96.777000,96.370000,96.572000 
2013-02-04 00:00:00,96.574000,97.064000,95.968000,96.044000 
2013-02-05 00:00:00,96.043000,97.426000,95.945000,97.131000 
2013-02-06 00:00:00,97.133000,97.284000,96.092000,96.395000 
2013-02-07 00:00:00,96.396000,97.023000,95.813000,96.145000 
2013-02-08 00:00:00,96.146000,96.182000,95.124000,95.625000 
2013-02-10 17:00:00,95.623000,95.744000,95.210000,95.339000 
2013-02-11 00:00:00,95.336000,96.877000,95.168000,96.537000 
2013-02-12 00:00:00,96.536000,96.719000,95.776000,96.214000 
2013-02-13 00:00:00,96.216000,96.890000,96.114000,96.775000 
2013-02-14 00:00:00,96.771000,96.964000,95.609000,95.621000 
2013-02-15 00:00:00,95.622000,96.676000,95.521000,96.351000 

absolute.plt:

reset 

set border linecolor rgbcolor "yellow" 
set key textcolor rgbcolor "white" 

set obj 1 rectangle behind from screen 0,0 to screen 1,1 
set obj 1 fillstyle solid 1.0 fillcolor rgbcolor "black" 

set xdata time 
set timefmt"%Y-%m-%d %H:%M:%S" 
set xrange ["2013-01-15 00:00:00":"2013-02-15 23:59:59"] 

set yrange [*:*] 
set datafile separator "," 

set palette defined (-1 'red', 1 'green') 
set cbrange [-1:1] 
unset colorbox 

set style fill solid noborder 
set boxwidth 37500 absolute 

set title "AUDJPY" textcolor rgbcolor "white" 
plot 'basic.csv' using 1:2:4:3:5:($5 < $2 ? -1 : 1) with candlesticks palette 

relative.plt:

reset 

set border linecolor rgbcolor "yellow" 
set key textcolor rgbcolor "white" 

set obj 1 rectangle behind from screen 0,0 to screen 1,1 
set obj 1 fillstyle solid 1.0 fillcolor rgbcolor "black" 

set xdata time 
set timefmt"%Y-%m-%d %H:%M:%S" 
set xrange ["2013-01-15 00:00:00":"2013-02-15 23:59:59"] 

set yrange [*:*] 
set datafile separator "," 

set palette defined (-1 'red', 1 'green') 
set cbrange [-1:1] 
unset colorbox 

set style fill solid noborder 
set boxwidth 1 relative 

set title "AUDJPY" textcolor rgbcolor "white" 
plot 'basic.csv' using 1:2:4:3:5:($5 < $2 ? -1 : 1) with candlesticks palette 

Répondre

4

Lors de l'utilisation set boxwidth absolute, la largeur est donnée en unités de l'axe x, qui, dans le cas de dates est secondes. Ainsi, une largeur de 37500 est de 10 heures.

Vous pouvez également utiliser une largeur explicite dans la 6e colonne et passer à -2 pour obtenir une largeur de boîte automatique pour certaines colonnes. Cela cependant vous obligerait à manipuler votre fichier de données à la main.

Un autre point: Est-il essentiel que vous incluiez les heures dans certains points de données? C'est ce qui rétrécit la distance de quelques points adjacents.Vous pourriez ignorer les heures, ce qui vous donnerait une distance d'au moins un jour. Pour dépouiller les heures, utilisez strptime dans la déclaration using:

reset 

set border linecolor rgbcolor "yellow" 
set key textcolor rgbcolor "white" 

set obj 1 rectangle behind from screen 0,0 to screen 1,1 
set obj 1 fillstyle solid 1.0 fillcolor rgbcolor "black" 

set xdata time 
set timefmt"%Y-%m-%d %H:%M:%S" 
set xrange ["2013-01-15 00:00:00":"2013-02-15 23:59:59"] 

set yrange [*:*] 
set datafile separator "," 

set palette defined (-1 'red', 1 'green') 
set cbrange [-1:1] 
unset colorbox 

set style fill solid noborder 
set boxwidth 60000 absolute 

set title "AUDJPY" textcolor rgbcolor "white" 
plot 'basic.csv' using (strptime('%Y-%m-%d', strcol(1))):2:4:3:5:($5 < $2 ? -1 : 1) with candlesticks palette 

Résultat avec 4.6.0:

enter image description here

+0

Merci, je regardais les documents et ne pouvait pas vérifier qu'il était en quelques secondes. – Bodger