Skip to main content
 首页 » 编程设计

python之Gnuplot 中的连续、大小固定、透明的图形

2025年05月04日9itcoder

从这里开始:

#!/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') 

我想要一个图形,其中点连接到一条线,尺寸固定且透明。 有什么建议吗?

请您参考如下方法:

首先,删除 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") 应该可以工作,但我不 promise ...

我的猜测也是 g.output('filename.svg',terminal='svg',size="200,100") 可能有用,但我从来都不喜欢 gnuplot-py 因为它的行为似乎不像我认为的那样。如果这不起作用,您需要在绘图之前求助于 g('...')。

总而言之,如果您尝试这样做会发生什么?

#!/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)