使用gnuplot生成一组带编号的图像

时间:2013-05-03 02:09:18

标签: python variables filenames gnuplot

我是Python的新手,我想问你,我怎么能得到Gnuplot.py用名字变量制作的图片(很多图片)?我有这个功能,它创建单个图像:

def printimage(conf, i):
   filename = str(i) + "out.postscript"
   g = Gnuplot.Gnuplot()
   g.title('My Systems Plot')
   g.xlabel('Date')
   g.ylabel('Value')
   g('set term postscript')
   g('set out filename')
   databuff = Gnuplot.File(conf, using='1:2',with_='line', title="test")
   g.plot(databuff)

此函数用于for循环:

i = 0
for row in data:
   config_soubor.write(str(i) + " " + row[22:])
   printimage("config_soubor.conf", i)
   i = i + 1

我仍然无法摆脱错误“undefined variable:filename”。

谢谢, Majzlik

3 个答案:

答案 0 :(得分:1)

也许您可以使用hardcopy方法?

文档

hardcopy (
        self,
        filename=None,
        terminal='postscript',
        **keyw,
        )
  

创建当前情节的硬拷贝。

     

创建当前绘图的postscript硬拷贝到默认打印机   (如果已配置)或指定的文件名。

     

请注意,gnuplot会记住终端上的postscript子选项   变化。因此,如果您为一个硬拷贝设置了例如color = 1   除非你明确选择,否则下一个硬拷贝也会是彩色的   颜色= 0。或者,您可以将所有选项强制为其默认值   通过设置mode = default。我认为这是gnuplot中的一个错误。

实施例

请参阅example call

g.hardcopy('gp_test.ps', enhanced=1, color=1)

答案 1 :(得分:1)

现在,您的python脚本正在传递

set out filename

到gnuplot。 'filename'是命令字符串的一部分;您在脚本中设置的变量filename未传递给gnuplot。您可以尝试替换

g('set out filename')

g('set out "'+filename+'"')

答案 2 :(得分:0)

Gnuplot期望set output "filename"形式的一行。请注意,文件名必须是字符串。因此,对于您的示例,它将类似于:

g('set out "%s"'%filename)

或使用较新的样式字符串格式:

g('set out "{0}"'.format(filename))

还有一些其他事情可以做得更好。一般来说:

i = 0
for x in whatever:
    ...
    i = i + 1

最好写成:

for i,x in enumerate(whatever):
    ...

另外,再次使用字符串格式:

str(i) + " " + row[22:]

可以转换为:

'%d %s'%(i,row[22:])

或:

'{0} {1}'.format(i,row[22:])

这些都是微不足道的事情,在这个剧本中它可能不会产生很大的不同,但是对于未来而言,它们应该是好的。