2012-07-18 35 views
1

我已經得到了我想要的gnuplot繪製看起來像這樣的數據:gnuplot的:X2抽動的自動放置標籤

1.08 1 4.8 
1.53 2 5.9 
2.11 3 5.1 
2.60 4 6.0 

不,這是非常重要的,第一列的運行時間遺傳算法,第二列是世代數,第三列是平均適應度。

如果我使用plot datafile.dat using 1:3 with lines它看起來不錯,抽動適當間隔繪製。然而,雖然我希望x-tics被標記爲時間,但我希望x2-tics被標記爲世代數。這與plot datafile.dat using 1:3:x2ticlabels(2) with lines很容易實現,但對於x2軸,它會爲數據文件中的每一行添加一個記號,而不是自動選擇適當數量的記號。

我的全數據文件具有數千個條目的,這在圖的頂部,其中將抽動被間隔開,並且其中上述標籤將被放置較大的黑色實線導致黑色實線。即使我嘗試手動告訴gnuplot多久使用set x2tics 100將圖表放置在圖上,它仍會爲每個條目顯示它們。有沒有辦法來解決這個問題?顯然,我更喜歡顯示自動選擇哪個Tic,但如果我必須手動執行,那很好。全gnuplot的配置文件是非常基本的,只是:

set logscale y 10 
set x2tics 
plot datafile.dat using 1:3:x2ticlabels(2) with lines 

回答

0

這裏有一個解決方案,將只放一個標籤在數據文件中每隔一行。

plot 'test.dat' u 1:3:x2ticlabels(int($0)%2==0?stringcolumn(2):'') 

有一點有趣的是,這些抽搐並沒有完全符合要點。我還沒有弄明白爲什麼。有了成千上萬的點數,你可能不會注意到,但用4點的示例數據文件,這是顯而易見的。

不幸的是,它仍然在數據文件中的每一行上繪製軸的抽象圖。 set x2tics scale 0將使這些抽搐完全消失。

+0

謝謝,這很好。關於對齊問題,在我的文件中,第一個條目在t = 2.5,最後一個在t = 22.5,並且gnuplot從0-25縮放x軸。我注意到世代數似乎放置在整個圖上(所以「0」被置於t = 0而不是2.5之上),這可能提供一些線索,說明爲什麼它們不能正確排列。手動設置xrange使其不太明顯,但我不確定原因。 – user1535823 2012-07-19 17:39:44

+0

@ user1535823 - 我認爲如果明確地將兩個範圍設置爲相同的話,對齊問題就會消失:'set xrange [1:10];設置x2range [1:10]',但我不積極,我不明白他們爲什麼不自動縮放到相同的範圍。 – mgilson 2012-07-19 17:51:44