在显示器上显示图形,并在gnuplot中将其同时保存到文件中

在显示器上显示图形,并在gnuplot中将其同时保存到文件中,gnuplot,Gnuplot,如何将图形保存到文件中并将其打印以显示?我试过: #!/usr/bin/gnuplot -p date=system("date +%F_%T | sed 's/:/-/g'") set term png set output date.".png" set term x11 set out plot sin(x) PS:是否有可能保存gnuplot窗口中显示的图形?我注意到有“复制到剪贴板”按钮,但没有“保存”按钮。如果您想将绘图同时发送到文件和交互式终端,如x11或wxt,则在更改

如何将图形保存到文件中并将其打印以显示?我试过:

#!/usr/bin/gnuplot -p

date=system("date +%F_%T | sed 's/:/-/g'")

set term png
set output date.".png"

set term x11
set out

plot sin(x)

PS:是否有可能保存gnuplot窗口中显示的图形?我注意到有“复制到剪贴板”按钮,但没有“保存”按钮。

如果您想将绘图同时发送到文件和交互式终端,如
x11
wxt
,则在更改终端后,您有了
replot

set terminal png
set output 'file.png'

plot sin(x)

set terminal x11
set output
replot
如果您不想明确设置
x11
终端,而是使用默认终端,无论它是什么,您都可以使用特殊终端
push
pop
,以便保存和恢复终端:

set terminal push
set terminal pngcairo
set output 'file.png'
plot sin(x)
set terminal pop
set output
replot
为了使其更透明,并在将图像打印到交互式终端后保存任何图像,可以定义一个gnuplot脚本
export.gp
,然后调用该脚本并将输出文件名作为参数

export.gp
脚本是

set terminal push
set terminal pngcairo
set output '$0'

replot
set output
set terminal pop
然后您可以将其用作

plot sin(x)
call 'export.gp' 'test.png'
但是,请注意,导出的文件和交互窗口中显示的绘图将不同,但如果将
wxt
用作交互,并将
pngcairo
pdfcairo
用作输出终端,则显示和导出的图像非常相似的可能性很大


使用gnuplot 5.0,
qt
wxt
终端提供一个“导出”按钮,将窗口中显示的图像准确地保存为svg、pdf或png文件。不幸的是,此功能还不能从脚本调用,即没有导出命令。

中也给出了一个很好的答案。 对于
x11
终端,可以使用

system("xwd -id ".GPVAL_TERM_WINDOWID." | convert xwd:- screenshot.png")
它也可以被包装成一条捷径

bind "Ctrl-c" 'system("xwd -id ".GPVAL_TERM_WINDOWID." | convert xwd:- png:- | xclip -sel clip -t image/png")'
所以你画了这个图像

set term x11
plot sin(x)/x
然后在绘图窗口中按Ctrl+c。就在这里,我用Ctrl+v粘贴了图像:


不幸的是,它不适用于
qt
wxt
GPVAL\u TERM\u WINDOWID
x11
关联)。它们有剪贴板按钮,但快照不可编写脚本。

因为版本5 gnuplot为
qt
wxt
终端提供了一个保存按钮。你好,Christoph,有没有办法让它适用于gnuplot 4.6 patchlevel 0?我们在2017年7月使用版本5.0 patchlevel 3,约会这件事给我解决了一个大问题。我不知道日期+%F(我只需要日期,因为我只在收集当天数据后的午夜才这样做),也不知道如何在gnuplot中连接以生成文件名。对我来说,这一切都是自动化的,使用mcron将事情的时间缩短到第二秒。杰出的我向你致敬。谢谢。谢谢你提供的关于推送和弹出的信息。我不知道那件事。我经常使用重读来显示我的可见图。但这是一种全新的方式。然而,我的不断重读。我不知道雷波特的事。我将不得不对此进行研究,因为我可能不希望它像重读一样不断地重复。需要指出的是:如果有
multiplot
,则对单个绘图进行replotting可以正常工作,因为
replot
只会重新打印multiplot环境的最后一个绘图。