0

I'm a newbie in Python and I would like to ask you, how can I get images (a lot of images) made by Gnuplot.py with variable in name? I have this function, which creates single image:

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)

And this function is used in for loop:

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

I still can't get rid of error "undefined variable: filename".

Thanks, Majzlik

4

3 回答 3

1

也许您可以使用该hardcopy方法?

文档

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

创建当前绘图的硬拷贝。

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

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

例子

请参阅示例调用

g.hardcopy('gp_test.ps', enhanced=1, color=1)
于 2013-05-03T02:37:58.550 回答
1

现在,您的 python 脚本正在通过

set out filename

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

g('set out filename')

g('set out "'+filename+'"')
于 2013-05-03T02:40:51.280 回答
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:])

这些都是次要的事情,在这个脚本中它可能不会产生太大的不同,但他们会很好地记住未来。

于 2013-05-03T12:01:52.523 回答