首先,删除g('set size 200,100')
. 这个命令基本上告诉 gnuplot 制作一个在 x 方向上比正常大 200 倍,在 y 方向上大 100 倍的图——当你制作你的图时,它要么是巨大的,要么你只会真正看到角落里的一小部分情节(你可能什么都看不到)。
接下来,这是我将如何在纯 gnuplot 中完成您想要的(我认为 - 测试它以查看我是否确实正确地解释了您的请求):
set terminal svg size 200,100
set output "filename.svg"
plot '-' w linespoints linestyle 1 pointtype 7 #just picked some linestyles and pointtypes...
1 2
2 4
3 5
e
为了将它放入 gnuplot-py 中,您可以将其全部包装在 g('...') 中——这是一种非常丑陋的方法,但它应该可以工作。我不知道 gnuplot-py 将什么识别为有效的绘图类型以及它不识别什么……您可能必须为此深入研究源代码。
我也使用了“内联数据”,但您可以轻松地将您的点写入一个临时文件(使用tempfile
模块并绘制它,如果这更容易的话)。
看起来d = gp.Data(x,y,with_="linespoints",title="data")
应该可行,但我不保证......
我的猜测也g.output('filename.svg',terminal='svg',size="200,100")
可能会起作用,但我从不真正喜欢 gnuplot-py,因为它的行为似乎不像我认为的那样。如果这不起作用,您需要在绘图之前求助于 ag('...')。
总之,如果你尝试这个会发生什么?
#!/usr/bin/env python
from numpy import *
import Gnuplot as gp
import Gnuplot.funcutils
x = (1,2,3)
y=(2,4,5)
g = gp.Gnuplot()
d = gp.Data(x,y,with_="linespoints",title='Graph')
g("set terminal svg size 200,100")
g("set output 'filename.svg'")
g.plot(d)