SourceForge logo
SourceForge logo
Menu

matplotlib-users — Discussion related to using matplotlib

You can subscribe to this list here.

2003 Jan
Feb
Mar
Apr
May
(3)
Jun
Jul
Aug
(12)
Sep
(12)
Oct
(56)
Nov
(65)
Dec
(37)
2004 Jan
(59)
Feb
(78)
Mar
(153)
Apr
(205)
May
(184)
Jun
(123)
Jul
(171)
Aug
(156)
Sep
(190)
Oct
(120)
Nov
(154)
Dec
(223)
2005 Jan
(184)
Feb
(267)
Mar
(214)
Apr
(286)
May
(320)
Jun
(299)
Jul
(348)
Aug
(283)
Sep
(355)
Oct
(293)
Nov
(232)
Dec
(203)
2006 Jan
(352)
Feb
(358)
Mar
(403)
Apr
(313)
May
(165)
Jun
(281)
Jul
(316)
Aug
(228)
Sep
(279)
Oct
(243)
Nov
(315)
Dec
(345)
2007 Jan
(260)
Feb
(323)
Mar
(340)
Apr
(319)
May
(290)
Jun
(296)
Jul
(221)
Aug
(292)
Sep
(242)
Oct
(248)
Nov
(242)
Dec
(332)
2008 Jan
(312)
Feb
(359)
Mar
(454)
Apr
(287)
May
(340)
Jun
(450)
Jul
(403)
Aug
(324)
Sep
(349)
Oct
(385)
Nov
(363)
Dec
(437)
2009 Jan
(500)
Feb
(301)
Mar
(409)
Apr
(486)
May
(545)
Jun
(391)
Jul
(518)
Aug
(497)
Sep
(492)
Oct
(429)
Nov
(357)
Dec
(310)
2010 Jan
(371)
Feb
(657)
Mar
(519)
Apr
(432)
May
(312)
Jun
(416)
Jul
(477)
Aug
(386)
Sep
(419)
Oct
(435)
Nov
(320)
Dec
(202)
2011 Jan
(321)
Feb
(413)
Mar
(299)
Apr
(215)
May
(284)
Jun
(203)
Jul
(207)
Aug
(314)
Sep
(321)
Oct
(259)
Nov
(347)
Dec
(209)
2012 Jan
(322)
Feb
(414)
Mar
(377)
Apr
(179)
May
(173)
Jun
(234)
Jul
(295)
Aug
(239)
Sep
(276)
Oct
(355)
Nov
(144)
Dec
(108)
2013 Jan
(170)
Feb
(89)
Mar
(204)
Apr
(133)
May
(142)
Jun
(89)
Jul
(160)
Aug
(180)
Sep
(69)
Oct
(136)
Nov
(83)
Dec
(32)
2014 Jan
(71)
Feb
(90)
Mar
(161)
Apr
(117)
May
(78)
Jun
(94)
Jul
(60)
Aug
(83)
Sep
(102)
Oct
(132)
Nov
(154)
Dec
(96)
2015 Jan
(45)
Feb
(138)
Mar
(176)
Apr
(132)
May
(119)
Jun
(124)
Jul
(77)
Aug
(31)
Sep
(34)
Oct
(22)
Nov
(23)
Dec
(9)
2016 Jan
(26)
Feb
(17)
Mar
(10)
Apr
(8)
May
(4)
Jun
(8)
Jul
(6)
Aug
(5)
Sep
(9)
Oct
(4)
Nov
Dec
2017 Jan
(5)
Feb
(7)
Mar
(1)
Apr
(5)
May
Jun
(3)
Jul
(6)
Aug
(1)
Sep
Oct
(2)
Nov
(1)
Dec
2018 Jan
Feb
Mar
Apr
(1)
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
2020 Jan
Feb
Mar
Apr
May
(1)
Jun
Jul
Aug
Sep
Oct
Nov
Dec
2025 Jan
(1)
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
S M T W T F S




1
(12)
2
(15)
3
(4)
4
5
(1)
6
(13)
7
(8)
8
(16)
9
(10)
10
(6)
11
(11)
12
(20)
13
(8)
14
(12)
15
(10)
16
(12)
17
(6)
18
(7)
19
(18)
20
(5)
21
(9)
22
23
(6)
24
(3)
25
26
(2)
27
(26)
28
(11)
29
(9)
30
(21)

Showing 6 results of 6

From: Bryan C. <br...@co...> - 2006年06月17日 19:55:27
On Sun, 2006年06月18日 at 00:05 +1000, John Pye wrote:
> Hi all,
> 
> A thought just occurred to me: I wonder if it would be useful to be able
> to 'pickle' Matplotlib plots, using the python cPickle library. This
> way, I could save my plots in a form that would allow me to load them
> back later (with just the necessary source data) and fiddle with things
> like titles and legends and so on. Would be useful perhaps in the
> context of preparing diagrams for an article or report.
> 
> Has anyone tried this? Would it be recommended/not recommended/not even
> possible?
I had a look at this a while back. It looks like the well thought out
structure of MPL should make this easy, although it would require a few
adjustments. To make a Figure object pickle-able, all the internal
objects in a Figure must also be pickle-able. Most of the innards of a
Figure are python objects which should pickle without problem. The only
parts which aren't are the "BinOps". These are custom C-coded objects
which implement 'lazy evaluation' of the transformation expressions.
They're defined in the _transforms.cxx/h files.
In theory, you can easily make these C-objects pickle-able using the
'copy_reg' module; you just register two functions, one to extracts the
object's state as a pickle-able object, the other to construct a new
instance of the object, initialised with the previously stored state.
However, I ran into a problem: there's some bug in either python or CXX
(the automatic C++ class wrapper which mpl uses for the compiled
components) which results in a segfault when I tried pickling copy_reg
enhanced BinOps. The templating techniques used by CXX are completely
beyond me so this is where things have stuck.
... but ... I just now tested this again with python-2.4.2 and
mpl-0.87.2 and it works! yeay. Thus, if every object in
matplotlib._transforms gets given a python reduction/construction
function pair and registers them with copy_reg, this *should* be enough
to make a Figure pickle-able. Unless I've missed something else...
I may try this out later this week, unless someone else tries it first.
Bryan
PS. copy_reg example follows >>>
import cPickle as pickle
import copy_reg
#let's test this on a simple 'Value' BinOp
from matplotlib._transforms import Value
def fcon(val):
 #constructor
 return Value(val)
def fred(o):
 #reduction functions
 val = o.get()
 return fcon, (val,)
#my starting object
a=Value(5)
print a, a.get()
copy_reg.pickle(type(a), fred)
data = pickle.dumps(a)
new = pickle.loads(data)
print "new", new, new.get()
> 
> Cheers
> JP
From: Eric F. <ef...@ha...> - 2006年06月17日 18:57:09
John Hunter wrote:
>>>>>>"Eric" == Eric Firing <ef...@ha...> writes:
> 
> Eric> they will not be transparent. If you need transparent
> Eric> masked regions, then try pcolor instead of imshow. Pcolor
> Eric> plots nothing at all in masked cells. Pcolormesh, on the
> Eric> other hand, is like imshow in plotting the assigned bad
> Eric> color and in using a single alpha for everything.
> 
> I'm confused about the comments about alpha not working on imshow --
> can you elaborate. On the agg backend at least, the alpha channel is
> respected in imshow, eg examples/layer_images.py. Is there a reason
> it does not (or should not) work in the masked example?
John,
I don't know why it doesn't work; I know only that in my example, it 
doesn't work as I perhaps naively think it should. My interpretation of 
alpha is that if alpha is zero in any colored region, and if nothing 
else is drawn on top, then the background should show through; that is, 
the r,g,b values in the r,g,b,a tuple for a region should have no effect 
if a is zero. If you uncomment
#cmap.set_bad((1,1,1,0)
in my example, you will find that the masked region is white; and if you 
change the rgb part of that tuple, it takes on that color, regardless of 
alpha.
The Colormap.__call__() is trying to respect the individual alphas of 
the special colors (bad, under, over) while setting a uniform alpha for 
the normal colors, but somewhere along the line this is not working as 
intended. I ran into this when I wrote the code for the special colors, 
and I left a comment to that effect, but apart from taking another look 
just now I have not tried to track it down. The behavior is the same in 
imshow and in pcolormesh. I tried to work around it by setting the 
default bad color to white. The difference in pcolor is that it draws 
nothing at all in the masked region, so one sees the gray background.
Eric
From: Eric F. <ef...@ha...> - 2006年06月17日 18:32:49
John,
It sounds like you are not using the latest *released* version of mpl, 
which is 0.87.3; the only thing in my example that requires svn is the 
colorbar command. If you did install 0.87.3, then you must have an 
earlier installation still in place and being found.
imshow requires a uniform rectangular grid. pcolor is much more general 
and colors rectangles specified by their boundaries, not their centers. 
 pcolormesh is similar (though not identical) but faster.
As you described it, your application seems most natural for imshow, 
except for the problem with masked areas not being transparent. I 
suggested pcolor only as a workaround for that, if you really need that 
transparency.
Eric
John Pye wrote:
> Hi Eric,
> 
> Thanks for your suggestion. The colorbar(shrink) command throws me an
> error, as you said it would. But I get another error with the '0.3',
> '0.5', etc. I had to replace those with (0.3,0.3,0.3) etc -- RGB tuples.
> 
> Finally, my plot only shows white, grey red. I don't get any other
> colors -- do you? Is that because of the colorbar(shrink) thing, or is
> something else not working? Do I *need* your SVN changes?
> 
> Also, when should I be using pcolor versus imshow? If my image is
> constructed of colors at specified sample points, is it better that I
> use pcolor? The pcolor command isn't mentioned at all in the matplotlib
> user's guide...
> 
> Cheers
> JP
> 
> Eric Firing wrote:
> 
> 
>>John,
>>
>>Something like this might be what you want:
>>
>>from pylab import *
>>import matplotlib.numerix.ma as ma
>>import matplotlib.colors as colors
>>xx = rand(10,15)
>>xxx = (xx*15 - 5).astype(Int)
>>xxx = ma.masked_where(xxx < 0, xxx)
>>xxx.set_fill_value(-1) #(not necessary)
>>cmap = colors.ListedColormap(('r', 'g', 'b',
>> 'c', 'y', 'm',
>> 'k', '0.3', '0.5',
>> '0.7'))
>>#cmap.set_bad((1,1,1,0)) # setting alpha to zero does not work, at least
>> # for imshow
>>im = imshow(xxx, interpolation='nearest',
>> cmap=cmap, norm=colors.no_norm())
>>cb = colorbar(shrink=0.6)
>>
>>
>>What we are doing here is making a custom colormap from a list of
>>colors (using any valid mpl color specification), and then indexing
>>directly into it with values from a (masked) integer array. Note the
>>use of "norm=colors.no_norm()" so that the array values are passed
>>directly to the colormap as integers.
>>
>>Caution: the colorbar command works correctly in this example only
>>with the modifications that I committed to svn a few minutes ago.
>>
>>As noted, the masked regions will have a specified color; they will
>>not be transparent. If you need transparent masked regions, then try
>>pcolor instead of imshow. Pcolor plots nothing at all in masked
>>cells. Pcolormesh, on the other hand, is like imshow in plotting the
>>assigned bad color and in using a single alpha for everything.
>>
>>Eric
>>
>>
>>John Pye wrote:
>>
>>
>>>Hi all
>>>
>>>I have some data with enumerated values in an array. Values are like
>>>1,2,7,9 spread around in the array. I want to plot those values so that
>>>I can see the 'regions' in my data, then I want to overlay this with
>>>some contour lines drawn from other data.
>>>
>>>I want to be able to specify the colors for each of the enumerated
>>>values, as they need to be consistent throughout my work. My array of
>>>enumerated values is *masked* so that there are areas where I don't want
>>>to show anything (this would plot as transparent pixels).
>>>
>>>Has anyone got suggestions on the best way of doing this? It seems that
>>>the technique in
>>>http://www.scipy.org/Cookbook/Matplotlib/Plotting_Images_with_Special_Values
>>>
>>>might be overkill, right? It also seemed that it had some problems with
>>>masked arrays.
>>>
>>>Cheers
>>>
>>>JP
>>>
>>
>>
From: John P. <joh...@st...> - 2006年06月17日 14:05:50
Hi all,
A thought just occurred to me: I wonder if it would be useful to be able
to 'pickle' Matplotlib plots, using the python cPickle library. This
way, I could save my plots in a form that would allow me to load them
back later (with just the necessary source data) and fiddle with things
like titles and legends and so on. Would be useful perhaps in the
context of preparing diagrams for an article or report.
Has anyone tried this? Would it be recommended/not recommended/not even
possible?
Cheers
JP
From: John P. <joh...@st...> - 2006年06月17日 14:01:35
Hi Eric,
Thanks for your suggestion. The colorbar(shrink) command throws me an
error, as you said it would. But I get another error with the '0.3',
'0.5', etc. I had to replace those with (0.3,0.3,0.3) etc -- RGB tuples.
Finally, my plot only shows white, grey red. I don't get any other
colors -- do you? Is that because of the colorbar(shrink) thing, or is
something else not working? Do I *need* your SVN changes?
Also, when should I be using pcolor versus imshow? If my image is
constructed of colors at specified sample points, is it better that I
use pcolor? The pcolor command isn't mentioned at all in the matplotlib
user's guide...
Cheers
JP
Eric Firing wrote:
> John,
>
> Something like this might be what you want:
>
> from pylab import *
> import matplotlib.numerix.ma as ma
> import matplotlib.colors as colors
> xx = rand(10,15)
> xxx = (xx*15 - 5).astype(Int)
> xxx = ma.masked_where(xxx < 0, xxx)
> xxx.set_fill_value(-1) #(not necessary)
> cmap = colors.ListedColormap(('r', 'g', 'b',
> 'c', 'y', 'm',
> 'k', '0.3', '0.5',
> '0.7'))
> #cmap.set_bad((1,1,1,0)) # setting alpha to zero does not work, at least
> # for imshow
> im = imshow(xxx, interpolation='nearest',
> cmap=cmap, norm=colors.no_norm())
> cb = colorbar(shrink=0.6)
>
>
> What we are doing here is making a custom colormap from a list of
> colors (using any valid mpl color specification), and then indexing
> directly into it with values from a (masked) integer array. Note the
> use of "norm=colors.no_norm()" so that the array values are passed
> directly to the colormap as integers.
>
> Caution: the colorbar command works correctly in this example only
> with the modifications that I committed to svn a few minutes ago.
>
> As noted, the masked regions will have a specified color; they will
> not be transparent. If you need transparent masked regions, then try
> pcolor instead of imshow. Pcolor plots nothing at all in masked
> cells. Pcolormesh, on the other hand, is like imshow in plotting the
> assigned bad color and in using a single alpha for everything.
>
> Eric
>
>
> John Pye wrote:
>
>> Hi all
>>
>> I have some data with enumerated values in an array. Values are like
>> 1,2,7,9 spread around in the array. I want to plot those values so that
>> I can see the 'regions' in my data, then I want to overlay this with
>> some contour lines drawn from other data.
>>
>> I want to be able to specify the colors for each of the enumerated
>> values, as they need to be consistent throughout my work. My array of
>> enumerated values is *masked* so that there are areas where I don't want
>> to show anything (this would plot as transparent pixels).
>>
>> Has anyone got suggestions on the best way of doing this? It seems that
>> the technique in
>> http://www.scipy.org/Cookbook/Matplotlib/Plotting_Images_with_Special_Values
>>
>> might be overkill, right? It also seemed that it had some problems with
>> masked arrays.
>>
>> Cheers
>>
>> JP
>>
>
>
From: John H. <jdh...@ac...> - 2006年06月17日 13:31:33
>>>>> "Eric" == Eric Firing <ef...@ha...> writes:
 Eric> they will not be transparent. If you need transparent
 Eric> masked regions, then try pcolor instead of imshow. Pcolor
 Eric> plots nothing at all in masked cells. Pcolormesh, on the
 Eric> other hand, is like imshow in plotting the assigned bad
 Eric> color and in using a single alpha for everything.
I'm confused about the comments about alpha not working on imshow --
can you elaborate. On the agg backend at least, the alpha channel is
respected in imshow, eg examples/layer_images.py. Is there a reason
it does not (or should not) work in the masked example?
JDH

Showing 6 results of 6

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /