使用 gnuplot 在 java 中绘图给了我一条线

问题描述 投票:0回答:1

我正在用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 个图。问题是,我在绘图时遇到麻烦,因为我只得到一条水平线。有人可以帮忙吗?

我尝试过改变我正在绘制的列,并在绘图上尝试过不同的比例。

java gnuplot
1个回答
0
投票

正如 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 ° 
© www.soinside.com 2019 - 2024. All rights reserved.