我是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
答案 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:])
这些都是微不足道的事情,在这个剧本中它可能不会产生很大的不同,但是对于未来而言,它们应该是好的。