2012-12-09 13 views
9

W GnuPlot:Miesiąc tiki, jak ustawić

Jak ustawić xtics na 1 każdego miesiąca?

Zestaw Xtics nie byłby dla mnie odpowiedni, ponieważ liczba sekund na miesiąc jest różna.

nie działa dla mnie, ponieważ miesiące są wyświetlane bez lat i nie jest pokazane, do którego roku należy miesiąc.

+0

Chciałbym zobaczyć rozwiązanie tego osobiście; Z mojego doświadczenia wynika, że ​​gnuplot jest dość słaby w formatowaniu x danych, gdy dane są czasem. – andyras

Odpowiedz

17

Wydaje mi się, że gnuplot radzi sobie z zaskakująco dobrze. Zakładam, że dane w formacie następujący (lub podobny):

05/17/12 0.8188064359 
05/18/12 0.97297057 
05/21/12 0.9012782504 

użyłem liczb losowych rozłożone na półtora roku, aby przetestować.

Więc najpierw trzeba powiedzieć gnuplot Twój współrzędna x jest czas i to, co jest format jest napisane w:

set xdata time 
set timefmt "%m/%d/%y" 

Odtąd gnuplot spodziewa wszystkie zakresy w określonym formacie, w tym xtics i polecenia xrange. Jedynym wyjątkiem jest przyrost w xtics, który powinien być w sekundach.

set xrange ["05/01/12":"08/01/13"] 
set xtics "01/01/12",2592000,"08/01/18" 

Teraz można argumentować, że liczba sekund w każdym miesiącu jest inny przez cały dzień (a właściwie 2 dni w lutym). Jednak autorzy gnuplot również myślą o tym i rozwiązali problem zgodnie z naszymi upodobaniami. Innymi słowy, powyższe zapewni tiki co 1 miesiąc. Tutaj mogę tylko zasugerować, aby określić format wydruku na xtics

set format x "%d %b %Y" 

co spowoduje „01 maja 2012”, itp Po tym, plot danych. Och, przy użyciu czas na osi x, gnuplot wymaga using w komendzie w plot, więc nawet z błahego pliku danych jak miałem, musiałem użyć

plot 'data.txt' using 1:2 

użyłem wersji Gnuplot 4,6 patchlevel 0 i wyjście Terminal postscript. Jeśli będziesz mieć inne doświadczenia z wersją lub terminalem, daj mi znać w komentarzach.

+0

To jest magia! Dziękuję Ci! To zasługuje na więcej upvotes imo ... – JohnC

1

set xtics będzie działać poprawnie, jeśli ustawisz liczbę sekund na średnią liczbę sekund w miesiącu.

Pracowałem na to uwagę przy założeniu 365.2425 dni w przeciętnym roku, dzieląc przez 12, aby znaleźć średnia liczba dni w miesiącu (około 30,4), mnożąc przez godzin dziennie, następnie sekund na godzinę, tj:

365.2425/12 * 24 * 3600 = 2629746 

Zakładając danych został sformatowany jako rok-miesiąc i wartości, czyli:

2016-01 10000 
2016-02 12000 
2016-03 10500 

Potem trzeba poleceń takich jak:

set xdata time 
set timefmt "%Y-%m" 
set format x "%b/%y" # Or some other output format you prefer 
set xtics "2016-01", 2629746, "2016-03" 
plot "mydata.dat" using 1:2 with linespoints 

Jeśli chcesz ustawić xtics w wielokrotnościach miesięcy, po prostu dodaj mnożnik w linii set xtics, np.g dostać znaki kwartalne:

set xtics "2016-01", 3*2629746, "2016-12" 

Uważam, że jeśli zakłada liczbę dni w miesiącu, aby mieć 30 lub 31 a nawet więcej w pewnym momencie na wykresie miesięcy będzie brakowało ich xtics.