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



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

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

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

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

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

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

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

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

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

    system(sprintf("xwd -id 0x%x | convert xwd:- screenshot.png", GPVAL_TERM_WINDOWID))
    

    在这里,我包括了一个调用convert,将 xwd 文件格式转换为 png。

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

    set term push; set term xlib; set output "file.xlib"; replot; set output; set term pop
    

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

    gnuplot_x11 -noevents -persist < file.xlib
    

    您可能必须指定gnuplot_x11的路径。

与@user8153建议用于x11类似,您可以使用import,它convert图像魔术工具

system("import -window ".GPVAL_TERM_WINDOWID." screenshot.png")

方便也是将图像复制到剪贴板并使用Ctrl+v将其粘贴到其他地方的快捷方式:

bind Ctrl-c 'system("import -window ".GPVAL_TERM_WINDOWID." png:- | xclip -sel clip -t image/png")'

另请参阅在显示时显示图形并将其同时保存到 gnuplot 中的文件。

最新更新