使用PyGnuplot结束gnuplot进程

时间:2018-08-18 19:26:18

标签: python gnuplot

我正在使用gnuplot(通过带有PyGnuplot的Python)作为来自Arduino的数字数据的实时绘图仪。另外,我想在任意点上保存情节。每当我尝试在进行实时绘图时从gnuplot保存pdf / jpg时,gnuplot便会寄宿。

我认为有必要在将图另存为pdf之前重新启动gnuplot-进程-使用PyGnuplot.c('quit')或类似命令根本无法正常工作。当我使用不同的python脚本进行实时打印和保存pdf时,一切正常,但是我知道不必运行两个脚本。

这是一个正在运行(分别未运行)的最小示例:

import random,time
import PyGnuplot as gp
filename = "data.txt"

def rand():
    return random.random()

def writetxt(file,info):
    fobj = open(file, "a")
    fobj.write(info)
    fobj.close()

def liveplot(file):
    gp.c('plot "' + file + '" with lines')

def plotinfile(dat):
    gp.c('set terminal pdf')
    gp.c('set output "example.pdf"')
    gp.c('plot "' + dat + '" with lines')
    gp.c('unset output')
    gp.c('set terminal x11')

for i in range(10): 
         onerow = str(i) + " " + str(rand()) + " " + str(rand()) #simulate incoming data
         print(onerow) #print in console for comparison
         writetxt(filename ,onerow + "\n") #write data into txt-file
         liveplot(filename) #liveplot the data from txt-file
         if i == 4: #simulate an arbitrary point for saving
            plotinfile(filename) #save graph from txt-file to pdf
         time.sleep(1)   #incoming data occurs only every second

3 个答案:

答案 0 :(得分:0)

gnuplot将不会关闭输出文件,直到(1)终端类型更改为其他类型或(2)存在显式命令“未设置输出”。否则,gnuplot等待查看是否还有另一个plot命令将进入相同的输出文件。

答案 1 :(得分:0)

我相信您想向曲线添加曲线或添加数据点,并间歇保存。如果是这样,则应满足以下条件:

python
>>> import PyGnuplot as gp
>>> gp.c('plot sin(x)')
>>> gp.pdf('sin_graph.pdf')   # discretionary save point 1 
>>> gp.c('replot cos(x)')     # add a new curve  
>>> gp.pdf('sin_and_cos_graph.pdf') # discretionary save point 2

如果只有pdfcario终端而不是pdf,那么您需要自己编写pdf来解决pygnuplot c.pdf脚本:

>>>filename = 'sin_graph.pdf'
>>>gp.c('set term pdf enhanced size 14cm, 9cm color solid')
>>>gp.c('set out "' + filename + '";')
>>>gp.c('replot;')
>>>term='x11`  # or whatever term you typically use
>>>gp.c('set term ' + str(term) + '; replot')

您可以将此例程包装到以filenameterminal作为参数的函数中。无论如何,每次您要打印pdf时都必须执行这一系列命令。

答案 2 :(得分:0)

问题是:二手终端不在手边。使用另一个终端解决了该问题。谢谢你的帮助。在PyGnuplot中使用了x11终端-这对我不可用(我仍然不知道为什么,不知道如何安装它,仍然不知道如何使用PyGnuplot结束gnuplot进程...)< / p>