Feeds:
Posts

## Graphics Array in Sage(math)

For a publication I was working on, I plotted functions in  PDF format. However, the journal ask me to handle them in EPS format.

“What’s the point?” you might ask. Well, since I installed Lucid Lynx (a clean installation), the files of those graphic were gone… Fool of me, you will say, but really, I never thought that this days journals DO NOT accept PDF files!!!!

Who cares! to the point.

First I tried with the convert command

for i in *.pdf; do convert $i$(echo $i| sed -e s/pdf/eps/g); done It did the job, but the quality of the plots was compromised. Then, I move to Sage(math), and re-discover the function ‘graphics_array’, and try this, p1 = plot(Vn(x, 1, 3), (x,-5,5), color='black', thickness=2) p1 += plot(Vp(x, 1, 3), (x,-5,5), color='black', thickness=2, linestyle='-.', \ axes_labels=[r'$\xi^\prime', r'$V_{qm}(\xi^\prime)$'], fontsize=17)
p2 = plot(Vn(x, 3, 3), (x,-5,5), color='black', thickness=2)
p2 += plot(Vp(x, 3, 3), (x,-5,5), color='black', thickness=2, linestyle='-.', \
axes_labels=[r'$\xi^\prime$',r''], fontsize=17)
p3 = plot(Vn(x, 5, 3), (x,-5,5), color='black', thickness=2)
p3 += plot(Vp(x, 5, 3), (x,-5,5), color='black', thickness=2, linestyle='-.', \
axes_labels=[r'$\xi^\prime$',r''], fontsize=17)

… a little explanation?! p1, p2 and p3 are the graphics I’d like put into an array, each of them contain 2 plots (both black because otherwise they’ll make me pay an incredible amount of money… crazy people!), and them try the graphics_array,

ga = graphics_array([p1, p2, p3])
ga.show(frame=True, axes=False, figsize=[12,8])

and obtain something like this,

First try with graphics_array

Yeah babe!!!… What???!!! It’s not all right! What happened with the axis labels, the font size, and so on?

Second try: let’s see if the plots are working one by one

p1

This is the right p1

p2

The right p2

p3

The right p3

The are alright! So, What happened? Let me run again the graphics_array commands

ga = graphics_array([p1, p2, p3])
ga.show(frame=True, axes=False, figsize=[12,8])

What did I get?…

The final result was as I wanted to be! 🙂

MORAL: Make Sage(math) show you the plot, one by one, before make them into an array!

Yeah… I almost forgot it!

My goal was to save it as an EPS file, so after getting the looked graph, the command is

ga.save(frame=True, axes=False, figsize=[12,8], \
filename='/path/to/directory/name-of-plot.eps')

Cya all!

### 3 Responses

1. Is it a bug that you have to execute the individual plots first?

Anyways, litte hint, you can combine common parameters in a variable. That helps to control them at one central point (i.e. plot color or something else)

sage: plotopts = { ‘color’: ‘black’, ‘thickness’: 10 }
sage: p1 = plot(sin, (-6,6), **plotopts)
sage: p2 = plot(cos, (3,12), linestyle=’-.’, **plotopts)
sage: show(p1+p2)

• Thx Schilly… wonderful advise!, 😉

2. Thanks, this post was very usefull.

I use sage a lot to plot Graphs, and it seems that graph plotting is done somewhat at random. So it really helps to plot ( and seemingly finalize them first ) before entering them into a graphics array.