Laurent Dufrechou | 1 Dec 01:01
Picon

Bliting speed improvment patch (QT4Agg backend) + example of sliding demo

Hi there,

Finally with lot of try I've finally managed to make blitting of a cmap
working.
I've also patched QT4agg backend, to make a redraw immediately.
(replaced self.draw by self.repaint)
In my current project I was able to stream a 655KB network stream, do
demodulation of an IQ stream and display the spectrogram in real time (4096
pixel per 1024) with matplotlib and QT4 backend, thx to the patch + blitting
example attached.

Without patch, the refrech was veeery long. (waiting for QT loop to execute
code wen it wanted.)
And do NOT always work. If you've got a powerfull pc you've got chance to
see only white background...
(or simply the loop timer to 0, you will see that without patch blit does
not work).

Only tested under windows currently, 'cause my project is on windows
currently...

There is one bug in the example, that I didn't manage to correct yet.
Depending on screen resolution, the color of the cmap blitted area can be
kind of alpha'ed. (that is look like a little bit transparent...) , Any idea
on the root of this issue?

By the way to make the example work I needed to do this:
        self.ax2.draw_artist(self.line2)
        self.blit(self.ax2.bbox)
        self.restore_region(self.background2)
(Continue reading)

Ernest Adrogué | 1 Dec 01:38
Picon

font rendering quality

Hi,
I notice a big difference in quality between the text rendered
by matplotlib and that rendered by the rest of applications.
As an example, see the image attached showing the same font as
shown by firefox and matplotlib respectively.
Is there any config setting I can change to improve the font
rendering or anything?

Cheers.

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
William Carithers | 1 Dec 01:44
Favicon

Fitting math functions to histograms

I would like to fit a gaussian to a histogram and then overplot it. I can
write the code to do this but most plotting packages support such fitting.
However I can't find it for pyplot even after scanning documentation,
googling, etc. In fact, the only fitting functionality I could find was the
polynomial fitting for numpy that is layered underneath matplotlib, i.e.
Numpy.polyfit(...).

Does anyone know if/how this might be built into matplotlib?

Thanks,
Bill

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
Mike Alger | 1 Dec 03:06
Picon
Favicon

Re: Color in 3d plots

After a weekend of no replies I managed to figure a way out myself

 

As this was “left to the reader as an exercise” I will leave the integration or improvement of this solution as an exercise to the next reader

 

What I have done is basically cloned the plot surface function and replaced the avgz variable with a reference to the “colors” parameter i have added to the function call.

 

This code doesn’t  center things perfectly with respect to the grid (for some reason a 40x40 grid turns into 39x39 grid in the function) again this is something else that could be improved, however I am happy with it and a one pixel shift won’t be missed in my plots.  I also have no real clue as to what the following comments was about

 

                # The construction leaves the array with duplicate points, which

                # are removed here.

 

 but it is probably related to my non centered plots.

 

 

 

 

What follows is the modified function  :

 

 

 

def plot_surface2(self, X, Y, Z, colors, *args, **kwargs):

        '''

        Create a surface plot.

 

        By default it will be colored in shades of a solid color,

        but it also supports color mapping by supplying the *cmap*

        argument.

 

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

        Argument    Description

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

        *X*, *Y*,   Data values as numpy.arrays

        *Z*

        *colors*   an array the same size as z that contains a separate color data

        *rstride*   Array row stride (step size)

        *cstride*   Array column stride (step size)

        *color*     Color of the surface patches

        *cmap*      A colormap for the surface patches.

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

        '''

 

        had_data = self.has_data()

 

        rows, cols = Z.shape

        tX, tY, tZ = np.transpose(X), np.transpose(Y), np.transpose(Z)

        rstride = kwargs.pop('rstride', 10)

        cstride = kwargs.pop('cstride', 10)

 

        color = kwargs.pop('color', 'b')

        color = np.array(colorConverter.to_rgba(color))

        cmap = kwargs.get('cmap', None)

 

        polys = []

        normals = []

        avgz = []

        for rs in np.arange(0, rows-1, rstride):

            for cs in np.arange(0, cols-1, cstride):

                ps = []

                corners = []

                for a, ta in [(X, tX), (Y, tY), (Z, tZ)]:

                    ztop = a[rs][cs:min(cols, cs+cstride+1)]

                    zleft = ta[min(cols-1, cs+cstride)][rs:min(rows, rs+rstride+1)]

                    zbase = a[min(rows-1, rs+rstride)][cs:min(cols, cs+cstride+1):]

                    zbase = zbase[::-1]

                    zright = ta[cs][rs:min(rows, rs+rstride+1):]

                    zright = zright[::-1]

                    corners.append([ztop[0], ztop[-1], zbase[0], zbase[-1]])

                    z = np.concatenate((ztop, zleft, zbase, zright))

                    ps.append(z)

 

                # The construction leaves the array with duplicate points, which

                # are removed here.

                ps = zip(*ps)

                lastp = np.array([])

                ps2 = []

                avgzsum = 0.0

                for p in ps:

                    if p != lastp:

                        ps2.append(p)

                        lastp = p

                        avgzsum += p[2]

                polys.append(ps2)

                ##################################

                Begin of changes

##################################

                #avgz.append(avgzsum / len(ps2))

avgz.append(colors[rs][cs])

                ##################################

                end of changes

##################################

 

                v1 = np.array(ps2[0]) - np.array(ps2[1])

                v2 = np.array(ps2[2]) - np.array(ps2[0])

                normals.append(np.cross(v1, v2))

 

        polyc = art3d.Poly3DCollection(polys, *args, **kwargs)

        if cmap is not None:

         #  polyc.set_array(np.array(colors))

            polyc.set_array(np.array(avgz))

            polyc.set_linewidth(0)

        else:

            colors = self._shade_colors(color, normals)

            polyc.set_facecolors(colors)

 

        self.add_collection(polyc)

        self.auto_scale_xyz(X, Y, Z, had_data)

 

        return polyc

   

 

From: Mike Alger [mailto:malger-6s6ziW1YCwCw5LPnMra/2Q@public.gmane.org]
Sent: November-25-09 8:42 PM
To: matplotlib-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: [Matplotlib-users] Color in 3d plots

 

I have been looking at this for the past day and in am pretty sure I could replace the instance of polyc by the “cmap if statements” my colour array and I should be able to get close to what I want. However I am new to both python & mpl, and I am not entirely sure in how I would go about testing my hypothesis. Furthermore I am also relatively new to submitting fixes to open-source projects so I have lots of questions about how I would go about suggesting a modification.

 

1.)    can I just modify the file in the C:\python26\Lib\site-packages\mpl-toolkits\mplot3d\axes3d.py file to do my tests?

a.       Also, where are these files usually kept in a linux environment ?

b.      What do I do with the. pyc files with the same name? are they re-complied automatically when I call the function externally?

2.)    Is this capability  already built in with the colour argument ? if so how do I properly call it?

3.)    If I do make a modification should it be as a separate function with the additional variable or should I try to stuff the new capability into the old function

4.)    is there a clean easy to follow tutorial for submitting changes via svn or can I rely on someone else to do the final commit?

 

I have attached the function in question for reference to save others from digging down into their python directories

 

 

Again thanks for taking your time to help me figure this out

 

Mike Alger

 

< Code>

  def plot_surface(self, X, Y, Z, *args, **kwargs):

        '''

        Create a surface plot.

 

        By default it will be colored in shades of a solid color,

        but it also supports color mapping by supplying the *cmap*

        argument.

 

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

        Argument    Description

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

        *X*, *Y*,   Data values as numpy.arrays

        *Z*

        *rstride*   Array row stride (step size)

        *cstride*   Array column stride (step size)

        *color*     Color of the surface patches

        *cmap*      A colormap for the surface patches.

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

        '''

 

        had_data = self.has_data()

 

        rows, cols = Z.shape

        tX, tY, tZ = np.transpose(X), np.transpose(Y), np.transpose(Z)

        rstride = kwargs.pop('rstride', 10)

        cstride = kwargs.pop('cstride', 10)

 

        color = kwargs.pop('color', 'b')

        color = np.array(colorConverter.to_rgba(color))

        cmap = kwargs.get('cmap', None)

 

        polys = []

        normals = []

        avgz = []

        for rs in np.arange(0, rows-1, rstride):

            for cs in np.arange(0, cols-1, cstride):

                ps = []

                corners = []

                for a, ta in [(X, tX), (Y, tY), (Z, tZ)]:

                    ztop = a[rs][cs:min(cols, cs+cstride+1)]

                    zleft = ta[min(cols-1, cs+cstride)][rs:min(rows, rs+rstride+1)]

                    zbase = a[min(rows-1, rs+rstride)][cs:min(cols, cs+cstride+1):]

                    zbase = zbase[::-1]

                    zright = ta[cs][rs:min(rows, rs+rstride+1):]

                    zright = zright[::-1]

                    corners.append([ztop[0], ztop[-1], zbase[0], zbase[-1]])

                    z = np.concatenate((ztop, zleft, zbase, zright))

                    ps.append(z)

 

                # The construction leaves the array with duplicate points, which

                # are removed here.

                ps = zip(*ps)

                lastp = np.array([])

                ps2 = []

                avgzsum = 0.0

                for p in ps:

                    if p != lastp:

                        ps2.append(p)

                        lastp = p

                        avgzsum += p[2]

                polys.append(ps2)

                avgz.append(avgzsum / len(ps2))

 

                v1 = np.array(ps2[0]) - np.array(ps2[1])

                v2 = np.array(ps2[2]) - np.array(ps2[0])

                normals.append(np.cross(v1, v2))

 

        polyc = art3d.Poly3DCollection(polys, *args, **kwargs) ## this is where a modification could be made to allow for a separate colour matrix

        if cmap is not None:

            polyc.set_array(np.array(avgz))

            polyc.set_linewidth(0)

        else:

            colors = self._shade_colors(color, normals)

            polyc.set_facecolors(colors)

 

        self.add_collection(polyc)

        self.auto_scale_xyz(X, Y, Z, had_data)

 

        return polyc

</Code>

 

From: Mike Alger [mailto:mike.alger-KC71EySklSc3nlPAGJ/kyg@public.gmane.org]
Sent: November-23-09 3:42 PM
To: matplotlib-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: [Matplotlib-users] Color in 3d plots

 

This may be a dumb question, however I have been scratching my head trying to figure out how to plot a 3 dimensional plot with with a colour map different from the elevation(Z) parameter.

 

An example of this done in Matlab would be

 

[X,Y,Z] = peaks(30);

C=Z'% could be anything other than Z as long as it has the same dimensions

surf(X,Y,Z,C)

 

axis([-3 3 -3 3 -10 5])

 

 

Is this possible with matplotlib '0.99.1'

 

If so how do i go about doing this  is there some sample code?

 

Mike Alger, M.A.Sc

malger-6s6ziW1YCwCw5LPnMra/2Q@public.gmane.org

 

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Jason Heeris | 1 Dec 04:04
Picon
Gravatar

figimage over plot?

Hi,

Is it at all possible to have figimage draw the image OVER the top of
the plot area? Currently I can only get it to draw underneath — even
if I set the frame alpha to zero, it is obscured by the grid. This can
be seen from the test code below:

---- testplot.py ----
#!/usr/bin/python

import numpy as np
import matplotlib.pyplot as plt

Z = np.arange(10000.0)
Z.shape = 100,100
Z[:,50:] = 1.

dpi = 80.0
width = 600
height = 480

data = zip(*[(x, x**2) for x in range(0, 100)])

fig = plt.figure()

ax1 = fig.add_axes([0.12,0.1,0.83,0.85])

plt.plot(data[0], data[1])

# This doesn't help, the grid still gets in the way...
ax1.get_frame().set_alpha(0)

ax1.grid(True, color='0.78', linestyle='-', lw=((1.0/dpi)*72))

logo_fig = fig.figimage(Z, 100, 100)

fig.set_size_inches(width/dpi,height/dpi)
fig.set_dpi(dpi)

fig.savefig("test.png", dpi=dpi)

----

So far, my best workaround is to use transform_point(...) to work out
the position that I want, and run imagemagick in a subprocess when I'm
done. I'd appreciate any help.

Cheers,
Jason

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
John Hunter | 1 Dec 04:22
Picon
Gravatar

Re: Fitting math functions to histograms

On Mon, Nov 30, 2009 at 6:44 PM, William Carithers <wccarithers@...> wrote:
> I would like to fit a gaussian to a histogram and then overplot it. I can
> write the code to do this but most plotting packages support such fitting.
> However I can't find it for pyplot even after scanning documentation,
> googling, etc. In fact, the only fitting functionality I could find was the
> polynomial fitting for numpy that is layered underneath matplotlib, i.e.
> Numpy.polyfit(...).
>
> Does anyone know if/how this might be built into matplotlib?

For a Gaussian distribution, the best fit is provided by the normal
distribution which has the same mean and stddev as your empirical data
(this is not true in general for other distributions).   Once you have
the mean and stddev from the data, you can use normpdf to plot the
analytic density -- see for example

http://matplotlib.sourceforge.net/search.html?q=normpdf

For more powerful density fitting and sampling, see scipy.stats
functions, eg scipy.stats.norm.fit

JDH

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
William Carithers | 1 Dec 04:46
Favicon

Re: Fitting math functions to histograms

Hi John,

Yes, that is true if the data is truly gaussian. In my case, I know that the
data have non-gaussian tails which tend to dominate the calculation of the
standard deviation. I should have been clearer in my post that what I
actually wanted to do was fit a gaussian to the truncated "central" part of
the distribution so that I was not so sensitive to the tails. A better
statement of the problem is that I would like to fit a gaussian to the part
of the data that I suspect is actually gaussian while ignoring the part that
isn't. Unfortunately, if I calculate the standard deviation for the
truncated distribution, then I will underestimate the "sigma" parameter of
the gaussian needed to get a good fit.

I'll take at the scipy.stats.norm . Thanks for your help.
Bill

On 11/30/09 7:22 PM, "John Hunter" <jdh2358@...> wrote:

> On Mon, Nov 30, 2009 at 6:44 PM, William Carithers <wccarithers@...>
> wrote:
>> I would like to fit a gaussian to a histogram and then overplot it. I can
>> write the code to do this but most plotting packages support such fitting.
>> However I can't find it for pyplot even after scanning documentation,
>> googling, etc. In fact, the only fitting functionality I could find was the
>> polynomial fitting for numpy that is layered underneath matplotlib, i.e.
>> Numpy.polyfit(...).
>> 
>> Does anyone know if/how this might be built into matplotlib?
> 
> For a Gaussian distribution, the best fit is provided by the normal
> distribution which has the same mean and stddev as your empirical data
> (this is not true in general for other distributions).   Once you have
> the mean and stddev from the data, you can use normpdf to plot the
> analytic density -- see for example
> 
> http://matplotlib.sourceforge.net/search.html?q=normpdf
> 
> For more powerful density fitting and sampling, see scipy.stats
> functions, eg scipy.stats.norm.fit
> 
> JDH

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
John Hunter | 1 Dec 04:58
Picon
Gravatar

Re: figimage over plot?

On Mon, Nov 30, 2009 at 9:04 PM, Jason Heeris <jason.heeris@...> wrote:
> Is it at all possible to have figimage draw the image OVER the top of
> the plot area? Currently I can only get it to draw underneath — even
> if I set the frame alpha to zero, it is obscured by the grid. This can
> be seen from the test code below:

I added support for zorder at the level of figure artists to svn HEAD.
 It is not a complete solution, but should be better than what we had
before, and should handle your use case.  The reason it is not
complete is that it treats the Axes at the Figure level as a *single*
artist, so draws every artist contained in the Axes at the same
relative figure order (relative orders among Axes artists are still
respected).  But you can now specify the zorder of all artists
contained by the figure, as shown in the attached example which puts
the figimages above the axes.

Some of this code is particularly tricky and difficult to get right
across use cases (eg composite figimages) and this is exacerbated by
the fact that this part of the codebase is lightly used.  So testing
will be helpful.  I'm also posting an svn diff for other devs to
review.

Index: lib/matplotlib/pyplot.py
===================================================================
--- lib/matplotlib/pyplot.py	(revision 7992)
+++ lib/matplotlib/pyplot.py	(revision 7994)
@@ -401,7 +401,7 @@
     # allow callers to override the hold state by passing hold=True|False
     ret =  gcf().figimage(*args, **kwargs)
     draw_if_interactive()
-    sci(ret)
+    #sci(ret)  # JDH figimage should not set current image -- it is
not mappable, etc
     return ret

 def figlegend(handles, labels, loc, **kwargs):
Index: lib/matplotlib/figure.py
===================================================================
--- lib/matplotlib/figure.py	(revision 7992)
+++ lib/matplotlib/figure.py	(revision 7994)
@@ -343,7 +343,8 @@
                  cmap=None,
                  vmin=None,
                  vmax=None,
-                 origin=None):
+                 origin=None,
+                 **kwargs):
         """
         call signatures::

@@ -393,11 +394,14 @@

         .. plot:: mpl_examples/pylab_examples/figimage_demo.py

+
+        Additional kwargs are Artist kwargs passed on to
+        :class:`~matplotlib.image.FigureImage`
         """

         if not self._hold: self.clf()

-        im = FigureImage(self, cmap, norm, xo, yo, origin)
+        im = FigureImage(self, cmap, norm, xo, yo, origin, **kwargs)
         im.set_array(X)
         im.set_alpha(alpha)
         if norm is None:
@@ -735,11 +739,20 @@

         if self.frameon: self.patch.draw(renderer)

+        # a list of (zorder, func_to_call, list_of_args)
+        dsu = []
+
+
         # todo: respect zorder
-        for p in self.patches: p.draw(renderer)
-        for l in self.lines: l.draw(renderer)
-        for a in self.artists: a.draw(renderer)
+        for a in self.patches:
+            dsu.append( (a.get_zorder(), a.draw, [renderer]))

+        for a in self.lines:
+            dsu.append( (a.get_zorder(), a.draw, [renderer]))
+
+        for a in self.artists:
+            dsu.append( (a.get_zorder(), a.draw, [renderer]))
+
         # override the renderer default if self.suppressComposite
         # is not None
         composite = renderer.option_image_nocomposite()
@@ -747,8 +760,8 @@
             composite = self.suppressComposite

         if len(self.images)<=1 or composite or not
allequal([im.origin for im in self.images]):
-            for im in self.images:
-                im.draw(renderer)
+            for a in self.images:
+                dsu.append( (a.get_zorder(), a.draw, [renderer]))
         else:
             # make a composite image blending alpha
             # list of (_image.Image, ox, oy)
@@ -762,21 +775,33 @@

             im.is_grayscale = False
             l, b, w, h = self.bbox.bounds
-            gc = renderer.new_gc()
-            gc.set_clip_rectangle(self.bbox)
-            gc.set_clip_path(self.get_clip_path())
-            renderer.draw_image(gc, l, b, im)
-            gc.restore()

+            def draw_composite():
+                gc = renderer.new_gc()
+                gc.set_clip_rectangle(self.bbox)
+                gc.set_clip_path(self.get_clip_path())
+                renderer.draw_image(gc, l, b, im)
+                gc.restore()
+
+            if len(ims):
+                dsu.append((ims[0].get_zorder(), draw_composite, []))
+
         # render the axes
-        for a in self.axes: a.draw(renderer)
+        for a in self.axes:
+            dsu.append( (a.get_zorder(), a.draw, [renderer]))

         # render the figure text
-        for t in self.texts: t.draw(renderer)
+        for a in self.texts:
+            dsu.append( (a.get_zorder(), a.draw, [renderer]))

-        for legend in self.legends:
-            legend.draw(renderer)
+        for a in self.legends:
+            dsu.append( (a.get_zorder(), a.draw, [renderer]))

+
+        dsu.sort()
+        for zorder, func, args in dsu:
+            func(*args)
+
Attachment (figimage_demo_zorder.py): text/x-python, 466 bytes
------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
John Hunter | 1 Dec 05:26
Picon
Gravatar

Re: Color in 3d plots

On Mon, Nov 30, 2009 at 8:06 PM, Mike Alger <malger@...> wrote:
> After a weekend of no replies I managed to figure a way out myself

Hey Mike,  sorry for the radio silence.  mpl is a big project and no
one developer is equipped to answer questions about everything.  We
currently have only one active developer (Reinier) working on the 3D
stuff.  I've CCd him, and hopefully he can take a look at your patch.

>
> 3.)    If I do make a modification should it be as a separate function with
> the additional variable or should I try to stuff the new capability into the
> old function
>
> 4.)    is there a clean easy to follow tutorial for submitting changes via
> svn or can I rely on someone else to do the final commit?

In general, if the new functionality is close to the old, we'd like to
see it incorporated into the existing API, perhaps with a new keyword
argument.  We have some documentation on how to contribute to mpl at
http://matplotlib.sourceforge.net/devel/coding_guide.html; see also
the FAQ http://matplotlib.sourceforge.net/faq/howto_faq.html#contributing-howto

> As this was “left to the reader as an exercise” I will leave the integration
> or improvement of this solution as an exercise to the next reader
>
> What I have done is basically cloned the plot surface function and replaced
> the avgz variable with a reference to the “colors” parameter i have added to
> the function call.
>
> This code doesn’t  center things perfectly with respect to the grid (for
> some reason a 40x40 grid turns into 39x39 grid in the function) again this
> is something else that could be improved, however I am happy with it and a
> one pixel shift won’t be missed in my plots.  I also have no real clue as to
> what the following comments was about
>
>
>
>                 # The construction leaves the array with duplicate points,
> which
>
>                 # are removed here.
>
>
>
>  but it is probably related to my non centered plots.
>
> What follows is the modified function  :
>
> def plot_surface2(self, X, Y, Z, colors, *args, **kwargs):

What will be most helpful is an "svn diff", as explained in the coding
guide and FAQ linked above, with an example (included in the diff)
that shows the before and after behavior.  That way even an naive
developer can appreciate the before and after changes and commit the
code if the original developer responsible for that part of the code
base is not available.  The ideal situation is "apply this patch
generated from an svn diff and run example so_and_so.py to see the
plot with and without the patch".  As explained in the FAQ, if you
don't get proper attention here on the mailing list, please post a bug
or patch on the sourceforge tracker so we don't lose it -- sometimes
our inattention is not due to lack of interest but to lack of time,
and a report filed on the tracker helps us not lose the thread.

Thanks for the help!

JDH

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
John Hunter | 1 Dec 05:28
Picon
Gravatar

Re: font rendering quality

On Mon, Nov 30, 2009 at 6:38 PM, Ernest Adrogué <eadrogue@...> wrote:
> Hi,
> I notice a big difference in quality between the text rendered
> by matplotlib and that rendered by the rest of applications.
> As an example, see the image attached showing the same font as
> shown by firefox and matplotlib respectively.
> Is there any config setting I can change to improve the font
> rendering or anything?

The two examples in the page you link to have different font sizes and
possibly different font weights, which makes it difficult to do
side-by-side comparisons.  Could you post an example with
similar/identical settings?

JDH

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev

Gmane