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
(10) |
2
(6) |
3
(13) |
4
(3) |
5
(10) |
6
(4) |
7
(2) |
8
(15) |
9
(10) |
10
(44) |
11
(17) |
12
(9) |
13
(2) |
14
(2) |
15
(4) |
16
(8) |
17
(13) |
18
(11) |
19
(12) |
20
|
21
|
22
(10) |
23
(10) |
24
(11) |
25
(11) |
26
(9) |
27
(1) |
28
|
29
(15) |
30
(14) |
31
(7) |
|
|
|
On Aug 25, 2005, at 10:02 AM, Schindler Benjamin wrote: > Since I have to leave from here I cannot yet produce a sample app that > would show this behaviour. It doesn't have to be anything complex, just the bare functionality of whatever you're working on. I'll be happy to take a look at it tomorrow. > However, I tried to have a non-empty list at the beginning. I replaced > Line2D([],[]) with Line2D([1,2],[1,2]) just for the sake of trying - > with no luck apparently. I'm sorry if I gave you the impression that that was the problem... it's a potential problem, but I didn't mean to suggest that it's why your plot isn't being draw. Ken
Since I have to leave from here I cannot yet produce a sample app that = would show this behaviour. However, I tried to have a non-empty list at = the beginning. I replaced Line2D([],[]) with Line2D([1,2],[1,2]) just = for the sake of trying - with no luck apparently.=20 I'll post a sample app tomorrow asap -----Urspr=FCngliche Nachricht----- Von: Ken McIvor [mailto:km...@gm...] Gesendet: Do 25.08.2005 16:54 An: Schindler Benjamin Cc: mat...@li... Betreff: Re: [Matplotlib-users] Line2D and wx Backend =20 On Aug 25, 2005, at 9:33 AM, Schindler Benjamin wrote: > Some event will occur and do the following (it does): > self.axes.add_line(Line2D([],[]) You really don't want to plot empty lines, as it will end up making 0,0=20 part of the total data range. If your data points are on the positive=20 side of the origin and are a long way from zero you'll end up with a=20 lot of empty space on the axis and a little squiggle of a plot off to=20 the right. I've been meaning to file a bug report about this behavior,=20 which I believe is caused by Numeric.array([]) returning=20 Numeric.zeros((0,), 'l'). > I do receive data, I see that I have lines in self.axes, but I never=20 > achieved to have a line on my display. What am I missing? I can think of a few possible problems but wouldn't care to hazard a=20 guess without knowing how things like event generation and handling are=20 implemented I. If you could send an example program which exhibits=20 this problem, I will be happy to look into it. Ken
On Aug 25, 2005, at 9:33 AM, Schindler Benjamin wrote: > Some event will occur and do the following (it does): > self.axes.add_line(Line2D([],[]) You really don't want to plot empty lines, as it will end up making 0,0 part of the total data range. If your data points are on the positive side of the origin and are a long way from zero you'll end up with a lot of empty space on the axis and a little squiggle of a plot off to the right. I've been meaning to file a bug report about this behavior, which I believe is caused by Numeric.array([]) returning Numeric.zeros((0,), 'l'). > I do receive data, I see that I have lines in self.axes, but I never > achieved to have a line on my display. What am I missing? I can think of a few possible problems but wouldn't care to hazard a guess without knowing how things like event generation and handling are implemented I. If you could send an example program which exhibits this problem, I will be happy to look into it. Ken
I have an interesting problem importing pylab. Most of my work is stored on a FAT32 partition so I can access it from windows or linux. If I run python from a dos command open on that partition I get: E:\pythonscripts>python Enthought Edition build 1069 Python 2.3.5 (#62, Mar 22 2005, 21:53:13) [MSC v.1200 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import pylab Traceback (most recent call last): File "<stdin>", line 1, in ? File "C:\Python23\Lib\site-packages\pylab.py", line 1, in ? from matplotlib.pylab import * File "C:\Python23\Lib\site-packages\matplotlib\pylab.py", line 199, in ? import backends File "C:\Python23\Lib\site-packages\matplotlib\backends\__init__.py", line 15, in ? raise ValueError, 'Unrecognized backend %s' % backend ValueError: Unrecognized backend WxAgg >>> But if I do the same things from a dos prompt open on the C partition it works fine: C:\Documents and Settings\Ryan Krauss>python Enthought Edition build 1069 Python 2.3.5 (#62, Mar 22 2005, 21:53:13) [MSC v.1200 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import pylab >>> How can this be fixed? Thanks, Ryan
Hi - I'm having problems - I don't get any line displayed on my screen. = My code looks as follows (Init): self.figure =3D Figure() self.axes =3D self.figure.add_subplot(111) self.canvas =3D FigureCanvas(self.Panel, -1, self.figure) self.sizer =3D wx.BoxSizer(wx.VERTICAL) =20 self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW) self.Panel.SetSizer(self.sizer) Some event will occur and do the following (it does): self.axes.add_line(Line2D([],[]) As soon this event arrives, I'll receive data: def receive(self, data, source): line =3D self.data[source][0] # Retreive the line xdata =3D line.get_xdata() ydata =3D line.get_ydata() for x in data: xdata.append(x[2]) # The data I've received ydata.append(x[0]) =20 self.data[source][0].set_data(xdata, ydata) # Set the data self.canvas.draw() self.canvas.gui_repaint() I do receive data, I see that I have lines in self.axes, but I never = achieved to have a line on my display. What am I missing? Thanks Benjamin Schindler
Hello all I used to work with python 2.2 and with that version I was able to make multiple plots in one script like the example below: from pylab import * x = arange(10) plot(x, c = 'b') print isinteractive() show() plot(x, c = 'r') print isinteractive() show() plot(x[::-1], c = 'g') print isinteractive() show() The script would stop running during the visualisation of the plot and continue after I manually closed the plotting window. However, with the newest python (2.4.1) and matplotlib.pylab version 0.83.2, only the first window can be closed manually. Python then goes into interactive mode and all the plotting commands are plotted into one new window, which can not be accessed anymore by windows, the window hangs. How can I make make multiple plots within one script using the newest python version? thanks Menno Straatsma
>>>>> "David" == David Cameron <dc...@ce...> writes: David> Thanks for the suggestion I've now got lines through the David> origin. Do you know of anyway to add tick marks and labels David> to those lines? David There is no built-in support for this currently, you would have to draw the ticks and tick labels yourself (eg with the TICKLEFT, TICKRIGHT, TICKUP, TICKDOWN linestyles). Making axis and tick placement much more flexible is a high priority and is listed under the "Axis autoranging and tick customization" section of the goals page at http://matplotlib.sourceforge.net/goals.html. Feel free to file a support request on http://sourceforge.net/tracker/?group_id=80706&atid=560721 to help us track this issue. Thanks, JDH
>>>>> "Vinj" == Vinj Vinj <vin...@ya...> writes: Vinj> I'm getting the following error: from matplotlib.pylab Vinj> import * File Vinj> "/usr/lib/python2.4/site-packages/matplotlib/pylab.py", line Vinj> 709, in ? figimage.__doc__ = Figure.figimage.__doc__ + """ Vinj> TypeError: unsupported operand type(s) for +: 'NoneType' and Vinj> 'str' " Vinj> Any ideas what it might be and how I can get around it? Any chance you are getting this with a py2exe frozen app? If I recall correctly, there is an optimize flag in py2exe that suppresses doc strings. This might explain your problem. Please provide as much information as you can with posts. JDH
Hi John > Not sure what you are doing wrong, but here's an example I just tested > that created two PNGs with the indicated sizes in pixels (verified in > the GIMP) > > from pylab import * > > Perhaps you can adapt it to your code. > I tested it on my system and it did as it should. So I started to strip down my code to the basics. Replacing/Adding bit by bit. One error might have been that I used _F_igure() instead of _f_igure(). But the problem didn't go away. So I removed all "references" (var: fig) to the created figure... and it worked from then on... Thanks John to bringing me back to the basics... but I still don't know what the reason was! Merry greetings, Marco - goes now after bug squashing to a real Squash session 8o) The working code: import matplotlib matplotlib.use('Agg') # Agg, Cairo, GTK, GTKAgg, GTKCairo, PS, TkAgg, WX, WXAgg, Paint, GD, Template from pylab import * def create_png(filename, width_in_pixel, height_in_pixel): bar_colors = ["#E3E3AA", "#BFE0FF", "#FFE8C4", "#C6DFDA", "#D9D1EB"] bar_performances = [0.705, 1.757, 1.057, -0.635, -1.347] bar_descriptions = ('Scenario 1\nExpected\n%.2f%%', 'Scenario 2\nBest case\n%.2f%%', 'Scenario 3\nBoom\n%.2f%%', 'Scenario 4\nRecession\n%.2f%%', 'Scenario 5\nWorst case\n%.2f%%') dpi = 100 figure(figsize=(int(width_in_pixel / dpi), int(height_in_pixel / dpi))) for b_num, b_perf in enumerate(bar_performances): bar((b_num + 0.55,), (b_perf,), width=.9, color=bar_colors[b_num]) # Place the text in the middle of the bar t = text(b_num + 1, b_perf / 2.0, bar_descriptions[b_num] % b_perf, horizontalalignment='center', verticalalignment='center', size=9) gca() grid(True) xticks(arange(1,6), [''] * 5) ylabel('Performance %') draw() # force a draw savefig(filename, dpi=100) if __name__ == '__main__': create_png('c:/temp/aaaaa_scenarios_600_300.png', 600, 300) create_png('c:/temp/aaaaa_scenarios_600_800.png', 600, 800) create_png('c:/temp/aaaaa_scenarios_800_600.png', 800, 600) create_png('c:/temp/aaaaa_scenarios_1000_200.png', 1000, 200)
>>>>> "Yves" == Yves Moisan <ym...@gr...> writes: Yves> Hi All, I'm striving to understand how I ca stuff a file Yves> object (e.g. StringIO) to print_figure for an Agg backend. Yves> backend_agg.py states : "If filename is a fileobject, write Yves> png to file object (thus you can, for example, write the png Yves> to stdout". This has come up a number of times. I worked on this once. The sticking point is that libpng takes a FILE pointer, and the cstringio doesn't provide one. There must be a way to do it, but I haven't figured it out yet. Please file a support request on the sf site to remind us to figure it out! Thanks, JDH
>>>>> "m" == m aschwanden <m.a...@ri...> writes: m> All the rendered pngs have a size of 800x600 pixels!!! m> What the heck am I missing? Here the latest code: Not sure what you are doing wrong, but here's an example I just tested that created two PNGs with the indicated sizes in pixels (verified in the GIMP) from pylab import * fig = figure(figsize=(8,6)) plot([1,2,3]) savefig('test1.png', dpi=100) # 800 x 600 savefig('test2.png', dpi=200) #1600 x 1200 show() Perhaps you can adapt it to your code. Hope this helps, JDH
On Wed, 2005年08月24日 at 12:58 +0200, Jesper Larsen wrote: > CherryPy is able to serve/stream the image directly to the browser if it is > converted to a string using an appropriate encoding (png, rgb maybe). PIL is > able to do this conversion: > > http://www.theorganization.net/mt/archives/2005/05/30/ive_finally_got_it.html > > I would like to do something similar with my matplotlib image (i.e. convert it > to a string with an appropriate encoding) instead of writing it to the > harddisk. Does anyone know if that is possible? I've just been working on something similar (although not for web use) myself and came up with the following solution although it's possible there's a better way. Using the agg backend you can obtain an RGBA buffer or RGB string which can then be loaded as a PIL Image for processing. I've adapted a the examples/agg_oo.py to demonstrate. ---- from matplotlib.backends.backend_agg \ import FigureCanvasAgg as FigureCanvas from matplotlib.figure import Figure import Image fig = Figure() canvas = FigureCanvas(fig) ax = fig.add_subplot(111) ax.plot([1,2,3]) ax.set_title('hi mom') ax.grid(True) ax.set_xlabel('time') ax.set_ylabel('volts') canvas.draw() size = canvas.get_width_height() usebuffer = True if usebuffer: # Load the agg buffer directly as the source of the PIL image # - could be less stable as agg and PIL share memory. buf = canvas.buffer_rgba() im = Image.frombuffer('RGBA', size, buf, 'raw', 'RGBA', 0, 1) else: # Save the agg buffer to a string and load this into the PIL image. buf = canvas.tostring_rgb() im = Image.fromstring('RGB', size, buf, 'raw', 'RGB', 0, 1) im.show() ---- Hope this helps, Nick
Hi Me once more. I am still working on the problem. The figures / canvases have the proper sizes (see print-log) but when they are saved, they will end up being 800x600 pixel pictures. The print-statements show the following log: - - - - - - - - Width: 2000 Height: 10000 dpi: 72 fig.get_dpi() = 72 Canvas size: (1944, 9936) Figure size: (27.0, 138.0) - - - - - - - - Width: 600 Height: 800 dpi: 72 fig.get_dpi() = 72 Canvas size: (576, 792) Figure size: (8.0, 11.0) - - - - - - - - Width: 800 Height: 600 dpi: 72 fig.get_dpi() = 72 Canvas size: (792, 576) Figure size: (11.0, 8.0) - - - - - - - - Width: 1000 Height: 200 dpi: 72 fig.get_dpi() = 72 Canvas size: (936, 144) Figure size: (13.0, 2.0) All the rendered pngs have a size of 800x600 pixels!!! What the heck am I missing? Here the latest code: import matplotlib matplotlib.use('Agg') # Agg, Cairo, GTK, GTKAgg, GTKCairo, PS, TkAgg, WX, WXAgg, Paint, GD, Template from pylab import * def create_png(filename, width_in_pixel, height_in_pixel): bar_colors = ["#E3E3AA", "#BFE0FF", "#FFE8C4", "#C6DFDA", "#D9D1EB"] bar_performances = [0.705, 1.757, 1.057, -0.635, -1.347] bar_descriptions = ('Scenario 1\nExpected\n%.2f%%', 'Scenario 2\nBest case\n%.2f%%', 'Scenario 3\nBoom\n%.2f%%', 'Scenario 4\nRecession\n%.2f%%', 'Scenario 5\nWorst case\n%.2f%%') dpi = 72 fig = Figure(figsize=(width_in_pixel / dpi, height_in_pixel / dpi), dpi=dpi,facecolor="#D2D2D2") canvas = FigureCanvasBase(fig) fig.add_subplot(111) for b_num, b_perf in enumerate(bar_performances): bar((b_num + 0.55,), (b_perf,), width=.9, color=bar_colors[b_num]) # Place the text in the middle of the bar t = text(b_num + 1, b_perf / 2.0, bar_descriptions[b_num] % b_perf, horizontalalignment='center', verticalalignment='center', size=9) gca() grid(True) xticks(arange(1,6), [''] * 5) ylabel('Performance %') draw() # force a draw print "- - - - - - - -" print "Width: %d" % width_in_pixel print "Height: %d" % height_in_pixel print "dpi: %d" % dpi print "fig.get_dpi() = %d" % fig.get_dpi() print "Canvas size: ", canvas.get_width_height() print "Figure size: ", fig.get_size_inches() print savefig(filename) if __name__ == '__main__': create_png('c:/temp/aaaaa_scenarios_2000_10000.png', 2000, 10000) create_png('c:/temp/aaaaa_scenarios_600_800.png', 600, 800) create_png('c:/temp/aaaaa_scenarios_800_600.png', 800, 600) create_png('c:/temp/aaaaa_scenarios_1000_200.png', 1000, 200) Even more desperate greetings, Marco
Jesper Larsen wrote: >Hi, > >When I run the following script (I hope the code indentations aren't messed up >by the mailing list software): > >#!/usr/bin/env /usr/bin/python > >import pylab >import matplotlib.toolkits.basemap as basemap > >def main(): > filename = 'world.png' > m = basemap.Basemap() > pylab.figure(figsize=(8,m.aspect*8)) > m.drawcoastlines() # draw coastlines > m.drawmeridians(pylab.arange(0.,420.,60.),labels=[0,0,0,1]) # draw meridians > pylab.savefig(filename) > >if __name__ == '__main__': main() > >The meridians are not drawn at 60W and 120W. Is this a bug in basemap or have >I misunderstood something? > >Kind regards, >Jesper > > > Jesper: Just change m.drawmeridians(pylab.arange(0.,420.,60.),labels=[0,0,0,1]) to m.drawmeridians(pylab.arange(-180.,180.,60.),labels=[0,0,0,1]) and you will see those missing meridians. -Jeff -- Jeffrey S. Whitaker Phone : (303)497-6313 NOAA/OAR/CDC R/CDC1 FAX : (303)497-6449 325 Broadway Web : http://www.cdc.noaa.gov/~jsw Boulder, CO, USA 80305-3328 Office: Skaggs Research Cntr 1D-124
Hi, When I run the following script (I hope the code indentations aren't messed up by the mailing list software): #!/usr/bin/env /usr/bin/python import pylab import matplotlib.toolkits.basemap as basemap def main(): filename = 'world.png' m = basemap.Basemap() pylab.figure(figsize=(8,m.aspect*8)) m.drawcoastlines() # draw coastlines m.drawmeridians(pylab.arange(0.,420.,60.),labels=[0,0,0,1]) # draw meridians pylab.savefig(filename) if __name__ == '__main__': main() The meridians are not drawn at 60W and 120W. Is this a bug in basemap or have I misunderstood something? Kind regards, Jesper
Hi matplotlib users, I'm using matplotlib for an application for producing tsunami travel time contour maps. Recently I discovered the CherryPy (cherrypy.org) web server framework which allows you to very easily embed a web server in your application. This allows the application to be accessed remotely through a web browser. At present the application produces the contour plots when it receives input from a web browser that it should do so. The contour plot png image is then saved to disk and served to the user. CherryPy is able to serve/stream the image directly to the browser if it is converted to a string using an appropriate encoding (png, rgb maybe). PIL is able to do this conversion: http://www.theorganization.net/mt/archives/2005/05/30/ive_finally_got_it.html I would like to do something similar with my matplotlib image (i.e. convert it to a string with an appropriate encoding) instead of writing it to the harddisk. Does anyone know if that is possible? Kind regards, Jesper
Hi there I would like to generate pngs. The trouble I have: I can't size the png. I tried so many variations and browsed through lots of mailings... it seems, I am too stupid for it. Here is my last approach: from pylab import * def create_png(filename, width_in_pixel, height_in_pixel): bar_colors = ["#E3E3AA", "#BFE0FF", "#FFE8C4", "#C6DFDA", "#D9D1EB"] bar_performances = [7.05, 17.57, 10.45, -6.35, -13.47] fig = Figure() canvas = FigureCanvasBase(fig) fig.add_subplot(111) for b_num, b_perf in enumerate(bar_performances): bar((b_num + 0.55,), (b_perf,), width=.9, color=bar_colors[b_num]) gca() grid(True) xticks(arange(1,6), ('Scenario 1\nExpected', 'Scenario 2\nBest case', 'Scenario 3\nBoom', 'Scenario 4\nRecession', 'Scenario 5\nWorst case')) ylabel('Performance') dpi = canvas.figure.get_dpi() fig.set_figsize_inches(width_in_pixel / dpi, height_in_pixel / dpi) canvas.draw() # force a draw savefig(filename, dpi=dpi) if __name__ == '__main__': create_png('c:/temp/aaaaa_scenarios.png', 400, 150) Can you give me any hints how to correct the problem? The png is always around (600,400) pixel... My next approach would be to create the png and afterwards scale it with PIL - but it can't be that matplotlib does not offer a proper scaling/resizing feature - does it? Desperate Greetings, Marco
Eric Firing wrote: > >> >> Thanks Eric - I just wanted to make sure I wasn't missing some >> obvious way to do it. > > > > Jeff, > > A possible trick would be to make a very skinny subplot (using custom > sizing and positioning) and use contourf itself to make the colorbar > in it. I think this is actually the way I am doing it in Matlab. (A > colleague and I greatly customized the Matlab colorbar for this sort > of thing a long time ago.) > > Eric Eric/Phil: Here is a hack that produces colorbars with discrete contour intervals for use with contourf. It's in the form of a patch for pylab.py and figure.py (based on 0.83.2). When pylab.colorbar is called, it checks to see if the current image was created by contourf, and if so calls figure.colobar_contourf (which uses contourf instead of imshow to make the colorbar). Here's a test script: """test script for contourf colorbar""" from pylab import * def func3(x,y): return (1- x/2 + x**5 + y**3)*exp(-x**2-y**2) dx, dy = 0.05, 0.05 X,Y = meshgrid(arange(-3.0,3.0001,dx),arange(-3.0,3.0001,dy)) Z = func3(X, Y) levels = linspace(-1.2,1.2,13) l,c = contour (X, Y, Z, levels, linewidths=0.5, colors='k') clabel(c,l,fmt='%4.2f') l,c = contourf(X, Y, Z, levels, cmap=cm.jet) colorbar(tickfmt='%4.2f',orientation='horizontal') # horiz colorbar colorbar(tickfmt='%4.2f',orientation='vertical') # vert colorbar axis([-3,3,-3,3]) show() This doesn't address the other two of Phil's requests (triangles at the ends, and constant intervals on the colorbar for non-constant contour levels), but I think it's a start. -Jeff -- Jeffrey S. Whitaker Phone : (303)497-6313 Meteorologist FAX : (303)497-6449 NOAA/OAR/CDC R/CDC1 Email : Jef...@no... 325 Broadway Office : Skaggs Research Cntr 1D-124 Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg
Hi All, I'm striving to understand how I ca stuff a file object (e.g. StringIO) to print_figure for an Agg backend. backend_agg.py states : "If filename is a fileobject, write png to file object (thus you can, for example, write the png to stdout". I tried : canvas = FigureCanvasAgg(fig) data = StringIO.StringIO() canvas.print_figure(data, dpi=150) return data.get_value() But that returns an error from backend_agg.py line 383 (matplotlib v. - 0.76) : StringIO instance has no attribute 'rfind'. I've decided to use tempfile, but that leads to something hefty and I hate writing to disk : tempplotfilename = tempfile.mkstemp(suffix='.png') canvas.print_figure(tempplotfilename[1], dpi=150) data = os.read(tempplotfilename[0],os.fstat(tempplotfilename[0]).st_size) # self.REQUEST.RESPONSE.setHeader('Content-Length', os.fstat(tempplotfilename[0]).st_size) # self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache') self.REQUEST.RESPONSE.setHeader('Content-Type', 'image/png') # os.close(tempplotfilename[0]) # os.unlink(tempplotfilename[1]) return data Can this be done ? Thank you, Yves Moisan
On 2005年8月23日, T) Sascha GL apparently wrote: > Never mind... I found the solution. This list is more useful if the solution is actually posted. Cheers, Alan Isaac
>>>>> "Sascha" == Sascha GL <Sas...@gm...> writes: Sascha> Never mind... I found the solution. Thanks. Sascha And the answer, for the archives.... ? JDH
Never mind... I found the solution. Thanks. Sascha -- 5 GB Mailbox, 50 FreeSMS http://www.gmx.net/de/go/promail +++ GMX - die erste Adresse für Mail, Message, More +++
I realize that this is probably not the appropriate place to ask this question but it may be related to using matplotlib's pylab interface. The issue is that when I print an array, I get only the first 300 elements and then " + XX more elements". Is there a way to get rid of this behavior? I'd guess so because when using Numeric directly, the complete array is printed. Thanks in advance for your help. Sascha -- 5 GB Mailbox, 50 FreeSMS http://www.gmx.net/de/go/promail +++ GMX - die erste Adresse für Mail, Message, More +++
Just for completness I will attach the figure this time. Phil On Mon, Aug 22, 2005 at 02:02:57PM -1000, Eric Firing wrote: > Phil Rasch wrote: > >On Mon, Aug 22, 2005 at 12:55:16PM -1000, Eric Firing wrote: > > > >>(from phil:) > > > >.... stuff deleted ...... > > > >>Phil, Jeff, > >> > >>Yes, the present colorbar is designed for use with images, not with > >>contourf, and fixing it (or making a new one) is something I have wanted > >>to do for quite a while. I just haven't gotten to it yet. Prompted by > >>your two emails, maybe I can at least take a close look during the next > >>week to see what it would take. It might be easy--probably is. No > >>promises yet, though. > >> > >>Eric > > > > > >Thanks Eric, > > > >I also believe it should be easy to do. But it is better done by > >somebody more familiar with matplotlib and python than I. I have > >written such codes for other languages but need more practice before > >I could do it elegantly in python. > > > >As long as you are digging around in there, can I have you think about > >another couple features? > > > >1) The best colorbars in my mind have "triangles" at the endpoints > >that indicate the color for the region higher than the highest > >contour, and lower than the lowest contours. This allows one to label > >only the meaningful boundaries and not specify how much above or below > >those regions. > > > >2) I frequently need to set contour intervals (the filled region > >boundaries) to be approximately logarithmic. But I dont want to have > >these filled regions occupy a fraction of the colorbar proportional to > >their fraction of the total interval. I want each region to be equal > >area on the colorbar. > > > >An example of these features can be seen in the attached PNG figure > >that I created in Yorick with a colorbar code I wrote. I havent tried > >for beauty, but these figure are OK for for working plots. You can see > >the point for the unequal contour intervals in the difference plot at > >the bottom. > > > >For the codes I wrote this necessitated supplying arguments to the > >colorbar function like.... > > > >colorbar(levs, colors) > >where levels was an N element array, and colors was an N+1 element > >list containing color info for each filled region. > > > >Thanks for listening. > > > >Phil > > -- Phil Rasch, Climate Modeling Section, National Center for Atmospheric Research Mail --> P.O. Box 3000, Boulder CO 80307 Shipping --> 1850 Table Mesa Dr, Boulder, CO 80305 email: pj...@uc..., Web: http://www.cgd.ucar.edu/cms/pjr Phone: 303-497-1368, FAX: 303-497-1324
Phil, > > As long as you are digging around in there, can I have you think about > another couple features? OK. > > An example of these features can be seen in the attached PNG figure I think you forgot to attach the figure--I didn't see it. Your description is pretty clear, though. Eric