我試圖使用顯示與JavaPlot這段代碼頻譜圖:頻譜圖使用JavaPlot不工作
PlotStyle style = new PlotStyle();
style.setStyle(Style.IMAGE);
DataSetPlot data = new DataSetPlot(points);
data.setPlotStyle(style);
JavaPlot plot = new JavaPlot();
plot.addPlot(data);
plot.plot();
凡點是因爲他們在這樣的命令行中使用gnuplot的工作時有效:
gnuplot --persist -e 'plot "data.dat" w image'
問題是上面這段代碼根本沒有顯示任何圖像,它全是白色的。但是前面的命令工作正常,data.dat包含完全相同格式的點。運行代碼時不會出現錯誤。
下面是一些點的數據的一個例子:
0.0 193.0 0.18183826861232413
0.0 194.0 0.2467637036800797
0.0 195.0 0.43531750893288235
0.0 196.0 0.3893599780473012
0.0 197.0 0.3220816458659573
0.0 198.0 0.25389713892289173
0.0 199.0 0.22935136709597423
1.0 0.0 0.23021155472288352
1.0 1.0 0.33383157107150707
1.0 2.0 0.3745792715533692
1.0 3.0 2.028348052193793
1.0 4.0 2.4150235476868978
1.0 5.0 2.4169194327766736
1.0 6.0 1.8633442057577019
1.0 7.0 4.2682342944471054
1.0 8.0 3.22544345282322
這是sended通過JavaPlot到GNUPLOT命令:
set multiplot layout 1,2 rowsfirst downwards
_gnuplot_error = 1
plot '-' title 'Datafile 1' with image ; _gnuplot_error = 0
0.0 9.0 6.612583996900796
1.0 9.0 4.719585678813712
2.0 9.0 0.5475948495661151
3.0 9.0 0.7385211622757041
4.0 9.0 0.711512824841686
5.0 9.0 3.7572382303712604
6.0 9.0 1.0818137070547578
7.0 9.0 0.057188125070687344
8.0 9.0 0.8218555010675036
9.0 9.0 5.754170136586405
e
if (_gnuplot_error == 1) print '_ERROR_'
unset multiplot
quit
對於這個例子,我花了10×10點,所以通過座標應該是這樣的:
0.0 0.0 6.612583996900796
0.0 1.0 4.719585678813712
0.0 2.0 0.5475948495661151
0.0 3.0 0.7385211622757041
0.0 4.0 0.711512824841686
0.0 5.0 3.7572382303712604
0.0 6.0 1.0818137070547578
0.0 7.0 0.057188125070687344
0.0 8.0 0.8218555010675036
0.0 9.0 5.754170136586405
1.0 0.0 6.612583996900796
1.0 1.0 4.719585678813712
1.0 2.0 0.5475948495661151
1.0 3.0 0.7385211622757041
1.0 4.0 0.711512824841686
1.0 5.0 3.7572382303712604
1.0 6.0 1.0818137070547578
1.0 7.0 0.057188125070687344
1.0 8.0 0.8218555010675036
1.0 9.0 5.754170136586405
...
9.0 9.0 xxxxxxxxxxxxx
似乎JavaPlot沒有迭代Y座標阿泰。
有人知道我做錯了什麼嗎?
有沒有辦法檢查JavaPlot管道,看看gnuplot實際上看到了什麼命令? – mgilson 2012-07-23 15:09:28
我該怎麼做? – aitorkun 2012-07-23 15:15:21
不知道(我不知道java),但是,它肯定是可能的,因爲它是由另一個用戶完成的:http://stackoverflow.com/q/11396616/748858 - 也許而不是發送到'gnuplot。 exe',將它發送到另一個從stdin讀取的程序,並寫入一個臨時文件... – mgilson 2012-07-23 15:18:12