gnuplot - 如何保存与我在 xterminal 中设计的绘图相同的图形文件?

SDs*_*lar 3 graphics plot gnuplot

我制作情节已经有一段时间了,它们在屏幕上的表现正是我喜欢的方式。这些数据来自与太阳能收集和存储相关的传感器。

在屏幕上绘制的它们看起来很棒,所以我进行了屏幕区域捕获来保存它们。

所以现在我想自动化保存过程。

这是我到目前为止所做的:

  • 我设置了一个 cron 作业,以便它们在午夜运行,捕获一整天并将其保存为 .png 文件
  • 然后它将“today.dat”数据文件移动到按日期命名的存档中。
  • 这部分全部按设计工作。

但是,通过使用 .PNG,图像看起来不一样。我真的认为 png 将是最好的选择,但事实证明,用于 X 轴(HH:MM 刻度)的字体太粗并且它们一起运行。它看起来像是我的情节设计的蜡笔绘制版本。

有人可以给我一些指导,告诉我如何最好地以编程方式生成保存图,使它们看起来像我设计的那样吗?

use*_*153 5

正如上面评论中指出的,最好的方法可能是使用不同的终端输出到图像文件,并忽略生成的图像与使用 x11 终端时在屏幕上看到的图像不同的事实。但是,如果您确实需要精确的副本,(至少)有两个选择:

  1. 您可以自动化截取屏幕截图的过程。GPVAL_TERM_WINDOWID您甚至可以在 gnuplot 中执行此操作,变量包含当前绘图窗口的 X Windows ID,这可能会很方便。绘制绘图后,您可以使用它来制作窗口的屏幕截图:

    system(sprintf("xwd -id 0x%x | convert xwd:- screenshot.png", GPVAL_TERM_WINDOWID))
    
    Run Code Online (Sandbox Code Playgroud)

    这里我包含了一个将convertxwd 文件格式转换为 png 的调用。

  2. 另一种选择是使用终端,它保存帮助应用程序将命令序列转换为您在屏幕上看到的窗口xlib的命令序列。gnuplot_x11例如,

    set term push; set term xlib; set output "file.xlib"; replot; set output; set term pop
    
    Run Code Online (Sandbox Code Playgroud)

    file.xlib将创建包含最后一个绘图的所有信息的文件。要稍后查看该图,请使用

    gnuplot_x11 -noevents -persist < file.xlib
    
    Run Code Online (Sandbox Code Playgroud)

    您可能必须在其中指定gnuplot_x11.