繁体   English   中英

使用C#在GNU PLOT中绘制图形

[英]Plotting graph in GNU PLOT using C#

我有一个dat文件insert.dat

内容如下:

1000    0.002322044 0.00291182
5000    0.000103257 0.000458963
10000   2.50E-05    0.000172019
20000   6.18E-06    6.03E-05
40000   2.51E-06    2.65E-05
60000   1.65E-06    1.71E-05
80000   1.21E-06    1.23E-05
100000  1.01E-06    9.97E-06

当我打开gnuplot.exe并键入带有行的plot insert.dat时,会得到正确的输出,但是当我编写C#代码时,如下所示:

private  void GNUPlot()
{
    string pgm = @"E:\gnuplot\bin\gnuplot.exe";

    Process extPro = new Process();
    extPro.StartInfo.FileName = pgm;
    extPro.StartInfo.UseShellExecute = false;
    extPro.StartInfo.Standardization = true;
    extPro.Start();

    StreamWriter gnupStWr = extPro.StandardInput;
    gnupStWr.WriteLine("plot \"insert.dat\" with lines ");
    gnupStWr.Flush();
}

我收到以下警告:

warning: Skipping unreadable file "insert.dat"

当我更换

gnupStWr.WriteLine("plot \"insert.dat\" with lines ");

gnupStWr.WriteLine("plot sin(x) ");

我得到所需的Sin(x)图输出。

insert.datgnuplot的当前目录中。 我想绘制insert.dat文件数据。

问题似乎是gnuplot找不到所需的文件。 进程的工作目录未设置为gnuplot目录,但可能设置为正在调用gnuplot的应用程序的目录。

编辑尝试extPro.Start()添加到extPro.Start()命令之前的代码中:

extPro.StartInfo.WorkingDirectory = @"E:\gnuplot\bin";

要么

Environment.CurrentDirectory = @"E:\gnuplot\bin";

如果这不起作用,则可能是因为您的应用程序对该目录没有读取权限。 尝试将您的insert.dat文件放在任何客户端应用程序都可以肯定地访问的目录中。

顺便说一句,我也无法识别您正在使用的Standardization属性? 该行应改为:

extPro.StartInfo.RedirectStandardInput = true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM