Jae-Joon Lee | 1 Jul 19:09

Re: Highlighting the axes of coordinates

Changing the properties of the individual grid line can be tricky.
The easier way in my opinion is to draw another line with thinker linewidth.

ax=subplot(111)
ax.grid()

from matplotlib.transforms import blended_transform_factory

# for x=0
trans = blended_transform_factory(ax.transData, ax.transAxes)
ax.plot([0,0], [0,1], "-",
        transform=trans,
        color="red", linewidth=2,
        zorder=5)

# for y=0
trans = blended_transform_factory(ax.transAxes, ax.transData)
ax.plot([0,1], [0,0], "-",
        transform=trans,
        color="blue", linewidth=2,
        zorder=5)

-JJ

On Wed, Jul 1, 2009 at 8:40 AM, Torsten
Bronger<bronger <at> physik.rwth-aachen.de> wrote:
> Hallöchen!
>
> I have a grid in my plot, but additionally I'd like to highlight the
> "zero" axes, where x=0 or y=0, e.g. by showing them in red, or with
(Continue reading)

guillaume ranquet | 3 Jul 15:30

Append _one point_ to a plot?

Hi list,

I'm trying to get a dynamic plot running.
I'm stuck at feeding the data to the lines.

basically I've a callback that receives a (y,x1,x2) tuple and I would
like to add the 2 points to the two matplotlib.lines of the figure.

should I handle a copy of xdata/ydata and gives the updated set to
set_x/ydata() for one point?
I tried to get_data() and append to it, but It's a MaskedArray and I
guess it means its a really bad idea to try this way.

probably a new class inheriting figure and overriding
get_data()//set_data() could do the trick?

any advice on a _clean_ design I could use?

thanks.
----
This message contains confidential information and may contain information that is legally privileged. 
If you have received this message by mistake, please immediately notify us and delete the original
message. Thank you.  

Ce message contient des informations confidentielles.  S'il vous est parvenu par erreur, merci de bien
vouloir nous en aviser par retour, de n'en faire aucun usage et de n'en garder aucune copie.
----

------------------------------------------------------------------------------
(Continue reading)

Massimo Di Stefano | 3 Jul 01:42

gps-satellite sky-plot

Hi All,

i'm starting to learn matplotlib,
for my study i need to parse the nmea sentence from a gps
and plot a "sky graphic" to plot satellite visibility.

(i tried to write code from scratch ... it works  but my teacher  
suggest me to not reinvent the well, so, to have a good nema parser, i  
installed gpsd ... it has in the source code a nice python code that  
allow me to retrieve satellite constallation iformation).

now i need to learn how to produce a sky plot,
have you any suggestion on how to produce such kind of graphic ?

thanks to all for any suggestion!

Massimo.

------------------------------------------------------------------------------
Ralf Gommers | 3 Jul 01:33

Re: memory leak with PyQt4 plus savefig or print_figure

sorry, i replied to Mike and not to the list. see below.


On Thu, Jul 2, 2009 at 2:57 PM, Ralf Gommers <ralf.gommers <at> googlemail.com> wrote:
Thanks for looking into this Mike.

On Thu, Jul 2, 2009 at 10:39 AM, Michael Droettboom <mdroe-PfB3aINIHTeHXe+LvDLADg@public.gmane.org> wrote:
It is not surprising that memory usage is much lower without printing the plot.  Very little is actually done by the "plot" command other than setting up a tree of objects that is later rendered during the printing process (where most of the work happens).

The attached script based on what you provided doesn't leak memory for me with matplotlib 0.98.5.2.  It would appear that there is something else in your application triggering the leak.  Perhaps there is something holding a reference longer than it should?

Your attached script memleak2.py is indeed fine, it never takes up more than 60Mb of RAM. But did you try to run the PyQt4  GUI I attached? There the same save_png() function does increase memory usage for each call.

I'm not sure how to exactly measure memory usage for a GUI program, but it is so large I can look at "System Activity" (or Task Manager on XP) and get the approximate number:

Loading the GUI: 30.5Mb
1st call to save_png: 82Mb
2nd call: 116Mb
10th call: 380Mb

I can see the memory usage drop after some calls, so I guess it is a problem of references being held and sometimes being released as you said. But memory use does seem to be unbounded. Waiting for minutes, or interacting with the GUI, never releases any memory. It is strange, the PyQt4 demo program is fine by itself, save_png() is fine by itself, but combine them and there's a memory problem.

Cheers,
Ralf



You can see from the attached massif plots that memory usage never becomes unbounded.  It is normal for Python to delay deallocation for efficiency reasons.  Calling gc.collect (the second graph) does help keep memory usage more compact however, if that is a primary concern.

Cheers,
Mike

Ralf Gommers wrote:
Hi,

I am working on a PyQt4 application with some embedded MPL figures, and am also trying to save some figures as png's without displaying them. I am observing huge memory increases (10s or 100s of Mb) the moment I try to save a png. I reproduced the issue by combining two mpl examples, http://matplotlib.sourceforge.net/examples/user_interfaces/embedding_in_qt4.html and http://matplotlib.sourceforge.net/examples/api/agg_oo.html. Full code is attached. When pressing the "save figure" button, memory usage shoots up, multiple clicks keep sending it higher (although not monotonically).

I tested on two different platforms
- Matplotlib 98.5.2 and Python 2.6.2 on Ubuntu.
- latest Enthought Python Distribution on Windows XP.

The function that does the png saving is:

def save_png():
   """Save an image as a png file"""

   pngpath = 'test_mplsave.png'

   fig = Figure()
   canvas = FigureCanvas(fig)
   ax = fig.add_subplot(111)
   x = arange(5e3)
   ax.plot(x, sin(x))
   canvas.print_figure(pngpath)

   ## tried all things commented out below, all makes no difference ##
   #fig.savefig(pngpath)

   #del(fig)
   #del(canvas)
   #del(ax)

   #import matplotlib.pyplot as plt
   #plt.close(fig)

   #import gc
   #gc.collect()

Commenting out the canvas.print_figure line fixes the issue.

Am I doing something obviously wrong, or mixing two incompatible ways of doing things?

Cheers,
Ralf

------------------------------------------------------------------------

------------------------------------------------------------------------------
------------------------------------------------------------------------

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

--
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA


from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure

from numpy import arange, sin

import gc


def save_png():
   """Save an image as a png file"""

   pngpath = 'test_mplsave.png'

   fig = Figure()
   canvas = FigureCanvas(fig)
   ax = fig.add_subplot(111)
   x = arange(5e3)
   ax.plot(x, sin(x))
   canvas.print_figure(pngpath)

   # The below is not necessary to prevent a leak, but it does make
   # memory usage more compact
   gc.collect()

for i in range(100):
   save_png()





------------------------------------------------------------------------------
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Rick Muller | 2 Jul 22:26

contourf: black lines connecting contour levels?

When I do contourf plots in matplotlib, I get lines connecting the contour levels. This doesn't only appear to be an artifact of my plotting algorithms, it appears in this example from the matplotlib cookbook:

http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data

at least on my mac.

(I think this is the link to the output I get from that:
https://dl-web.getdropbox.com/get/Photos/griddata-test.png?w=007c9af9
)

Is there a way to keep these lines from happening? If not, is there a way to turn off all of the black lines separating the contour levels?

Thanks in advance,

Rick

--
Rick Muller
rpmuller-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org

------------------------------------------------------------------------------
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Valentin Flunkert | 2 Jul 22:05

contour plot: clabel manual changes figure properties

Hi,

For a contour plot I use the option 'manual=True' in clabel
to set the location of the labels manually.

Before the plotting command I set some figure properties using
rcParams as explained on this site:

http://www.scipy.org/Cookbook/Matplotlib/LaTeX_Examples

My Problem is, that the manual-option changes the figure 
properties and when I use savefig I get a very different result
compared to 'manual=False'.

Is there some way to prevent this or alternatively set the 
properties after manually setting the labels?

Thanks in advance,
Valentin

Here is an example.

=====================================

from math import pi
import numpy as np

import pylab as pl

#######################
fig_width_pt = 246.0                   # Get this from LaTeX using \showthe\columnwidth
inches_per_pt = 1.0/72.27              # Convert pt to inch
golden_mean = 1 #(sqrt(5)-1.0)/2.0     # Aesthetic ratio
fig_width = fig_width_pt*inches_per_pt # width in inches
fig_height =fig_width*golden_mean      # height in inches
fig_width = fig_width
fig_size =  [fig_width,fig_height]
params = {'backend': 'ps',
          'axes.labelsize': 10,
          'text.fontsize': 10,
          'legend.fontsize': 10,
          'xtick.labelsize': 8,
          'ytick.labelsize': 8,
          'figure.figsize': fig_size}
pl.rcParams.update(params)

ax = pl.axes([0.15, 0.15, 0.8, 0.8])

dummy = np.linspace(0, 2*pi, 101)
s, t  = np.meshgrid(dummy, dummy)

f = np.sin(2*s)**2* np.cos(t)
cs = pl.contour(s, t, f) 
pl.clabel(cs, manual=True)

pl.xlim(0, 2*pi)
pl.ylim(0, 2*pi)
pl.savefig('test.png')

=====================================

------------------------------------------------------------------------------
Lars Ruoff | 2 Jul 22:01

Draw to Tkinter Canvas

Hello,

i'm new to the list.
i'm using matplotlib via the networkx graph package.
I wonder if there is a way i could draw a graph in a Tkinter canvas widget
of my application.
I.e. my Python application creates the Tkinter canvas and somehow passes it 
as an
argument to a matplotlib draw function.
I read the documentation section about Backends 
(http://matplotlib.sourceforge.net/faq/installing_faq.html#backends), and it 
suggests there is something like a Tkinter based backend (TkAgg), but i 
couldn't really figure out how to go ahead with this.
So my question: How do i use matplotlib to draw to a Tkinter Canvas provided 
by my application?
Any help would be much appreciated.

Thank you,
Lars Ruoff

------------------------------------------------------------------------------
keflavich | 2 Jul 19:40

ipython threading fails with macosx backend


Hi, I'm using ipython 0.9.1 with the svn version of matplotlib on 64 bit
python on mac os x 10.5.7.

I have only been able to get python-64 running with the MacOSX backend; all
of the others (wxpython, gtk, qt, tk) have failed for one reason or another.  

I've tried ipython without any flags and importing pylab on the command
line:
from pylab import *
and ipython -pylab,
and then plotting from a script.  I retain access to the command line unless
I type "show()" at the command line, at which point I can't return to the
command line unless I close all of my graphics windows.

I don't have this problem when running 32 bit python with qt or tk as the
backends.

Is this an error?  Should there be a command-line flag for ipython to start
threading for MacOSX specifically?

Thanks,
Adam
--

-- 
View this message in context: http://www.nabble.com/ipython-threading-fails-with-macosx-backend-tp24311071p24311071.html
Sent from the matplotlib - users mailing list archive at Nabble.com.

------------------------------------------------------------------------------
David GUERINEAU | 28 Jun 19:31

"Ordinal must be >= 1" with SuplotHost and dates

Hi matplotlib_users !

I'm David from Berlin, and believe I'm experiencing some problem with the SubplotHost module:

I'm generating graphs from hudge databases of cpu and ethernet statistics,
and I wanted to mix several graphs concerning ethernet statistics in the same figure,
with time as x axis, and bytes-in, bytes-out, packets-in, packets-out and number of
collisions as three different y axes, with three different scale.

I took the inspiration from

for the x axes and from
     http://matplotlib.sourceforge.net/examples/axes_grid/demo_parasite_axes2.html
for the y axes

The following code is a synthetic reproduction of the problem I'm experiencing (it is also attached):

from matplotlib.dates import date2num
from matplotlib import pyplot
from matplotlib import pylab
from mpl_toolkits.axes_grid.parasite_axes import SubplotHost
from datetime import datetime

dates = [ 733581.20833333337, 733581.20837962965, 733581.20842592593, 733581.20847222221, 733581.20851851848,
      733581.20855324075, 733581.20858796302, 733581.2086342593, 733581.20866898145, 733581.20871527772]
rxB = [054L, 130L, 144L, 54L, 36L, 9L, 35L, 43L, 85L, 43L]
txB = [4L, 9L, 9L, 5L, 4L, 4L, 4L, 5L, 6L, 5L]
rxP = [77, 228, 251, 112, 77, 42, 75, 97, 147, 91]
txP = [61, 177, 188, 90, 61, 40, 64, 76, 113, 77]
col = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

ethPlot = pyplot
fig = ethPlot.figure()
host = SubplotHost(fig, 111)

host.set_ylabel("kB/s")
host.set_xlabel("Time")

par1 = host.twinx()
par2 = host.twinx()

par1.set_ylabel("Packets/s")

par2.axis["right"].set_visible(False)

offset = 60, 0
new_axisline = par2.get_grid_helper().new_fixed_axis
par2.axis["right2"] = new_axisline(loc="right",
                    axes=par2,
                    offset=offset)

par2.axis["right2"].label.set_visible(True)
par2.axis["right2"].set_label("Collisions")

par1.set_ylim(0, 6000)
par2.set_ylim(0, 7000)

host.axis([ dates[0], ( dates[0] + 0.041  ), -7000, 7000])
par1.axis([ dates[0], ( dates[0] + 0.041  ), -10000, 10000])
par2.axis([ dates[0], ( dates[0] + 0.041  ), -700, 700])

fig.add_axes(host)
ethPlot.subplots_adjust(right=0.75)

drawRxByt, = host.plot_date(dates, rxB, 'g', tz=None, xdate=True, ydate=False, label="kB/s in")
drawTxByt, = host.plot_date(dates, txB, 'b', tz=None, xdate=True, ydate=False, label="kB/s out")
drawRxPaq, = par1.plot_date(dates, rxP, 'm', tz=None, xdate=True, ydate=False, label="packets/s in")
drawTxPaq, = par1.plot_date(dates, txP, 'y', tz=None, xdate=True, ydate=False, label="packets/s out")
drawColls, = par2.plot_date(dates, col, 'r', tz=None, xdate=True, ydate=False, label="collisions")

fig.autofmt_xdate()

host.set_xlabel("Time")
host.set_ylabel("kB/s")
par1.set_ylabel("Packets/s")

host.legend()

host.axis["left"].label.set_color(drawRxByt.get_color())
host.axis["left"].label.set_color(drawTxByt.get_color())
par1.axis["right"].label.set_color(drawRxPaq.get_color())
par1.axis["right"].label.set_color(drawtxPaq.get_color())
par2.axis["right2"].label.set_color(drawColls.get_color())

ethPlot.draw()
pylab.savefig( './test.png', dpi=(640/8))




Maybe I do something wrong somewhere here, but other scripts that do the same for a single graphwork like a charm. So it's not a question of dataType or something. To compare with a working code, here is the first version of the fuction that does the job on single graphs without any problem :


def drawEthGraph(filename, hdates, rxP, txP, rxB, txB, col):
  ethPlot = pyplot
  fig = ethPlot.figure()
  ax = fig.add_subplot(111)
  ax.plot_date(hdates, rxP, 'g', None, True, False)
  ax.plot_date(hdates, txP, 'b', None, True, False)
  ax.plot_date(hdates, rxB, 'g', None, True, False)
  ax.plot_date(hdates, txB, 'b', None, True, False)
  ax.plot_date(hdates, col, 'r', None, True, False)
  ax.axis([ hdates[0], ( hdates[0] + 0.042  ), -7000, 7000])
  ax.grid(True)
  fig.autofmt_xdate()
  pylab.savefig( filename, dpi=(640/8))


I don't think I understand the whole process of generation, but I thought at least at the beginnig I was having a good feeling with this API.
Now I wonder how to go around this. Maybe you'll have an idea :-o

Best regards

DvD

Attachment (draw_eth_test.py): text/x-python, 2366 bytes
------------------------------------------------------------------------------
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Stephane Raynaud | 2 Jul 12:20

Basemap: GEOS_ERRORs

Hi (Jeff),

I recently performed updates to matplotlib and basemap.
>From this time, I have a random and reccurent error when I create a
Basemap instance.
Here is one example :

>>> from mpl_toolkits.basemap import Basemap
>>> Basemap(**{'lon_0': -4.5250263598141309, 'urcrnrlat': 49.140154231678416, 'projection':
'cyl', 'llcrnrlon': -7.2999968048710144, 'lat_ts': 47.468781818043126, 'urcrnrlon':
-1.7500559147572474, 'area_thresh': 0.1, 'llcrnrlat': 45.797409404407844, 'resolution': 'i',
'lat_0': 47.468781818043126})

GEOS_ERROR: TopologyException: found non-noded intersection between
8.67583 4.66292, 8.70206 4.66997 and 8.71039 4.67664, 8.67708 4.64997
8.70205 4.66997

It depends on the area and the resolution (polygons).

I have version '0.99.3' of basemap.

Any idea?
--

-- 
Stephane Raynaud

------------------------------------------------------------------------------
Forrest Sheng Bao | 2 Jul 05:26

how to plot in discontinued Y-axis

Hi,

I am thinking about a plotting problem with the data set like this: [3,2,4,100,5]

If I plot this list, then 100 will be very high and 3, 2, 4 and 5 will be almost near 0. So, can I use a discontinued Y-axis, which has two ranges, from 0 to 10 and from 90 to 110. Of course, there needs a tear between these two parts to indicate that the Y-axis is not continuous. I draw a illustration as attached.

Cheers,
Forrest

Forrest Sheng Bao, BSEE, Graduate Student
Dept. of Computer Science/Electrical Engineering
Texas Tech University, Lubbock, Texas
http://narnia.cs.ttu.edu

------------------------------------------------------------------------------
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Gmane