2

从此开始:

#!/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_="lines",title='Graph')
g.plot(d)
g('set size 200,100')
g.output('filename.svg')

我想得到一个图表,其中点连接到一条线,尺寸固定且透明。建议?

4

2 回答 2

1

首先,删除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)
于 2012-05-14T19:17:06.300 回答
0

我从未将 gnuplot 导入 python,但在 gnuplot shell 中,当我想在图中添加其他行时,我会这样做:

    set arrow from 1,2 to 2,4 nohead lw 2
    set arrow from 2,4 to 3,5 nohead lw 2

使用未设置的箭头再次删除它们。您的行 g('set size 200,100') 建议您可以将行传递给 gnuplot 来执行此操作。

运行代码时的结果是什么?你没有得到数据绘制并用线连接吗?我不知道您所说的尺寸固定和透明是什么意思。

于 2012-05-14T18:32:48.513 回答