2012-05-15 2 views
4

Я хотел бы получить прозрачный фон в моей фигуре gnuplot. Что я закодирован до сих пор:Прозрачный фон в множителе gnuplot

#! /usr/bin/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 terminal svg size 200,400") 
g("set output 'filename.svg'") 
g("unset xtics") 
g("unset ytics") 
g("set multiplot layout 3,1 title 'Title here'") 
g("set object 1 rectangle from screen 0,0 to screen 1,1 fillcolor rgb '#ff0000'  behind") 
#First 
g("set tmargin 2") 
g("set title 'Plot'") 
g("unset key") 
d = gp.Data(x,y,with_="lines") 
g.plot(d) 
#Secon 
g("set title 'Plot2'") 
g("unset key") 
d1 = gp.Data(x1,y,with_="lines") 
g.plot(d1) 
#Third 
g("set title 'Plot3'") 
g("unset key") 
d2 = gp.Data(y,x,with_="lines") 
g.plot(d2) 
g("unset multiplot") 

я получил красный экран, но только третий участок. (Да, я должен изменить комбо RGB, чтобы получить прозрачный цвет фона. Но, что это?)

Спасибо заранее, FB

+0

Какая операционная система вы используете - что такое svg viewer? Вышеприведенный скрипт работает для меня на Ubuntu linux с Eye of the Gnome как мой viewr (если я удалю код «set object»). Конечно, вы * можете * сделать фон прозрачным с помощью 'set object 1 rectangle ... fillstyle transparent solid 0' (0-1 - уровень прозрачности, 0 полностью прозрачный) – mgilson

+0

Также, какую версию gnuplot вы используете ? – mgilson

+0

Заключительный вопрос - конечная цель иметь заданный цвет за всеми сюжетами? Если это так, вы можете достичь этого ** без прозрачности ** в любом терминале, который поддерживает объекты (я могу легко изменить ваш скрипт для достижения этого). – mgilson

ответ

4

Gnuplot может выводить прозрачные фоны непосредственно, но не для всех форматов. Например, это может быть сделано для .png:

set term png transparent truecolor 
set output 'plot.png' 
plot sin(x) 

transparent обрабатывает прозрачность для фона и truecolor для прозрачных объектов/сюжетных начинок.

Еще один способ получить прозрачный фон из gnuplot - это если я выдаю .eps и преобразую его в .png или в какой-то прозрачный растровый формат.

Gnuplot пример:

set terminal postscript enhanced color 
set output 'plot.eps' 
plot sin(x) 

В Баш:

convert plot.eps -rotate 90 plot.png 

Полученный .png с прозрачным фоном, где .eps не делает. Это может быть связано с тем, как imagemagick обрабатывает прозрачность. То же самое не происходит для меня преобразования .svg в .png; он все еще имеет белый фон.

Возможно, вам удастся использовать редактор векторной графики, такой как Inkscape, чтобы добавить прозрачность.

+1

Gnuplot может делать прозрачность в файлах 'png'. 'set terminal png transparent truecolor' должен делать трюк (прозрачный обрабатывает фон, а truecolor обрабатывает любые другие объекты, которые могут быть прозрачными) - или с помощью pngcairo -' set term pngcairo transparent'. Выполнение всего этого в gnuplot, вероятно, даст более четкое изображение, чем вы получите от преобразования (особенно с текстом) – mgilson

+0

Вы правы! Я обновил свой ответ, чтобы включить некоторые ваши комментарии. – andyras

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