我正在尝试使用 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
这是 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
对于这个例子,我取了 10x10 点,所以传递的坐标应该是这样的:
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 坐标。
有人知道我在做什么错吗?