2016-01-05 111 views
3

因爲兩天我試圖解決這個問題。這個疊加直方圖的條形圖不會相互打印。他們自由地飄蕩。GnuPlot:疊加柱狀圖導致懸停的酒吧

其次,我只想打印任何第五個xtic標籤。我使用GNUPLOT V 4.6 PATCHLEVEL 6. hovering bars in stacked bargraph

這裏是第一個數據行(用LibreOffice的生成):

05.06,-,-,1 
06.06,3,-,0 
07.06,12,-,3 
08.06,0,5,4 
09.06,7,2,0 
10.06,86,2,1 
11.06,31,4,1 
12.06,17,1,0 
01.07,1,7,1 

這裏談到的命令集:

gnuplot> set datafile separator ',' 
gnuplot> set style data histogram 
gnuplot> set style histogram rowstacked 
gnuplot> set style fill solid border -1 
gnuplot> set xlabel "Zeit" 
gnuplot> set ylabel "Anzahl" 
gnuplot> set yrange [0:250] 
gnuplot> plot 'test.csv' using 2:xtic(1) title "Menge A",'' 
gnuplot> using 3:xtic(1) title "Menge B",'' 
gnuplot> using 4:xtic(1) title "Menge C" 

回答

1

的Gnuplot似乎得到與-混淆爲僅列內容。另外一個set datafile missing '-'沒有幫助。你需要用真空字段數據文件,如

05.06,,,1 
06.06,3,,0 
07.06,12,,3 

如果你不能得到的LibreOffice保存數據文件正常,你可以使用例如sed來處理即時文件:

plot "< sed 's/-//g' test.csv" using 2:xtic(1), '' ... 

(這正常工作,如果你沒有負值,這我想是這樣)。

到第二部分:與其xtic(1)你也可以把其計算結果爲xtic內的字符串的任何表情,像

xtic(int($0)%5 == 0 ? strcol(1) : '') 

它使用字符串中的第一列xticlabel如果行號碼是的5的倍數,否則一個空字符串:

set datafile separator ',' 
set style data histogram 
set style histogram rowstacked 
set style fill solid border -1 
set xlabel "Zeit" 
set ylabel "Anzahl" 
set yrange [0:*] 
plot '< sed "s/-//g" test.csv' using 2:xtic(int($0)%5 == 1 ? strcol(1) : '') title "Menge A",\ 
    '' using 3 title "Menge B",\ 
    '' using 4 title "Menge C" 

enter image description here

+0

謝謝你的正確答案 - 只是設置數據文件丟失' - '也沒有爲我工作。我從數據文件中刪除了任何破折號,一切都很順利。 –

1

作爲克里斯toph已經解釋過,問題是由輸入數據中的-造成的。
因此,最好和最乾淨的解決方案是使LibreOffice顯示丟失數據的方式不同。

但是,當我掩蓋using COLUMNNUMBER部分​​時,一切正常。因此,我改變了你的代碼的最後一行

plot 'test.csv' u ($2):xtic(1) t "Menge A", '' u ($3) t "Menge B", \ 
    '' u ($4) t "Menge C" 

正如你看到的,可以縮短usingutitlet。此外,您應該僅對第一個數據集使用:xtic(1)
這裏是我的outoput enter image description here