2012-05-15 2 views
-1

Я хотел бы получить три диаграммы, один под одним, используя multiplot.Множество в Gnuplot через Python

Я пробовал:

#! /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 из итераций 'x',' y' и 'x1' – mgilson

ответ

4

Проблема в том, что вы не устанавливаете терминал. Gnuplot просто отправляет вывод на терминал x11 (или независимо от того, что вы настроили по умолчанию). если ваш терминал по умолчанию не svg, тогда вы получите сообщение об ошибке - либо файл не будет существовать, а тип кодировки не будет соответствовать расширению svg.

добавить 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 (" установить начало 0.1,1 ")' (1 вместо 100. диапазон [0-1]). Но вы, вероятно, даже этого не хотите, так как это поместит левый край вашего сюжета на правый край «холста» – mgilson

Смежные вопросы