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
|
From: Jared W. <wah...@um...> - 2004-07-08 21:52:24
|
Hi, Anyone is welcome to work on the SVG backend. I didn't realize that John thought I was hard at work on improving it, when actually I've been happily using it. Sorry for not communicating that... I'm not going to have any time to work on it in the near future, so go nuts. I'm an amateur, so there are plenty of bugs! :) On Thu, 2004-07-08 at 16:16, John Hunter wrote: > There is an SVG backend already in matplotlib. It hasn't been > announced because it is in development by Jared Wahlstrand. Perhaps > Jared can give a status report on what needs to be done, and you might > want to help out. He might have a more recent copy in his development > tree than I do. > > Here are the issues as I understand them: > > * image support This is waiting on a save_image function in the Agg backend, so that we can link to an external PNG file. > * font support (freetype vs afm), use of font families / > font_manager Is this the issue of 'helvetica' versus 'sans serif'? > * mathtext I don't know where to begin here, but the implementation is going to look a lot like the PS backend. It would be cool to embed MathML, but good luck finding a viewer capable of reading it... :) > * some oddness when the user calls savefig with a high dpi? > Shouldn't SVG ignore the dpi setting? That's what I did in > backend_ps. You're right, it shouldn't need to know the dpi. This is an artifact from when I ported everything from the PS backend. > * There also appears to be some problem in centering the figure? I haven't experienced this. I've been using it to export to inkscape to make figures for papers and conference talks and haven't had any major problems. The code in 0.60 is the same as I've been using, with the exception of adding another case to print_figure() to switch to the SVG backend when the filename has a .svg extension. It's not complicated code, so it should be easy to understand, but let me know if you have any questions. Cheers, Jared |
From: John H. <jdh...@ac...> - 2004-07-08 20:40:32
|
>>>>> "Eric" == Eric Jonas <jo...@co...> writes: >> touch bitmap figures again. I could do entire conference >> posters in SVG! If Justin's not interested and would accept a >> patch, I might be willing to try and tackle this... Eric> By which of course I mean John, or perhaps Dr. Hunter... John works for me :-) There is an SVG backend already in matplotlib. It hasn't been announced because it is in development by Jared Wahlstrand. Perhaps Jared can give a status report on what needs to be done, and you might want to help out. He might have a more recent copy in his development tree than I do. Here are the issues as I understand them: * image support * font support (freetype vs afm), use of font families / font_manager * mathtext * some oddness when the user calls savefig with a high dpi? Shouldn't SVG ignore the dpi setting? That's what I did in backend_ps. * There also appears to be some problem in centering the figure? I've only been testing this a bit - my SVG viewer doesn't seem to work too well. JDH |
From: Eric J. <jo...@co...> - 2004-07-08 19:33:59
|
> touch bitmap figures again. I could do entire conference posters in SVG! > If Justin's not interested and would accept a patch, I might be willing > to try and tackle this... By which of course I mean John, or perhaps Dr. Hunter... ...Eric |
From: Eric J. <jo...@co...> - 2004-07-08 19:29:25
|
I second this question / request. The inkscape (inkscape.org) people are making a full-featured Illustrator-like replacement for vector illustration, and if matplotlib could generate SVGs, I'd never have to touch bitmap figures again. I could do entire conference posters in SVG! If Justin's not interested and would accept a patch, I might be willing to try and tackle this...=20 ...Eric On Thu, 2004-07-08 at 11:53, Flavio Codeco Coelho wrote: > Hi, >=20 > Is there a way to save vectorial figs? AGG is a vectorial renderer so > at least for this backend it should be possible... >=20 > Fl=C3=A1vio Code=C3=A7o Coelho, > PhD > Programa de Computa=C3=A7=C3=A3o > Cient=C3=ADfica > Funda=C3=A7=C3=A3o Oswaldo Cruz > Rio de Janeiro -- > Brasil >=20 >=20 > ______________________________________________________________________ |
From: Rein v. d. B. (UvA) <re...@sc...> - 2004-07-07 20:45:49
|
What is the prefered way to read in images in numarray/matplotlib? I know of PIL but it seems like a lot of overlap with numarray just to read an image from file. I really need to read only one type of file (say ppm) and then i can use imagemagick to convert from and to that format. Regards Rein |
From: John H. <jdh...@ac...> - 2004-07-07 16:17:46
|
>>>>> "Nino" == Nino Cucchiara <cuc...@me...> writes: Nino> I want to write some greek symbols in axes legend, for Nino> exemple nu letters or lambda. Is it possible? Thank you. You can use mathtext anywhere you can use text. Just use the standard way of specifying the string s = r'$\lambda = 5$' See http://matplotlib.sf.net/matplotlib.mathtext.html for more information on mathtext. You may be happy to hear that mathtext for postscript should be ready soon! Here is an example that uses mathtext in a legend from matplotlib.matlab import * t = arange(0.0, 2.0, 0.1) plot(t, sin(2*pi*t), '--go', t, log(1+t), '.') legend((r'$\nu$', r'$\lambda$'), 'upper right') show() |
From: Nino C. <cuc...@me...> - 2004-07-07 16:07:27
|
I want to write some greek symbols in axes legend, for exemple nu letters or lambda. Is it possible? Thank you. |
From: Eduardo Gonzalez-S. <eg...@as...> - 2004-07-07 16:03:02
|
Hi, I note that in the in the examples which display some images (e.g, image_origin.py) the displayed images hide one of the x-axis (top one if origin="upper" and bottom one otherwise). It seems like it may be necessary to apply an offset before displaying the images (I looked throughout the imshow.py code but didn't find the exact place to do it, it may be a problem of offsetting and scaling). Cheers, Eddie. |
From: John H. <jdh...@ac...> - 2004-07-07 14:35:57
|
>>>>> "Leon" == Leon Brits <lj...@fa...> writes: Leon> Hi, I wanted to compile a old matplot program with the new Leon> matplotlib v0.54.2 but I get the error: Leon> NameError: name 'get_current_fig_manager' is not Leon> defined Leon> the line of code is: Leon> g_canvas = get_current_fig_manager().canvas Leon> This use to work with matplotlib v0.53. I use pyGtk v2.0. Leon> Start code: import pygtk pygtk.require('2.0') import gtk get_current_fig_manager is definitely defined in matplotlib.matlab in version 0.54.2. You need to make sure you do from matplotlib.matlab import get_current_fig_manager before the call to g_canvas = get_current_fig_manager().canvas and you should have no trouble. If you are still having trouble, you'll need to post a complete code example. JDH |
From: Leon B. <lj...@fa...> - 2004-07-07 14:27:00
|
Hi, I wanted to compile a old matplot program with the new matplotlib v0.54.2 but I get the error: NameError: name 'get_current_fig_manager' is not defined the line of code is: g_canvas = get_current_fig_manager().canvas This use to work with matplotlib v0.53. I use pyGtk v2.0. Start code: import pygtk pygtk.require('2.0') import gtk Please help! Leon |
From: John H. <jdh...@ac...> - 2004-07-07 12:37:18
|
>>>>> "Rein" == Rein van den Boomgaard (UvA) <re...@sc...> writes: Rein> Dear All, as i'm new to this list let me first introduce Rein> myself before posting a question. Rein> I'm working in the field of image processing and computer Rein> vision for a long time now and i am a long time matlab Rein> user. Up to now i didn't like any of the matlab clones but Rein> it seems that numarray+matplotlib might be a winner here. I've worked some with octave in the past and found it unsatisfying (though a very impressive one man feat!), in part because I wasn't happy with gnuplot, which it used for graphics at the time (and perhaps still does), and in part because it really aimed at being a matlab clone but very few of my m-files ran w/o alteration. matplotlib tries to solve the first problem by producing better graphics than matlab and the second by not trying to be a drop in replacement for matlab. I'm curious about your experiences, what you tried, and what you found lacking. Rein> I started using numarray+matplotlib by coding the Gaussian Rein> derivative convolutions. Calculating a derivative (by Rein> convolving with the derivative of the Gaussian function) Rein> will lead to an image(array) with both positive and negative Rein> values. Although imshow should deal with that (as far as i Rein> understand the code: beware i am a Python beginner) the Rein> display turns black for all derivatives (except for the Rein> 'zero order' derivative of course). Rein> What is going on? Is it me (probably) or is it imshow? In matplotlib-0.54.2, the images must be normalized to the unit interval before color mapping or plotting. For example, in examples/image_demo2.py, notice that I do A *= 1.0/max(A) Your images are black, I think, because you haven't normalized them. I've done a lot of work on matplotlib images since 0.54.2, with new fixes and features. Normalization is handled by default in the 0.60 release candidate. When I run your (very nice) example with my development version of matplotlib, it produces this image for figure 2 ( I added "show" at the end of your script, but it was otherwise unaltered) http://nitace.bsd.uchicago.edu:8080/files/share/fig2.png which looks right to me. I'm always interested in nice screenshots for the web site, so please consider donating this example! I've uploaded the 0.60d release candidate to http://nitace.bsd.uchicago.edu:8080/files/share/matplotlib-0.60d.tar.gz Can you compile matplotlib yourself or are you using a binary distribution? If you can try the development version linked above, that would solve two problems: you'll get enhanced image support and I'll get a tester for my image changes. If you do so, see the updated help for the image related commands: imshow, figimage, clim, jet, gray and the new matplotlibrc parameters image.* In the figure 2 image from your script, I notice that there the titles overlap the images above. Here is how you can control this (requires matplotlib 0.60d) # pass in these keywor args to title. The y location is the y # text coordinate in axes coords (0,0 is lower left, 1,1 is # upper right). You can use **somedict in place of keyword # args in python offsets = {'y':1.0, 'fontsize':10} _gDplot(1,0,0) title(r'$G$', **offsets) _gDplot(5,1,0) title(r'$G_x$', **offsets) _gDplot(6,0,1) title(r'$G_y$', **offsets) _gDplot(9,2,0) title(r'$G_{xx}$', **offsets) _gDplot(10,1,1) title(r'$G_{xy}$', **offsets) _gDplot(11,0,2) title(r'$G_{yy}$', **offsets) _gDplot(13,3,0) title(r'$G_{xxx}$', **offsets) _gDplot(14,2,1) title(r'$G_{xxy}$', **offsets) _gDplot(15,1,2) title(r'$G_{xyy}$', **offsets) _gDplot(16,0,3) title(r'$G_{yyy}$', **offsets) Cheers, JDH |
From: Rein v. d. B. (UvA) <re...@sc...> - 2004-07-07 07:45:08
|
Dear All, as i'm new to this list let me first introduce myself before posting a question. I'm working in the field of image processing and computer vision for a long time now and i am a long time matlab user. Up to now i didn't like any of the matlab clones but it seems that numarray+matplotlib might be a winner here. I started using numarray+matplotlib by coding the Gaussian derivative convolutions. Calculating a derivative (by convolving with the derivative of the Gaussian function) will lead to an image(array) with both positive and negative values. Although imshow should deal with that (as far as i understand the code: beware i am a Python beginner) the display turns black for all derivatives (except for the 'zero order' derivative of course). What is going on? Is it me (probably) or is it imshow? Attached you find the code. Regards Rein van den Boomgaard University of Amsterdam The Netherlands # ========================================================== # Gaussian Derivatives # # Copyright (c) Rein van den Boomgaard # Vision Consultancy & Training # re...@vi... # # ========================================================== import types from numarray import * from numarray.nd_image import * def gD( image, scales, orders, nscales=4, mode='reflect' ): scales = _normalize_sequence(scales,image) orders = _normalize_sequence(orders,image) result = image.copy() ndims = len( image.shape ) for i in range(0,ndims): N = ceil(scales[i]*nscales) x = arange( -N, N ) w = GaussianDerivativeFunction( x, scales[i], orders[i] ) result = convolve1d( result, w, i, mode = mode ) return( result ) def HermiteH( n, x ): """ Hermite Poynomial """ if n==0: return 0*x + 1 elif n==1: return 2*x else: return 2*x*HermiteH( n-1, x ) - 2*(n-1)*HermiteH(n-2,x) def GaussianDerivativeFunction( x, scale, order ): scale = float(scale) g = 1.0 / ( scale * sqrt(2*pi) ) * exp( - x**2 / (2*scale**2) ) return (-1.0 / (scale*sqrt(2.0)))**order * \ HermiteH( order, x / (scale * sqrt(2)) ) * g # the _normalize_sequence function is copied from numarray # because i cant import it...??? def _normalize_sequence(input, array): """If input is a scalar, create a sequence of length equal to the rank of array by duplicating the input. If input is a sequence, check if its length is equalt to the lenght of array. """ if isinstance(array, ArrayType): rank = len(array.shape) else: rank = 1 if (isinstance(input, (types.IntType, types.LongType, types.FloatType))): normalized = [input] * rank else: if isinstance(input, numarray.numarraycore.NumArray): normalized = list(input) else: normalized = input if len(normalized) != rank: error = "sequence argument must have length equal to input rank" raise RuntimeError, error return normalized if __name__ == "__main__": from matplotlib import use, interactive from matplotlib.matlab import * PLOT_1D_GAUSS = 1 PLOT_GAUSSIAN_DERIVATIVES = 1 PLOT_TIMING = 1 if PLOT_1D_GAUSS: # testing the Gaussiand Derivatives x=arange(-5,5,.01) figure(1) clf() plot(x,GaussianDerivativeFunction(x,1,0)) plot(x,GaussianDerivativeFunction(x,1,1)) plot(x,GaussianDerivativeFunction(x,1,2)) plot(x,GaussianDerivativeFunction(x,1,3)) plot(x,GaussianDerivativeFunction(x,1,4)) xlabel(r'$x$') ylabel(r'$G_n(x)$') title('Gaussian Derivatives') if PLOT_GAUSSIAN_DERIVATIVES: scale = 9 def _gDplot(n,ox,oy): subplot(4,4,n) axis('off') imshow( gD(a,scale,(ox,oy)) ) a = zeros( (64,64) ) * 1.0 a[32,32] = 1.0 figure(2) axis('off') title('Gaussian Derivatives') _gDplot(1,0,0) title(r'$G$') _gDplot(5,1,0) title(r'$G_x$') _gDplot(6,0,1) title(r'$G_y$') _gDplot(9,2,0) title(r'$G_{xx}$') _gDplot(10,1,1) title(r'$G_{xy}$') _gDplot(11,0,2) title(r'$G_{yy}$') _gDplot(13,3,0) title(r'$G_{xxx}$') _gDplot(14,2,1) title(r'$G_{xxy}$') _gDplot(15,1,2) title(r'$G_{xyy}$') _gDplot(16,0,3) title(r'$G_{yyy}$') if PLOT_TIMING: from timeit import Timer niter = 5 def time_gD(scale): t = Timer( "b=gD(a,%d, 0)" % scale, "from __main__ import gD,a" ) timing = t.timeit(number=niter ) print( timing/niter ) return( timing/niter ) a = zeros( (256,256) ) * 1.0 a[128,128] = 1.0 figure(3) scales = array([1,3,5,7,9,11,15,19, 25,31,41,51]) print(type(scales)) plot( scales, map( time_gD, scales ), 'x' ) xlabel('Scale (px)') ylabel('Time (s)') title('Gaussian Convolution Timings') |
From: John H. <jdh...@ac...> - 2004-07-06 20:28:50
|
>>>>> "danny" == danny shevitz <dan...@ya...> writes: danny> I tried to implement a simple .matplotlibrc file. The danny> contents are: #figure.figsize:12,9 lines.linewidth:1.0 danny> I get the following traceback: You are trying to load backend gtk and don't have it installed. You should not implement your own rc file, but rather edit the one in C:\Python23\share\matplotlib\.matplotlibrc (or wherever python is installed). This is discussed in the rc file header, also found at http://matplotlib.sourceforge.net/.matplotlibrc. Once you have edited it, move it to another directory, your HOME dir. On win32, you will need to set the HOME environment variable to point to this dir. If you edit it in place, it will work, but will be overwritten next time you install matplotlib. My best guess is you mangled the rc file and your backend is being set to backend_gtk or backend_gtkagg. If indeed you want gtk or gtkagg, my second guess is that you haven't properly installed the pygtk prereqs. JDH |
From: John H. <jdh...@ac...> - 2004-07-06 20:16:24
|
>>>>> "danny" == danny shevitz <dan...@ya...> writes: danny> John, First things first. Thanks for all your help. I danny> wasn't aware of the figlegend command (even though it is danny> clearly in the documentation). I can do what I want with danny> figlegends althought it takes some fiddling to get the danny> positions right. I have to use explicit coordinates because danny> the legends are referenced to the figure not the axes so danny> the boxes don't default to lying inside the graphs and danny> cross over the axes boundaries. In addition the legends danny> are in separate boxes with figlegend, which is acceptable, danny> but not necessarily optimal. I did run into another problem danny> using figlegend, namely that I can't get a handle to the danny> legend text so I'm not able to set the fontsize. I'd danny> appreciate it if you could illuminate me with how to set danny> fontsize in a figlegend. The way to come to this knowledge is: 1) look at the return value of the figlegend command - in this case the docs don't say what they are, but you can always print type(ret) or simply print(ret) where ret is the return value of figlegend to get an idea. I've updated the docs to state A matplotlib.legend.Legend instance is returned 2) Go to the class documentation, either by doing help(ret) from the python shell or going to http://matplotlib.sourceforge.net/classdocs.html and clicking on the legend link http://matplotlib.sourceforge.net/matplotlib.legend.html. 3) Peruse the docs for Legend: in this case you'll see get_frame(self) return the Rectangle instance used to frame the legend get_lines(self) return a list of lines.Line2D instances in the legend get_patches(self) return a list of patch instances in the legend get_texts(self) return a list of text.Text instance in the legend So you can do leg = figlegend(blah, blah) texts = leg.get_texts() # get a sequence of legend texts lines = leg.get_lines() # get a sequence of legend lines patches = leg.get_patches() # get a sequence of legend patches I don't mind you asking - I'm just trying to give you some pointers for future reference. danny> In addition the legends are in separate boxes with danny> figlegend, which is acceptable, but not necessarily danny> optimal. Not sure exactly what you mean. You can put them in the same box by controlling the list of handles and text strings you pass figlegend, or you can turn the legend frames off.... leg.draw_frame(False) danny> So, on to other things. I cooked up an example that shows danny> what I was originally trying to do. I have two routines, danny> doPlots1 and doPlots2, that do exactly the same thing. The danny> only difference is in the default arguments, which I don't danny> actually set, I just use the default. Figure 1 has the danny> effect I was looking for, although I for the life of me danny> don't understand why the two routines give difference danny> answers, or for that matter, why figure 1 works the way it danny> does. danny> In any case. Figure 1 is what I was shooting for. If you danny> want to post some reliable code that does this, I'd danny> appreciate it. See my comments below: from matplotlib.matlab import * import Numeric as N # It is bad form to import Numeric or numarray after importing # matplotlib. This is what numerix is for. You should use import # matplotlib.numerix as N if you want to namespace Numeric. The # command from matplotlib.matlab import * already imports all the # numerix symbols. def doPlots1(const,color,legendList=[],legendTextList=[]): # In passing the empty list as a default argument, you are sharing the # list between function calls. This explains why doPlots1 *works* and # doPlots2 doesn't. This is a well know gotcha. The default # arguments are evaluated *only once* at module load time, so # legendList and legendText list are *the same* lists between function # calls y1=N.arange(0., 10, 1)+ const x = arange(len(y1)) ln1 = plot(x,y1,color+'+-') legendList.append(ln1) # ln1 is a length 1 list, not a line! You should do (note the comma) # # ln1, = plot(x,y1,color+'+-') # # to unpack the length one sequence. You only get a way with it # because legend flattens the list for you legendTextList.append('line1') y2 = y1 + 1 ln2 = plot(x,y2,color+'^-') legendList.append(ln2) legendTextList.append('line2') legend(legendList,legendTextList) show() # You should only call "show" once per script. I repeat, you should # only call "show" once per script. If you want to force a redraw use # get_current_fig_manager().canvas.draw(). The next matplotlib # release defines a "draw" function for this purpose. def doPlots2(const,color): legendList=[] legendTextList=[] # Here legendList and legendTextList are local to the function, not # shared between function calls y1=N.arange(0., 10, 1)+ const x = arange(len(y1)) ln1 = plot(x,y1,color+'+-') legendList.append(ln1) legendTextList.append('line1') y2 = y1 + 1 ln2 = plot(x,y2,color+'^-') legendList.append(ln2) legendTextList.append('line2') legend(legendList,legendTextList) show() figure(1) doPlots1(0,'r') doPlots1(5,'b') figure(2) doPlots2(0,'r') doPlots2(5,'b') danny> In any case. Figure 1 is what I was shooting for. If you danny> want to post some reliable code that does this, I'd danny> appreciate it. While I don't know exactly what you are shooting for, the code below replicates what Figure 1 looks like after your second call to doPlots1. from matplotlib.matlab import * handles = [] labels = [] for const, color in ( (0, 'r'), (5, 'b') ): y1 = arange(0., 10, 1)+ const x = arange(len(y1)) y2 = y1 + 1 lines = plot(x, y1, color+'+-', x, y2, color+'^-' ) handles.extend(lines) labels.extend(('line1', 'line2')) legend(handles, labels, 'upper left') show() Here's another approach using the label keyword arg from matplotlib.matlab import * handles = [] labels = [] for const, color in ( (0, 'r'), (5, 'b') ): y1 = arange(0., 10, 1)+ const x = arange(len(y1)) y2 = y1 + 1 plot(x, y1, color+'+-', label='line1') plot(x, y2, color+'^-', label='line2' ) legend() show() Hope this helps! JDH |
From: danny s. <dan...@ya...> - 2004-07-06 20:08:43
|
I tried to implement a simple .matplotlibrc file. The contents are: #figure.figsize:12,9 lines.linewidth:1.0 I get the following traceback: No module named pygtk matplotlib requires pygtk-1.99.16 or greater -- trying anyway. Please hold on Traceback (most recent call last): File "E:\projects\GeoFrag\sampleSimulations\cylinderTarget\cylinderTarget.py", line 10, in ? from nbe.simulation import Simulation File "E:\projects\geoFrag\nbe\simulation\__init__.py", line 1, in ? from simulation import Simulation File "E:\projects\geoFrag\nbe\simulation\simulation.py", line 1, in ? from nbe.treeFragments import cylinderFragmentationFactory File "E:\projects\geoFrag\nbe\treeFragments\__init__.py", line 10, in ? from cylinderFragmentation import CylinderFragmentation File "E:\projects\geoFrag\nbe\treeFragments\cylinderFragmentation.py", line 7, in ? from nbe.fragments import fragmentFactory File "E:\projects\geoFrag\nbe\fragments\__init__.py", line 8, in ? from fragmentLists import FragmentLists File "E:\projects\geoFrag\nbe\fragments\fragmentLists.py", line 9, in ? from matplotlib.matlab import * File "D:\ENTHOU~1\Lib\site-packages\matplotlib\matlab.py", line 134, in ? from backends import new_figure_manager, error_msg, \ File "D:\ENTHOU~1\Lib\site-packages\matplotlib\backends\__init__.py", line 16, in ? from backend_gtk import \ File "D:\ENTHOU~1\Lib\site-packages\matplotlib\backends\backend_gtk.py", line 13, in ? import gobject ImportError: No module named gobject Any help would be appreciated. thanks, Danny __________________________________ Do you Yahoo!? Yahoo! Mail is new and improved - Check it out! http://promotions.yahoo.com/new_mail |
From: danny s. <dan...@ya...> - 2004-07-06 18:09:15
|
John, First things first. Thanks for all your help. I wasn't aware of the figlegend command (even though it is clearly in the documentation). I can do what I want with figlegends althought it takes some fiddling to get the positions right. I have to use explicit coordinates because the legends are referenced to the figure not the axes so the boxes don't default to lying inside the graphs and cross over the axes boundaries. In addition the legends are in separate boxes with figlegend, which is acceptable, but not necessarily optimal. I did run into another problem using figlegend, namely that I can't get a handle to the legend text so I'm not able to set the fontsize. I'd appreciate it if you could illuminate me with how to set fontsize in a figlegend. So, on to other things. I cooked up an example that shows what I was originally trying to do. I have two routines, doPlots1 and doPlots2, that do exactly the same thing. The only difference is in the default arguments, which I don't actually set, I just use the default. Figure 1 has the effect I was looking for, although I for the life of me don't understand why the two routines give difference answers, or for that matter, why figure 1 works the way it does. In any case. Figure 1 is what I was shooting for. If you want to post some reliable code that does this, I'd appreciate it. Danny # %< ----------------------------------------------------- from matplotlib.matlab import * import Numeric as N def doPlots1(const,color,legendList=[],legendTextList=[]): y1=N.arange(0., 10, 1)+ const x = arange(len(y1)) ln1 = plot(x,y1,color+'+-') legendList.append(ln1) legendTextList.append('line1') y2 = y1 + 1 ln2 = plot(x,y2,color+'^-') legendList.append(ln2) legendTextList.append('line2') legend(legendList,legendTextList) show() def doPlots2(const,color): legendList=[] legendTextList=[] y1=N.arange(0., 10, 1)+ const x = arange(len(y1)) ln1 = plot(x,y1,color+'+-') legendList.append(ln1) legendTextList.append('line1') y2 = y1 + 1 ln2 = plot(x,y2,color+'^-') legendList.append(ln2) legendTextList.append('line2') legend(legendList,legendTextList) show() figure(1) doPlots1(0,'r') doPlots1(5,'b') figure(2) doPlots2(0,'r') doPlots2(5,'b') __________________________________ Do you Yahoo!? Read only the mail you want - Yahoo! Mail SpamGuard. http://promotions.yahoo.com/new_mail |
From: Darren D. <dd...@co...> - 2004-07-06 03:53:58
|
Hello, Just wanted to report an error message. file "...\dynamic_demo_wx.py" line 109, in onTimer self.lines[0].setdata(self.ind,self.X[:,self.count]) IndexError: Index out of range I am running WinXP, Matplotlib 0.54.2, wx 2.4.2.4, and started the example from windows explorer. This error message repeats for some time, then the example will run for a while, then the error message again, back and forth. -- Darren S. Dale dd...@co... PGP public key available |
From: Jim B. <jb...@se...> - 2004-07-04 02:14:44
|
On Sat, 3 Jul 2004, John Hunter wrote: > Make that > > l = Legend(self, handles, labels, loc) > > Should work - let me know if you have any more troubles. > Thanks John...i did actually try that before i sent my previous email...sorry that the error messages were buried under a bunch of other stuff. I did have a problem after i added the self. Here is what i get (my hacked up legendDemp.py follows the error messages): floyd:/home/jbenson/python>python legendDemo.py Traceback (most recent call last): File "legendDemo.py", line 30, in ? 'upper left') File "/usr/local/lib/python2.3/site-packages/matplotlib/figure.py", line 179, in legend l = Legend(self, handles, labels, loc) File "/usr/local/lib/python2.3/site-packages/matplotlib/legend.py", line 107, in __init__ self._texts = self._get_texts(labels, textleft, upper) File "/usr/local/lib/python2.3/site-packages/matplotlib/legend.py", line 215, in _get_texts HEIGHT = self._approx_text_height() File "/usr/local/lib/python2.3/site-packages/matplotlib/legend.py", line 126, in _approx_text_height return self.FONTSIZE/72.0*self.figure.dpi.get()/self.parent.bbox.height() AttributeError: 'NoneType' object has no attribute 'dpi' floyd:/home/jbenson/python> # legendDemo.py from matplotlib.matlab import * a = arange(0,3,.02) b = arange(0,3,.02) c=exp(a) d=c.tolist() d.reverse() d = array(d) ax = subplot(111) lines = plot(a,c,'k--',a,d,'k:',a,c+d,'k') bNotHacked = False if bNotHacked: legend(('Model length', 'Data length', 'Total message length'), 'upper left') else: fig = gcf() line1 = lines[0] line2 = lines[1] line3 = lines[2] fig.legend((line1, line2, line3), ('Model length', 'Data length', 'Total message length'), 'upper left') ax.set_ylim([-1,20]) ax.grid(0) xlabel('Model complexity --->') ylabel('Message length --->') title('Minimum Message Length') set(gca(), 'yticklabels', []) set(gca(), 'xticklabels', []) savefig('legend_demo_small', dpi=60) savefig('legend_demo_large', dpi=120) show() ~ Jim |
From: John H. <jdh...@ac...> - 2004-07-03 21:48:20
|
>>>>> "danny" == danny shevitz <dan...@ya...> writes: danny> I have a main routine that calls a subroutine twice. In the danny> subroutine, a plot is drawn. If the active figure is the danny> same, both plots are shown at the same time in the same danny> figure. The problem is that both plots have legends, and it danny> appears as if a figure can only have one legend, so one of danny> the legends is overwritten (the first). The question is, danny> what is the best way to get the legends to be appended so danny> that all graph lines have legends. I don't really understand what your problem is, but I have a few comments. For "figure legends" you want to use the figlegend command, as opposed to axes legends which use the legend command. You can have an arbitrary number of figure legends on the same figure. However, there is a bug in the figure legend code in matplotlib-0.54.2 that Jim Benson discovered. In matplotlib/figure.py, you need to replace the line that reads l = Legend(handles, labels, loc) with l = Legend(self, handles, labels, loc) If you have more troubles, please post some code as that might help me understand what you are trying to do. JDH danny> __________________________________ Do you Yahoo!? Yahoo! danny> Mail is new and improved - Check it out! danny> http://promotions.yahoo.com/new_mail danny> ------------------------------------------------------- danny> This SF.Net email sponsored by Black Hat Briefings & danny> Training. Attend Black Hat Briefings & Training, Las Vegas danny> July 24-29 - digital self defense, top technical experts, danny> no vendor pitches, unmatched networking danny> opportunities. Visit www.blackhat.com danny> _______________________________________________ danny> Matplotlib-users mailing list danny> Mat...@li... danny> https://lists.sourceforge.net/lists/listinfo/matplotlib-users |
From: John H. <jdh...@ac...> - 2004-07-03 21:42:00
|
>>>>> "Jim" == Jim Benson <jb...@se...> writes: Jim> Any more hints? Make that l = Legend(self, handles, labels, loc) Should work - let me know if you have any more troubles. JDH |
From: danny s. <dan...@ya...> - 2004-07-03 13:43:00
|
I have a main routine that calls a subroutine twice. In the subroutine, a plot is drawn. If the active figure is the same, both plots are shown at the same time in the same figure. The problem is that both plots have legends, and it appears as if a figure can only have one legend, so one of the legends is overwritten (the first). The question is, what is the best way to get the legends to be appended so that all graph lines have legends. Thanks, Danny __________________________________ Do you Yahoo!? Yahoo! Mail is new and improved - Check it out! http://promotions.yahoo.com/new_mail |
From: Trevor P. <tr...@ir...> - 2004-07-03 00:13:34
|
>-----Original Message----- >From: mat...@li... >[mailto:mat...@li...]On Behalf Of John >Hunter > [...] >For independent reasons, I already did away with numeric limits in >_transforms.cpp a couple of weeks ago and these changes are in CVS. >If one of you would be willing to try and compile CVS against gcc >2.95.2, I would be interested to hear how it works, I just checked out CVS: _transforms.cpp compiles fine. There were only = 2 other minor things. In _backend_agg.cpp, line 880 has a typo: <<< if (origin!=3D"lower" and origin!=3D"upper") >>> if (origin!=3D"lower" && origin!=3D"upper") Also, for FreeBSD, in setupext.py you need an additional entry in the = basedir dict like: 'darwin' : [os.getenv('MPLIB_BASE') or '/usr/local', '/usr', '/sw'], + 'freebsd4' : [os.getenv('MBLIB_BASE') or '/usr/local', '/usr'], 'sunos5' : [os.getenv('MPLIB_BASE') or '/usr/local',], Trevor |
From: John H. <jdh...@ac...> - 2004-07-02 22:06:47
|
>>>>> "Sebastian" == Sebastian Haase <ha...@ms...> writes: Sebastian> and didn't have any problem. I running debian, where Sebastian> 2.95 is still the "standard". Maybe this could be Sebastian> changed in CVS - just for one more year or so ;-) For independent reasons, I already did away with numeric limits in _transforms.cpp a couple of weeks ago and these changes are in CVS. If one of you would be willing to try and compile CVS against gcc 2.95.2, I would be interested to hear how it works, and will be happy to make any required changes. Thanks, JDH |
From: Todd M. <jm...@st...> - 2004-07-02 22:03:36
|
I just released numarray-1.0 and wanted to give you a heads up in case you miss it in the release notes: numarray-1.0 needs a new windows binary for matplotlib which is now up on source forge here: http://prdownloads.sourceforge.net/matplotlib/matplotlib-0.54.2-numarray1.0.win32-py2.3.exe?download Likewise, UNIX and Mac users that want to use numarray-1.0 need to reinstall matplotlib (make sure you delete the matplotlib build directory). I attached the numarray-1.0 release notes in case you're interested... Regards, Todd |
From: John H. <jdh...@ac...> - 2004-07-02 22:02:38
|
>>>>> "danny" == danny shevitz <dan...@ya...> writes: danny> another newbie question. BTW I am learning where to find danny> documentation. Most of this stuff isn't in the danny> documentation per se, but in the class library, but please danny> bare with me. One place to look is http://matplotlib.sf.net/matlab_interface.html and the help for the plotting commands listed there. If this case, you want to see the help for the figure command: figure(num = 1, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k') Create a new figure and return a handle to it If figure(num) already exists, make it active and return the handle to it. figure(1) figsize - width in height x inches; defaults to rc figure.figsize dpi - resolution; defaults to rc figure.dpi facecolor - the background color; defaults to rc figure.facecolor edgecolor - the border color; defaults to rc figure.edgecolor One day, hopefully in the not too distant future, I'll have a user's guide. JDH danny> I am aving big troubles setting figure sizes. danny> In a plot command. I have tried plot(...,figsize=(6,8)) and danny> plot(...,figsize_inches=(6,8) set(gcf(),'figsize',(6,8)) danny> set(gcf(),'figsize_inches',(6,8)) danny> none work for me. OK I'm stumped, what's the right way. danny> thanks, Danny danny> __________________________________ Do you Yahoo!? Yahoo! danny> Mail - 50x more storage than other providers! danny> http://promotions.yahoo.com/new_mail danny> ------------------------------------------------------- danny> This SF.Net email sponsored by Black Hat Briefings & danny> Training. Attend Black Hat Briefings & Training, Las Vegas danny> July 24-29 - digital self defense, top technical experts, danny> no vendor pitches, unmatched networking danny> opportunities. Visit www.blackhat.com danny> _______________________________________________ danny> Matplotlib-users mailing list danny> Mat...@li... danny> https://lists.sourceforge.net/lists/listinfo/matplotlib-users |