2012-05-15 52 views
-1

我想使用multiplot得到三個圖表,一個在一個下面。通過Python在Gnuplot中進行多重繪圖

我想:

#! /usr/bin/env python 
from numpy import * 
import Gnuplot as gp 
import Gnuplot.funcutils 

x = (1,2,3) 
y=(2,4,5) 
x1 = (3,6,8) 
g = gp.Gnuplot() 
g("set output 'filename.svg'") 
g("unset xtics") 
g("unset ytics") 
g("set size 200,200") 
g("set bmargin 0") 
g("set tmargin 0") 
g("set lmargin 0") 
g("set rmargin 0") 

g("set multiplot") 
#First 
g("set origin 0.1,0.1") 
d = gp.Data(x,y,with_="linespoints") 
g.plot(d) 
#Second 
g("set origin 0.1,50") 
d1 = gp.Data(x1,y,with_="linespoints") 
g.plot(d1) 
# Third 
g("set origin 0.1,100") 
d2 = gp.Data(y,x,with_="linespoints") 
g.plot(d2) 
g("unset multiplot") 

http://t16web.lanl.gov/Kawano/gnuplot/plot3-e.html

開始,但我得到一個錯誤,當我想顯示創建的SVG。 建議? FB

+2

你得到的錯誤是什麼?您可能需要使用此信息更新您的問題。 – Levon

+0

有沒有一個數據文件與此? – Levon

+0

@Levon數據文件由gnuplot-py從iterables'x','y'和'x1'生成。 – mgilson

回答

4

問題是你沒有設置終端。 Gnuplot只是將輸出發送到x11終端(或者你配置爲默認的任何設備)。如果您的默認終端不是svg,那麼您將收到錯誤 - 該文件不存在,編碼類型將與svg擴展名不匹配。

add g("set terminal svg")就在g("set output 'filename.svg'")之前,你應該全部設置。

+0

我得到了圖像,但它是錯誤的。我得到的只是第一個情節,它不是「完整的」(我沒有看到整個白色的窗口) – FrankBr

+0

@FrankBr:這可能是因爲你正在使用'set size 200,200',我建議你以前刪除;)。你(可能)想要刪除該行並執行'g(「set terminal svg size 200,200」)'。 – mgilson

+0

另外,你的g(「set origin 0.1,100」)應該是g(「set origin 0.1,1」)(1而不是100,範圍是[0-1])。但是你可能不想這樣做,因爲那會把你的情節的左邊緣放在「帆布」的右邊緣 – mgilson