我正在用java编程,我必须用一些值绘制一个图。我想要绘制的值被写入一个名为“cleanOutput.txt”的文件中,并且它们由“;”分隔。我正在 GnuPlot 中的脚本文件上编写以下命令:
try (PrintWriter writer = new PrintWriter(ficheiroComando)) {
writer.write("set datafile separator \";\"\n");
writer.write("set size ratio 0.75\n");
writer.write("set format x \"%.5f\"\n");
writer.write("set terminal png\n");
writer.write("set output '" + output + "'\n");
writer.write("plot [0:30][0:1]'" + input + "' using 1:2 with lines title 'Suscetiveis' lc rgb 'red',\\\n");
writer.write("'" + input + "' using 1:3 with lines title 'Infetados' lc rgb 'blue',\\\n");
writer.write("'" + input + "' using 1:4 with lines title 'Recuperados' lc rgb 'green'\n");
}
我可以使用任何外部图书馆,因为这是一个学校项目。这里有一些文档输入行可以为您提供一些上下文:
0,000000;0,500000;0,300000;0,200000;
0,200000;0,501467;0,299024;0,199509;
0,300000;0,502929;0,298052;0,199019;
0,400000;0,504385;0,297084;0,198531;
0,500000;0,505835;0,296121;0,198044;
0,600000;0,507280;0,295162;0,197558;
0,700000;0,508718;0,294207;0,197074;
0,800000;0,510152;0,293257;0,196591;
我想得到一个图,其中第一列是 x,然后后面的每一列都是 y,这样我在同一个网格上就有 3 个图。问题是,我在绘图时遇到麻烦,因为我只得到一条水平线。有人可以帮忙吗?
我尝试过改变我正在绘制的列,并在绘图上尝试过不同的比例。
正如 user85421 在评论中指出的,小数点是问题所在。默认值通常是小数点
.
。
如果您在 gnuplot 控制台中输入 show decimalsign
,您可能会得到如下内容:
decimalsign for input is .
decimalsign for output is .
degree sign for output is °
因此,请注意input(输入数据)和output(图中的数字)有小数点符号设置。在 gnuplot 控制台中输入
help decimalsign
。这有点令人困惑:set decimalsign ','
不会将您的输入数据小数点符号设置为,
。
如果您输入:
set decimalsign locale "French" # or "German" will also work
set decimalsign "."
输入
show decimalsign
后,您将得到:
decimalsign for input is ,
decimalsign for output is .
degree sign for output is °