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

Showing 7 results of 7

From: Eric F. <ef...@ha...> - 2012年11月19日 23:53:21
On 2012年11月19日 11:42 AM, TP wrote:
> Hi everybody,
>
> I have a problem with LinearSegmentedColormap.
> In the example below (see PS), I make a colormap, and use it to plot an
> EllipseCollection. My plot is parameterized by a quantity that I have named
> "large_value". For large_value equal to 257, a blue point is obtained at
> (x=0.3, y=0.4). But for large_value equal to 258, it becomes black.
>
> This is because of the way LinearSegmentedColormap is working. It has a
> parameter N which allows to set the "number of colors":
>
> http://matplotlib.org/api/colors_api.html#matplotlib.colors.LinearSegmentedColormap
>
> It is 256 by default, so if I increase N to a greater value, the point remains
> blue for large_value equal to 258.
>
> Now, my real plot (not this dummy example) is such that I need N to be very
> large so as to obtain the right colors on my plot, although very few colors
> are used at the end.
> However, when N is too large, the plot becomes very slow, and a lot of memory
> is used; I think because an array is probably built with this size, although
> in theory there is no need to construct such a complete array.
>
> Is there an easy workaround, or have I to study and modify the matplotlib code
> myself?
It is not entirely clear to me what you are trying to do, but it sounds 
like increasing N is not the right way to do it. Three things might help 
you find a better way:
1) The colormap is intended to work with a norm that handles the 
translation from your data numbers to the 0-1.0 range used to select 
values from the colormap (with exceptions--see below). You can choose a 
non-default norm, you can write your own, or you can set the parameters 
(vmin, vmax) of the standard linear norm.
2) By creating a colormap and calling its set_under, set_over, and 
set_invalid methods, you can control the colors assigned to data values 
that your norm maps respectively to negative numbers, numbers greater 
than 1, and masked values. See 
http://matplotlib.org/examples/pylab_examples/contourf_demo.html for an 
example of using set_under and set_over. See 
http://matplotlib.org/examples/pylab_examples/image_masked.html for 
another example, and for an example of controlling the norm parameters 
or using an alternative norm.
3) It is also possible to index directly into the colormap if you use a 
norm that returns an integer data type. An example of such is the 
BoundaryNorm. 
http://matplotlib.org/examples/pylab_examples/multicolored_line.html
If all you need is a single assignment of a color to a "large value", 
then using the set_over method will take care of it.
Eric
>
> Thanks,
>
> TP
>
> PS: Here is the test code:
> ##################
> from pylab import *
> from matplotlib.colors import LinearSegmentedColormap
> from matplotlib.collections import CircleCollection
>
> ioff()
> large_value = 257 # blue below this value
> #large_value = 258 # black above this value
> N = 1e5 # 256 by default
>
> cdict = { 'blue': [(0.0, 0.0, 0.0),
> (2*1/large_value, 1, 1)
> , (1.0, 1.0, 1.0)]
> , 'green': [(0.0, 0.0, 0.0),
> (2*1/large_value, 0, 0)
> , (1.0, 1.0, 1.0)]
> , 'red': [(0.0, 0.0, 0.0),
> (2*1/large_value, 0, 0),
> (1.0, 1.0, 1.0)] }
>
> measures= array([[ 0.2, 0.3, 1],
> [ 0.3, 0.4, 2],
> [ 0.5, 0.6, large_value]])
>
> cmap = LinearSegmentedColormap( "cmap foobar"
> , cdict
> # , N= N )
> )
>
> fig = figure()
> axes = fig.add_subplot(111)
> ec = CircleCollection( [80]
> , offsets = measures[:,:2]
> , transOffset = axes.transData
> )
>
> ec.set_array( measures[:,2] )
> ec.set_cmap( cmap )
> axes.add_collection( ec )
>
> show()
> ##################
>
> ------------------------------------------------------------------------------
> Monitor your physical, virtual and cloud infrastructure from a single
> web console. Get in-depth insight into apps, servers, databases, vmware,
> SAP, cloud infrastructure, etc. Download 30-day Free Trial.
> Pricing starts from 795ドル for 25 servers or applications!
> http://p.sf.net/sfu/zoho_dev2dev_nov
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
From: TP <par...@fr...> - 2012年11月19日 21:43:00
Hi everybody,
I have a problem with LinearSegmentedColormap.
In the example below (see PS), I make a colormap, and use it to plot an 
EllipseCollection. My plot is parameterized by a quantity that I have named 
"large_value". For large_value equal to 257, a blue point is obtained at 
(x=0.3, y=0.4). But for large_value equal to 258, it becomes black.
This is because of the way LinearSegmentedColormap is working. It has a 
parameter N which allows to set the "number of colors":
http://matplotlib.org/api/colors_api.html#matplotlib.colors.LinearSegmentedColormap
It is 256 by default, so if I increase N to a greater value, the point remains 
blue for large_value equal to 258.
Now, my real plot (not this dummy example) is such that I need N to be very 
large so as to obtain the right colors on my plot, although very few colors 
are used at the end.
However, when N is too large, the plot becomes very slow, and a lot of memory 
is used; I think because an array is probably built with this size, although 
in theory there is no need to construct such a complete array.
Is there an easy workaround, or have I to study and modify the matplotlib code 
myself?
Thanks,
TP
PS: Here is the test code:
##################
from pylab import *
from matplotlib.colors import LinearSegmentedColormap
from matplotlib.collections import CircleCollection
ioff()
large_value = 257 # blue below this value
#large_value = 258 # black above this value
N = 1e5 # 256 by default
cdict = { 'blue': [(0.0, 0.0, 0.0),
 (2*1/large_value, 1, 1)
 , (1.0, 1.0, 1.0)]
 , 'green': [(0.0, 0.0, 0.0),
 (2*1/large_value, 0, 0)
 , (1.0, 1.0, 1.0)]
 , 'red': [(0.0, 0.0, 0.0),
 (2*1/large_value, 0, 0),
 (1.0, 1.0, 1.0)] }
measures= array([[ 0.2, 0.3, 1],
 [ 0.3, 0.4, 2],
 [ 0.5, 0.6, large_value]])
cmap = LinearSegmentedColormap( "cmap foobar"
 , cdict
 # , N= N )
 )
fig = figure()
axes = fig.add_subplot(111)
ec = CircleCollection( [80]
 , offsets = measures[:,:2]
 , transOffset = axes.transData
 )
ec.set_array( measures[:,2] )
ec.set_cmap( cmap )
axes.add_collection( ec )
show()
##################
From: Adam M. <ram...@gm...> - 2012年11月19日 17:36:30
On Mon, Nov 19, 2012 at 7:44 AM, Nelle Varoquaux
<nel...@gm...> wrote:
> This is not the "correct" way to run the tests.
Then that explains it, thanks.
>> Does the same thing happen with the following command:
>>
>> python -c "import matplotlib; matplotlib.test()"
No, all tests pass (or fail when they are expected to).
> "KnownFailure" is not a "default" nosetest packages. Hence, we have to load
> it manually when running the tests.
Thanks, makes sense.
Cheers
Adam
From: Sterling S. <sm...@fu...> - 2012年11月19日 16:39:04
Chao,
I'm glad you were able to get what you wanted. 
I don't know how to add anything to the gallery.
-Sterling
On Nov 17, 2012, at 3:32AM, Chao YUE wrote:
> Hi Sterling,
> 
> Thanks for the help. Now we have a complete script that works as what we want:
> 
> ****labels parallel with the colorbar with colorbar seperated ****
> 
> By the way, is it possible to put in the gallery?
> 
> 
> from pylab import *
> a = np.arange(100).reshape(10,10)
> cbarlevel=np.arange(0,101,10)
> cs=contourf(a,levels=cbarlevel)
> cbar = colorbar()
> cbar.set_ticks(cbarlevel)
> 
> #prepare the final label that we want
> cbar_label = []
> for i in range(len(cbarlevel)-1):
> cbar_label.append(" {0}-{1}".format(cbarlevel[i],cbarlevel[i+1]))
> 
> cbar.set_ticklabels(['']*len(cbarlevel)) #remove the original labels
> #set ticks as white; the 'length' parameter is a bit dirty solution
> cbar.ax.tick_params(axis='y',left='on',length=10,color='w',width=5)
> cbar.outline.remove() #remove the colorbar frame
> 
> #add the label parallel to colorbar; 0.035 to be set by manual observation, a bit dirty solution.
> yloc=np.arange(0.035,0.95,0.1)
> for l,y in zip(cbar_label,yloc):
> cbar.ax.text(1,y,l,transform=cbar.ax.transAxes,ha='left')
> 
> cheers,
> 
> Chao
> 
> On Sat, Nov 17, 2012 at 12:12 AM, Sterling Smith <sm...@fu...> wrote:
> Chao,
> 
> If you don't need the tick marks and are only annoyed by their appearance in the colorbar, then I am pasting below our code so far setting the tick length to 0.
> 
> Code so far:
> 
> from pylab import *
> fig = figure(2)
> fig.clear()
> a = np.arange(100).reshape(10,10)
> cbarlevel=np.arange(0,101,10)
> contourf(a,levels=cbarlevel)
> cbar = colorbar()
> cbar.set_ticks((cbarlevel[1:]+cbarlevel[:-1])/2.)
> 
> #to manipulate the range:
> cbar_label = []
> for i in range(len(cbarlevel)-1):
> cbar_label.append("{0}-{1}".format(cbarlevel[i],cbarlevel[i+1]))
> 
> #Then to apply on the colorbar:
> cbar.set_ticklabels(cbar_label)
> 
> ax = fig.axes[-1] #This is not as clean as making the axes before the colorbar and passing to the colorbar...
> ax.yaxis.set_tick_params(length=0)
> 
> 
> If you still want the ticks, then you might think of keeping the ticks where you had set them originally, then placing texts (pylab.text) with the transAxes transform, using the following script:
> 
> 
> from pylab import *
> fig = figure(2)
> fig.clear()
> a = np.arange(100).reshape(10,10)
> cbarlevel=np.arange(0,101,10)
> contourf(a,levels=cbarlevel)
> cbar = colorbar()
> #cbar.set_ticks((cbarlevel[1:]+cbarlevel[:-1])/2.)
> cbar.set_ticks(cbarlevel)
> 
> #to manipulate the range:
> cbar_label = []
> for i in range(len(cbarlevel)-1):
> cbar_label.append("{0}-{1}".format(cbarlevel[i],cbarlevel[i+1]))
> #cbar_label.append('')
> 
> print cbar_label
> #['0-10', '10-20', '20-30', '30-40', '40-50', '50-60', '60-70', '70-80',
> #'80-90', '90-100', '']
> 
> #Then to apply on the colorbar:
> cbar.set_ticklabels(['']*len(cbarlevel))
> 
> ax = fig.axes[-1]
> #ax.yaxis.set_tick_params(length=0)
> 
> yloc = linspace(0,1,len(cbar_label)+1)
> yloc = yloc[:-1] + yloc[1]/2.
> for l,y in zip(cbar_label,yloc):
> ax.text(1,y,l,transform=ax.transAxes,ha='left')
> draw()
> 
> -Sterling
> 
> On Nov 16, 2012, at 12:58PM, Chao YUE wrote:
> 
> > Thanks Sterling. It's a good idea.
> >
> > Unluckily, I lose the original ticks and the ticks appeared in the middle. Is there any approach I can keep the original ticks while realizing what has been shown in the figure?
> >
> > Chao
> >
> > On Fri, Nov 16, 2012 at 5:47 PM, Sterling Smith <sm...@fu...> wrote:
> > Chao,
> >
> > The secret is positioning your ticks. I list here an untested attempt at putting the labels at the average of the current and next levels:
> >
> > cbar.set_ticks((cbarlevel[1:]+cbarlevel[:-1])/2.)
> >
> > Because you have less ticks, then you will want to remove the line
> >
> > cbar_level.append('')
> >
> > Hope that helps,
> > Sterling
> >
> > On Nov 16, 2012, at 7:46AM, ChaoYue wrote:
> >
> > > I have a bit progress, but still not very well.
> > >
> > > #to have a contourf plot
> > > a = np.arange(100).reshape(10,10)
> > > cbarlevel=np.arange(0,101,10)
> > > contourf(a,levels=cbarlevel)
> > > cbar = colorbar()
> > > cbar.set_ticks(cbarlevel)
> > >
> > > #to manipulate the range:
> > > cbar_label = []
> > > for i in range(len(cbarlevel)-1):
> > > cbar_label.append("{0}-{1}".format(cbarlevel[i],cbarlevel[i+1]))
> > > cbar_label.append('')
> > >
> > > In [54]: print cbar_label
> > > ['0-10', '10-20', '20-30', '30-40', '40-50', '50-60', '60-70', '70-80',
> > > '80-90', '90-100', '']
> > >
> > > #Then to apply on the colorbar:
> > > cbar.set_ticklabels(cbar_label)
> > >
> > > The generated figure is attached. But how can I put the labels a little bit
> > > upward to make them parallel with the respective small rectangles in the
> > > colorbar? <http://matplotlib.1069221.n5.nabble.com/file/n39786/fig.jpg>
> > >
> > >
> > >
> > >
> > >
> > > --
> > > View this message in context: http://matplotlib.1069221.n5.nabble.com/how-to-put-colorbar-label-beside-the-handle-tp39705p39786.html
> > > Sent from the matplotlib - users mailing list archive at Nabble.com.
> > >
> > > ------------------------------------------------------------------------------
> > > Monitor your physical, virtual and cloud infrastructure from a single
> > > web console. Get in-depth insight into apps, servers, databases, vmware,
> > > SAP, cloud infrastructure, etc. Download 30-day Free Trial.
> > > Pricing starts from 795ドル for 25 servers or applications!
> > > http://p.sf.net/sfu/zoho_dev2dev_nov
> > > _______________________________________________
> > > Matplotlib-users mailing list
> > > Mat...@li...
> > > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> >
> >
> >
> >
> > --
> > ***********************************************************************************
> > Chao YUE
> > Laboratoire des Sciences du Climat et de l'Environnement (LSCE-IPSL)
> > UMR 1572 CEA-CNRS-UVSQ
> > Batiment 712 - Pe 119
> > 91191 GIF Sur YVETTE Cedex
> > Tel: (33) 01 69 08 29 02; Fax:01.69.08.77.16
> > ************************************************************************************
> >
> > <fig.jpg>
> 
> 
> 
> 
> -- 
> ***********************************************************************************
> Chao YUE
> Laboratoire des Sciences du Climat et de l'Environnement (LSCE-IPSL)
> UMR 1572 CEA-CNRS-UVSQ
> Batiment 712 - Pe 119
> 91191 GIF Sur YVETTE Cedex
> Tel: (33) 01 69 08 29 02; Fax:01.69.08.77.16
> ************************************************************************************
> 
From: Nelle V. <nel...@gm...> - 2012年11月19日 13:44:42
Hello,
Hi
>>
>> When running the testsuite for matplotlib-1.2.0 i.e.
>>
>> $ nosetests -exe matplotlib
>>
>
This is not the "correct" way to run the tests. You need to run them using:
python tests.py
I currently have a PR that indicates that in the README
> I'm getting a lot of errors of the form:
>>
>>
> Does the same thing happen with the following command:
>
> python -c "import matplotlib; matplotlib.test()"
>
That's another way of running the tests on matplotlib.
>
> I haven't used nosetest before, so I have no clue if it does anything
> different than we expect.
>
"KnownFailure" is not a "default" nosetest packages. Hence, we have to load
it manually when running the tests.
Hence, all the tests that are known to fail actually fail, so that what we
"expect".
Cheers,
N
>
> Ben Root
>
>
>
> ------------------------------------------------------------------------------
> Monitor your physical, virtual and cloud infrastructure from a single
> web console. Get in-depth insight into apps, servers, databases, vmware,
> SAP, cloud infrastructure, etc. Download 30-day Free Trial.
> Pricing starts from 795ドル for 25 servers or applications!
> http://p.sf.net/sfu/zoho_dev2dev_nov
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>
From: Benjamin R. <ben...@ou...> - 2012年11月19日 13:38:34
On Sun, Nov 18, 2012 at 5:51 PM, Adam Mercer <ram...@gm...> wrote:
> Hi
>
> When running the testsuite for matplotlib-1.2.0 i.e.
>
> $ nosetests -exe matplotlib
>
> I'm getting a lot of errors of the form:
>
>
Does the same thing happen with the following command:
python -c "import matplotlib; matplotlib.test()"
I haven't used nosetest before, so I have no clue if it does anything
different than we expect.
Ben Root
From: Neal B. <ndb...@gm...> - 2012年11月19日 12:59:56
Mathew Topper wrote:
> Hi,
> 
> I'm interested to know why the pip package manager is not more widely
> supported for installation of python packages like matplotlib?
> Matplotlib seems to be particularly slowly updated in the Fedora
> repositories, for example, so I often find that a source installation is
> necessary. I know this isn't especially difficult for the experienced
> user, but surely using something like pip would make this process for
> accessible for all users of python packages, particularly those that do
> not receive much attention from the big distribution maintainers? Yet,
> pip doesn't get a mention on the installation documentation of
> matplotlib or many other python packs.
> 
> I would love to hear anyone's thoughts on this matter.
> 
> Many Thanks,
> 
> Mat
It is dangerous to use pip on fedora, it may result in your next attempt to 
update the system failing horribly.
If you use it, try to install with --user. Unfortunately, this often won't work 
because pip will then complain when attempting to remove a system version of 
some dep.

Showing 7 results of 7

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 によって変換されたページ (->オリジナル) /