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: Steve C. <ste...@ya...> - 2004-01-18 05:32:05
|
When using the matlab interface (with the default GTK+ backend), matlab.title() sets the current axis title, but can you set the window title - it defaults to "Figure 1"? -- Steve |
From: John H. <jdh...@ac...> - 2004-01-18 00:04:38
|
>>>>> "Yann" == Yann Le Du <yan...@no...> writes: Yann> Hello, I've just discovered matplotlib-0.40 (with linux), Yann> and going through the tutorial, I get an error (pasted at Yann> the end of email) when using dashes in the "Multiple lines Yann> with one plot command" example. This script runs on my system from matplotlib.matlab import * t = array([0,1,2,3], Float) plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^') show() /usr/lib/python2.3/site-packages/matplotlib/backends/backend_gtk.py in set_dashes(self, dash_offset, dash_list) 175 dpi = self.drawable.dpi.get() 176 if dash_list is not None: --> 177 dashes = dash_list*dpi/72.0 178 self.gdkGC.line_style = gdk.LINE_ON_OFF_DASH 179 dl = [int(math.ceil(val)) for val in dash_list] TypeError: unsupported operand type(s) for /: 'array' and 'float' This looks a lot like a known bug with from __future__ import division and use of the division / operator with Numeric arrays. For that reason I usually try and write dashes = dpi/72.0*dash_list or dashes = dash_list*(dpi/72.0) Apparently I forgot this time. Try the above and see if they help. Please let me know. John Hunter |
From: Yann Le Du <yan...@no...> - 2004-01-17 21:58:24
|
Hello, Yet another question : has anyone managed to make an interactive matplotlib session from inside the IPython shell ? Y |
From: Yann Le Du <yan...@no...> - 2004-01-17 19:21:02
|
Hello, I've just discovered matplotlib-0.40 (with linux), and going through the tutorial, I get an error (pasted at the end of email) when using dashes in the "Multiple lines with one plot command" example. If instead of putting : plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^') I put : plot(t, t, 'r-', t, t**2, 'bs', t, t**3, 'g^') it works fine. Maybe someone can help ? Y ======== /usr/lib/python2.3/site-packages/matplotlib/backends/backend_gtk.py in set_dashes(self, dash_offset, dash_list) 175 dpi = self.drawable.dpi.get() 176 if dash_list is not None: --> 177 dashes = dash_list*dpi/72.0 178 self.gdkGC.line_style = gdk.LINE_ON_OFF_DASH 179 dl = [int(math.ceil(val)) for val in dash_list] TypeError: unsupported operand type(s) for /: 'array' and 'float' |
From: John H. <jdh...@ac...> - 2004-01-16 04:10:07
|
>>>>> "matthew" == matthew arnison <ma...@ca...> writes: matthew> Hi, Currently matplotlib outputs postscript graphs which matthew> have no bounding box set. This means that by default they matthew> fill the whole page. If you want to include several plots matthew> in the same page in a document (because you generated matthew> them separately, or because the subplot output is a bit matthew> messy) then you have to manually crop each postscript matthew> graph. (Atleast that is my experience with LaTeX via lyx, matthew> Word is presumably similar.) Hi Matthew, thanks for keeping the flame under my butt re EPS. This is something that has come up a number of times and isn't hard to implement. I just haven't taken the time to do it. Work has kept me pretty busy the last two weeks. There was a discussion on this mailing list some time ago where several workarounds were discussed - sourceforge archives are currently down or I'd post a link. I use the following: PS can be included directly in LaTeX and sized \usepackage[dvips]{graphics} \newcommand{\dofig}[2] {\center{\scalebox{#1}{\includegraphics*{#2}}}} \begin{figure}[t] \dofig{0.5}{somefile.ps} \caption{\footnotesize Insert your figure caption here} \label{fig:figref} \end{figure} 0.5 is a scaling arg. Don't know how to do it in lyx though. Others use ps2eps or ps2epsi. But I can get the eps thing done with little effort -- I already know the bounding box, it's just a matter of detecting the extension and adding one line of code to the PS output. Stay tuned! John Hunter |
From: matthew a. <ma...@ca...> - 2004-01-15 23:53:57
|
Hi, Currently matplotlib outputs postscript graphs which have no bounding box set. This means that by default they fill the whole page. If you want to include several plots in the same page in a document (because you generated them separately, or because the subplot output is a bit messy) then you have to manually crop each postscript graph. (Atleast that is my experience with LaTeX via lyx, Word is presumably similar.) I tried a few tools to fix this. I finally found bbfig: http://rpmfind.net/linux/RPM/contrib/noarch/noarch/bbfig-1.14-2.noarch.html which correctly calculates the bounding box for an arbitrary postscript file. As hinted by this page: http://www.mcs.kent.edu/mcsinfo/compsys/faq/cmds/bbfig.html you can do bbfig yourfile.ps | ghostview - to see the bounding box visually. But /usr/doc/bbfig-1.14/README.RPM says you can also do bbfig myfigure.ps | gs -q -dNODISPLAY - then add it output to the top of the ps file to have it be correctly cropped. bbfig is coded in postscript! But I thought you might be interested in case you want to fix matplotlib so that it outputs correctly bounded (e)ps files by default. Cheers, Matthew. |
From: Steve C. <ste...@ya...> - 2004-01-10 06:58:26
|
Whenever I run 'cvs update' I always get a long list of '?' status files like ? docs/matplotlib.afm.html ? docs/matplotlib.artist.html ... ? htdocs/backends.html ? htdocs/classdocs.html ... ? htdocs/screenshots/axes_demo_large.png ? htdocs/screenshots/axes_demo_small.png ... ? matplotlib/__init__.pyc ? matplotlib/_matlab_helpers.pyc ... CVS uses the '?' label for files in my working directory which do not correspond to anything in the source repository. These files, for example the .pyc files, are not source files, they are generated from the source files by the build process. CVS by default knows that it should ignore files such as *.o and *.exe. It can be told to ignore additional files in a directory by creating the file .cvsignore in the relevant directory and listing the files to ignore (either by name or using wildcards). So to remove the warnings listed above, you could set up the files docs/.cvsignore: *.html htdocs/.cvsignore: *.html htdocs/screenshots/.cvsignore: *.png matplotlib/.cvsignore: *.pyc -- Steve |
From: John H. <jdh...@ac...> - 2004-01-09 14:54:15
|
>>>>> "Birger" == <bir...@te...> writes: Birger> Hi. I stumbled over your matplotlib module, and it's Birger> exactly what I have been looking for being a long time Birger> matlab user. Birger> Since sourceforge is down, I have a question which I hope Birger> you'll answer, but I fully understand if you don't have Birger> the time No problem, when it comes back up you may want to join the mailing list Birger> (using GTK, latest version on winXP) creating a simple Birger> script like this: Birger> from matplotlib.matlab import * vector = [1, 2, 3, 4, 5, Birger> 3, 2, 1] plot(vec) savefig(r'c:\test.jpg') Birger> This does not save the file, but calling 'show()' will Birger> show the file and then save the file. Shouldn't it be Birger> possible to save a fig without calling show? I have plans Birger> to use this in a cgi application, and hope I can do it Birger> this way. There are three ways to do this currently. Are you planning on running your web server under windows or linux or other? The platform you are on will determine which route is easiest. 1) On Linux/UNIX, Run matplotlib in a X virtual frame buffer (Xvfb) which is a virtual X windows. There you can save the figures in the GTK backend with no window ever popping up. I'm going to do some more investigating to see if pygtk is capable of drawing with no window in the absence of Xvfb (in which the window is simulated). I am using matplotlib in a web application server so I can provide some example code. 2) Alternatively, you can use the GD backend, which is designed to do offline drawing. I haven't succeeded in getting gdmodule compiled for windows, but I know it's doable. I just haven't pressed the issue because so far noone has wanted it. 3) Finally, a hack solution which would work under windows is to use the ps backend to generate the plots (this requires only Numeric and produces high quality output) and use another module like PIL to convert them to PNG or JPG to serve over the web. This is in my opinion the least desirable solution, but one you may want to consider if you must work on win32 and can't get GD running. Birger> If I were better at programming, I would have written a Birger> PIL module for matplotlib, since matplotlib is a module I Birger> will use extensively in the future I would like to have a PIL and python Tk backend. So when you get you're programming chops up to speed, definitely think of us! John Hunter |
From: John H. <jdh...@ac...> - 2004-01-08 23:23:16
|
>>>>> "matthew" == matthew arnison <ma...@ca...> writes: matthew> I think you need to use threads. I'm only just learning matthew> how to use them myself. But have a look at: Have you looked at examples/interactive.py and examples/interactive2.py? JDH |
From: matthew a. <ma...@ca...> - 2004-01-08 23:14:55
|
I think you need to use threads. I'm only just learning how to use them myself. But have a look at: http://www.async.com.br/faq/pygtk/index.py?req=show&file=faq20.001.htp and play with something like: #!/usr/bin/python # Trying to figure out how to use threads. # This doesn't work, but I feel it is close. import time import thread from matplotlib.matlab import * import gtk gtk.threads_init() # gtk.mainloop() figure(1) plot([1,2,3,4,5,2]) print "figure 1" gtk.threads_enter() thread.start_new_thread(show, ()) gtk.threads_leave() time.sleep(2) figure(2) plot([1,2,3,4,5,2,10]) print "figure 2" gtk.threads_enter() thread.start_new_thread(show, ()) gtk.threads_leave() time.sleep(2) ... Cheers, Matthew. On Thu, 8 Jan 2004, Flavio C. Coelho wrote: > Hi, > > I have a problem with matplotlib: > > My program is an interective simulator which needs to re-plot results > multiple times at the users request. > > But after I issue show() I cannot generate other plots. > > what can I do to circumvent this? > > thanks in advance, > > Flávio Codeço Coelho, > PhD > Programa de Computação > Científica > Fundação Oswaldo Cruz > Rio de Janeiro -- Brasil > > > ________________________________________________________________________ > |
From: John H. <jdh...@ac...> - 2004-01-08 18:04:36
|
>>>>> "Flavio" == Flavio C Coelho <fcc...@fi...> writes: Flavio> Hi, I have a problem with matplotlib: Flavio> My program is an interective simulator which needs to Flavio> re-plot results multiple times at the users request. Flavio> But after I issue show() I cannot generate other plots. Flavio> what can I do to circumvent this? If you are using matplotlib in an application, as it sounds like you are, you don't need to call show at all. You control the GUI mainloop yourself. See, for example, examples/embedding_in_gtk2.py or examples/embedding_in_wx.py. Do the application users need to use the matlab interface plotting commands themselves, or are they simply interacting with the plots using widgets you provide? If the latter, I suggest not using the matlab interface at all, and importing Figure from backends.backend_gtk or backends.backend_wx. and Subplot from axes and controlling the plots using the object oriented API. All of the matlab plotting commands are simply thin wrappers to the Axes API (hist, psd, scatter, etc... are all accessible from the axes instance) Eg, subplot(111) plot(t,s) xlabel('hi mom') set(gca(), 'xlim', [0,10]) is fig = Figure(figsize=(5,4), dpi=100) ax = Subplot(f, 111) ax.plot(t,s) ax.set_xlabel('hi mom') ax.set_xlim([0,10]) You can force a redraw of the figure by doing fig.draw() The moral of the story: don't call show for applications; that is for python batch scripts. Will this work for you? Of course if you have a shell and you want to allow your users to interact with the plot using the matlab interface, you'll need a different approach. Something along the lines of examples/interactive2.py, which is an interactive shell for pygtk. I haven't worked with custom shells for wx, but interactive control of matplotlib figures works in PyCrust with the CVS version of matplotlib. Make sure you are using the CVS version of matplotlib as a number of critical bugs in the WX backend that affect interactive use have been fixed since the 0.40 release. Note the API for working interactively has changed. You now do import matplotlib matplotlib.use('WX') matplotlib.interactive(True) Ditto for GTK. Here's a snapshot of the latest version in case your CVS mirrors are behind: http://nitace.bsd.uchicago.edu:8080/files/share/matplotlib-0.41c.tar.gz Hope this helps! John Hunter |
From: matthew a. <ma...@ca...> - 2004-01-07 23:27:47
|
That's great. It's interesting to read your discussion of backend switching issues. It's something that gnuplot deals with very poorly indeed, which is what motivated me to seek out matplotlib. I.e. in gnuplot you can freely switch backends, but the line styles are set differently (and sometimes very awkwardly: X resources for instance!) for each backend. Anyway, I tried out what's in CVS. As you say, it mostly works. I had trouble though with my (rather complicated) 2x2 subplot script. The worst problem is that when I use the Save button to save as .ps, the output is sized too large to fit on the page: only the lower left subplot is fully visible. There are various other layout problems, which I managed to reproduce in the attached hacked version of subplot_demo.py, but unfortunately I couldn't reproduce the problem above outside of my script. Other problems: * when saving from the GTK window into a .ps file, the lines are not clipped by the edge of the plot area: see the top left plot in the attached code * xaxis and yaxis labels often land on top of adjacent subplot titles and plot areas in savefig('blah.ps') output (I've had trouble with this in the -dPS output too) Also, I tried to save as file.eps, but the save dialog complained and only accepts .ps. Presumably this is an easy fix? Cheers, Matthew. On Wed, 7 Jan 2004, John Hunter wrote: > I've made some changes to the GTK backend that enable save to a ps > figure, either by calling > > savefig('somefile.ps') > > or using a file with the ps extension from the save figure dialog. > > It's not too pretty internally but it works (more or less). Consider > this a preliminary functional implementation with known bugs that will > be hammered out later. > > The problem in implementing this is that the AxisText instances (axis > and tick labels, title) are backend dependent. As Jeremy noted when > he did the wx backend, this is different than the way other objects > (lines, patches) are handled. With some refactoring this can be made > more elegant. > > The other problem is that the default fonts are different between the > backends, so you'll get a lot of warnings like "Falling back on > default font". This is another problem we need to clear up -- ie, we > need a set of shared fontnames between backends. > > Finally, a 'gotcha' that you need to watch out for is that text > references in scripts will be destroyed by calling a postscript > savefig (because of the way text instance conversions are handled). > > So if you did > > ax = subplot(111) > plot(something) > labels = ax.get_xticklabels() > savefig('somefile.ps') > set(labels, 'color', 'r') > savefig('somefile.png') > > The color change would not take effect because the text references > have been changed. Moral of story: do not change figure text > properties after calling savefig for a ps figure with text instances > obtained before the savefig call. > > Other than that it should work. Let me know. I've updated CVS but be > forewarned: CVS mirrors sometime take a while to update. > > JDH > |
From: John H. <jdh...@ac...> - 2004-01-07 14:54:16
|
>>>>> "matthew" == matthew arnison <ma...@ca...> writes: >> But there is no reason you shouldn't be able to create a PS >> figure or a GD figure to save. I've been meaning to add a 'PS' >> extension checker in the savefig command that would enable you >> to save to PS from any backend. >> >> Is this primarily what you need to switch backends for? matthew> Yes that's the sweet spot. matthew> Presumably the Save button on the GTK/WX GUI just calls matthew> savefig()? In which case you'd be able to save postscript matthew> from there too, which would be popular too I think. I've made some changes to the GTK backend that enable save to a ps figure, either by calling savefig('somefile.ps') or using a file with the ps extension from the save figure dialog. It's not too pretty internally but it works (more or less). Consider this a preliminary functional implementation with known bugs that will be hammered out later. The problem in implementing this is that the AxisText instances (axis and tick labels, title) are backend dependent. As Jeremy noted when he did the wx backend, this is different than the way other objects (lines, patches) are handled. With some refactoring this can be made more elegant. The other problem is that the default fonts are different between the backends, so you'll get a lot of warnings like "Falling back on default font". This is another problem we need to clear up -- ie, we need a set of shared fontnames between backends. Finally, a 'gotcha' that you need to watch out for is that text references in scripts will be destroyed by calling a postscript savefig (because of the way text instance conversions are handled). So if you did ax = subplot(111) plot(something) labels = ax.get_xticklabels() savefig('somefile.ps') set(labels, 'color', 'r') savefig('somefile.png') The color change would not take effect because the text references have been changed. Moral of story: do not change figure text properties after calling savefig for a ps figure with text instances obtained before the savefig call. Other than that it should work. Let me know. I've updated CVS but be forewarned: CVS mirrors sometime take a while to update. JDH |
From: matthew a. <ma...@ca...> - 2004-01-05 22:57:49
|
On Mon, 5 Jan 2004, John Hunter wrote: > >>>>> "matthew" == matthew arnison <ma...@ca...> writes: > > matthew> The matplotlib docs say you need to specify the backend > matthew> before importing matplotlib.matlab. But this seems a bit > matthew> restrictive: what if I want to display a plot on screen, > matthew> and then output the same plot to postscript and print it? > matthew> Normally imports are done only once at the top of a file, > matthew> but I'd like to be able to switch backends anywhere. > > But there is no reason you shouldn't be able to create a PS figure or > a GD figure to save. I've been meaning to add a 'PS' extension > checker in the savefig command that would enable you to save to PS > from any backend. > > Is this primarily what you need to switch backends for? Yes that's the sweet spot. Presumably the Save button on the GTK/WX GUI just calls savefig()? In which case you'd be able to save postscript from there too, which would be popular too I think. Another thing that would be handy is a simple cross-platform recipe (or function call?) for spawning persistent plot windows that don't block execution of the calling script. It may have been on this list (I should really search before asking) but it should be in the matplotlib docs I think. Oh yeah, and a default keyboard shortcut (or three! Esc, Q, Ctrl-Q) for quitting the plot window. And, being able to put the legend outside the plot area (either within a subplot, or outside all the subplots if the legend is the same for all). A big legend tends to cover up the data. Cheers, Matthew. |
From: John H. <jdh...@ac...> - 2004-01-05 16:03:55
|
>>>>> "matthew" == matthew arnison <ma...@ca...> writes: matthew> The matplotlib docs say you need to specify the backend matthew> before importing matplotlib.matlab. But this seems a bit matthew> restrictive: what if I want to display a plot on screen, matthew> and then output the same plot to postscript and print it? matthew> Normally imports are done only once at the top of a file, matthew> but I'd like to be able to switch backends anywhere. The reason you need to specify the backend first is because everything from making a figure window to mapping an RGB tuple to a color is backend dependent. The matlab interface wouldn't know what to do with the 'figure' command without knowing its backend. What I think would be useful would be able to instantiate any backend figure with a figure instance from another backend. Eg a backend factory which did something like figPS = backend_factory(fig, 'PS') figGD = backend_factory(fig, 'GD') Ie, you could initialize a figure in any backend with an instance from another figure. This probably will never work perfectly across all backends, primarily because the GTK and WX backends both have a mainloop that they enter and it would be difficult to run both at the same time (though perhaps possible with GUI thread). But in most cases you wouldn't want too. But there is no reason you shouldn't be able to create a PS figure or a GD figure to save. I've been meaning to add a 'PS' extension checker in the savefig command that would enable you to save to PS from any backend. Is this primarily what you need to switch backends for? John Hunter |
From: John H. <jdh...@ac...> - 2004-01-05 15:26:20
|
>>>>> "Steve" == Steve Chaplin <ste...@ya...> writes: Steve> The problem seems to be that process_docs.py is expecting Steve> to read many "matplotlib.*.html" files, but these files do Steve> not exist. Yep, this is a doc bug in the README file. You need to first build the class docs from the matplotlib root > make htmldocs This will build all the matplotlib html class docs in the 'docs' subdir, which process_docs.py assumes are there. If all you want are the class docs, this is all you will need to do. process_docs and the rest of the files in htdocs build the matplotlib web site. I've updated the README file -- thanks for letting me know. JDH |
From: matthew a. <ma...@ca...> - 2004-01-05 04:45:23
|
Well I just answered my own question. As the docs point out, you can use the -dPS option to turn on the postscript backend. So to use this in harmony with my scripts I needed to: a) break out the plotting into a separate application called using command line options (conveniently I had already done this) b) tell my option parser about the -d option: import matplotlib from matplotlib.matlab import * # ... def main(): # ... parser.add_option("-d", dest="plotbackend", default="GTK", choices=matplotlib._knownBackends.keys(), help="Graphics backend to use to generate plots.") # ... c) use options.plotbackend in my own code to tell whether to savefig('something.ps') It's a bit awkward, but workable. Cheers, Matthew. On Mon, 5 Jan 2004, matthew arnison wrote: > Hi > > I'm writing a small script to plot my data, and I'd like to use a command > line option to allow the same plot to be either displayed with GTK or > output to postscript. > > This means I have to switch matplotlib backends within the script. > > Now by the time I know what option the user has chosen, I'm in a function: > > def plotThings(options): > matplotlib.use(options.plotbackend) > from matplotlib.matlab import * > > plot(...) > ... > > and python complains > > SyntaxWarning: import * only allowed at module level > > It still works, but I think I'm on thin ice. And it doesn't work if I do: > > def main(): > # ... parse options ... > > matplotlib.use(options.plotbackend) > from matplotlib.matlab import * > > plotThings(options) > > SyntaxWarning: import * only allowed at module level > NameError: global name 'plot' is not defined > > The matplotlib docs say you need to specify the backend before importing > matplotlib.matlab. But this seems a bit restrictive: what if I want to > display a plot on screen, and then output the same plot to postscript and > print it? Normally imports are done only once at the top of a file, but > I'd like to be able to switch backends anywhere. > > What are your thoughts on this issue? > > I've been using matplotlib for a while. It's the best python plotting tool > I reckon. Thanks for contributing to free software. > > Cheers and thanks, > Matthew. > > > ------------------------------------------------------- > This SF.net email is sponsored by: IBM Linux Tutorials. > Become an expert in LINUX or just sharpen your skills. Sign up for IBM's > Free Linux Tutorials. Learn everything from the bash shell to sys admin. > Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: matthew a. <ma...@ca...> - 2004-01-05 01:44:09
|
Hi I'm writing a small script to plot my data, and I'd like to use a command line option to allow the same plot to be either displayed with GTK or output to postscript. This means I have to switch matplotlib backends within the script. Now by the time I know what option the user has chosen, I'm in a function: def plotThings(options): matplotlib.use(options.plotbackend) from matplotlib.matlab import * plot(...) ... and python complains SyntaxWarning: import * only allowed at module level It still works, but I think I'm on thin ice. And it doesn't work if I do: def main(): # ... parse options ... matplotlib.use(options.plotbackend) from matplotlib.matlab import * plotThings(options) SyntaxWarning: import * only allowed at module level NameError: global name 'plot' is not defined The matplotlib docs say you need to specify the backend before importing matplotlib.matlab. But this seems a bit restrictive: what if I want to display a plot on screen, and then output the same plot to postscript and print it? Normally imports are done only once at the top of a file, but I'd like to be able to switch backends anywhere. What are your thoughts on this issue? I've been using matplotlib for a while. It's the best python plotting tool I reckon. Thanks for contributing to free software. Cheers and thanks, Matthew. |
From: Steve C. <ste...@ya...> - 2004-01-03 07:38:41
|
I'm using matplotlib 0.40 from CVS and am trying to generate the html docs as described in matplotlib/htdocs/README. This is the error I get: $ python process_docs.py Converting matplotlib.cbook.html to template Traceback (most recent call last): File "process_docs.py", line 20, in ? s = file('../docs/' + fname).read() IOError: [Errno 2] No such file or directory: '../docs/matplotlib.cbook.html' The problem seems to be that process_docs.py is expecting to read many "matplotlib.*.html" files, but these files do not exist. Steve --- |
From: John H. <jdh...@ac...> - 2003-12-29 15:48:43
|
>>>>> "Eugene" == Eugene A Suchkov <Cit...@in...> writes: Eugene> 1) I can't make 2 plots using WX-backend sequentially Do you need to use matplotlib interactively from the prompt, or do you simply need to make 2 figures? The latter is easy import matplotlib matplotlib.use('WX') from matplotlib.matlab import * figure(1) plot([1,2,3,4]) figure(2) plot([1,4,9,16]) show() For interactive mode, as suggested earlier, we're still ironing out the bugs regarding interactivity and WX. Thanks! John Hunter |
From: John H. <jdh...@ac...> - 2003-12-29 15:45:41
|
>>>>> "Eugene" == Eugene A Suchkov <Cit...@in...> writes: Eugene> When I'm performing smth like: Eugene> tl=get_xticklabels(...) for l in tl: print get_text(l) Eugene> I'm wondering why tl is a correct list, but with empty Eugene> text :( This is related to the first problem you are having. When you are not running matplotlib in interactive mode, nothing on the plotting side is done until you call 'show()'. The reason for this is that the backend doesn't have access to the gtk primitives until the window is realized. If you start your script with >>> import matplotlib >>> from matplotlib.matlab import * >>> from matplotlib.backends.backend_gtk import ShowOn >>> ShowOn().set(1) # turning on interactive mode and turn on interactive mode, then you can, for example, print the labels before calling show, as in the script below. Note however, whether or not you are in interactive mode, you will be able to control the text properties, as in ax = subplot(111) ax.plot([1,2,3]) tl = ax.get_ticklabels() set(tl, 'color', 'r') You aren't the first one to be confused about interactive mode vis-a-vis the various backends. It's not a trivial issue since both the GTK and WX backend have event loops that they go into, but it's a high priority since it's causing trouble for several people. Hopefully by the next minor release we'll have it worked out..... import matplotlib from matplotlib.matlab import * from matplotlib.backends.backend_gtk import ShowOn ShowOn().set(1) # turning on interactive mode t = arange(0.0, 3.0, 0.01) s = sin(2*pi*t) ax = subplot(111) ax.plot(t,s) tl = ax.get_xticklabels() for l in tl: print l.get_text() show() |
From: John H. <jdh...@ac...> - 2003-12-29 15:30:34
|
>>>>> "Todd" == Todd G Gardner <pi...@ea...> writes: Todd> Hello all, Please pardon my ignorance as I am fairly new to Todd> matplotlib. Todd> I have 1000 sets of (x,y) data. I would like to cycle Todd> through this data by graphing set 1 then 2 then ... 1000. Todd> How can I refresh a plot without closing and reopening that Todd> plot? Pekko Piirola <pek...@he...> sent me an example some time ago that cycles through a data set. Currently this example only works in the GTK backend, but we're actively working on getting a unified GUI interface to allow for this kind of thing. You may also want to take a look at examples/system_monitor.py and examples/dynamic_demo.py which show how to dynamically update a plot. #!/usr/bin/env python2.3 import matplotlib.matlab import gtk import Numeric fig = matplotlib.matlab.figure(1) ind = Numeric.arange(60) x_tmp=[] for i in range(100): x_tmp.append(Numeric.sin((ind+i)*Numeric.pi/15.0)) X=Numeric.array(x_tmp) lines = matplotlib.matlab.plot(X[:,0],'o') def updatefig(*args): updatefig.count += 1 if updatefig.count>59: updatefig.count=0 lines[0].set_data(ind,X[:,updatefig.count]) fig.draw() return gtk.TRUE updatefig.count=-1 gtk.timeout_add(200,updatefig) matplotlib.matlab.show() |
From: Todd G. G. <pi...@ea...> - 2003-12-29 07:02:35
|
Hello all, Please pardon my ignorance as I am fairly new to matplotlib. I have 1000 sets of (x,y) data. I would like to cycle through this data by graphing set 1 then 2 then ... 1000. How can I refresh a plot without closing and reopening that plot? Any pointer would be greatly appreciated. Todd |
From: Jeremy O'D. <je...@o-...> - 2003-12-28 22:45:12
|
Hi Eugene, On Sunday 28 December 2003 7:34 am, you wrote: > > I's really useful feature, e.g.: > > I have a WX program. It has some buttons, checkboxes, radiobuttons, to > combine the options (detrending, plotting autocorrelation etc), and I > can perform this options for any file with data. Now the user should > quit this program to plot anothe graph... I's really tiring :( Looking at this description, I wonder if it might be better for you to embed a figure in your application. You will then be able to build up the figure as you want it and hit the 'save' button, then maybe continue with changes, or clear the data in the chart. The example 'embedding_in_wx.py' shows how to embed a Matplotlib chart in a wxFrame (and it works just as well if the PlotFigure class is derived from wxPanel, which is what you would probably do in a larger program than the short example). The plotted data itself is stored in a FigureWx instance. This needs to be associated with a FigureManager and Toolbar instance if you want to be able to pan, zoom and save plot images. In the example, the plotting is done in a single function, plot_data(). However, it is easy to add event handling functions which act on the Figure, e.g., if data is held in self.data_x and self.data_y, and the axis instance is self.axis: (in __init__() for PlotFigure): EVT_BUTTON(self, ID_REGRESSION, self.onRegressionButton) ... and new function: def onRegressionButton(self, evt): reg_x, reg_y = PerformRegression(self.data_x, self.data_y) self.axis.plot(reg_x, reg_y) self.toolbar.update() self.fig.draw() Hope this helps. I'll make the changes for show() anyway - it is important to John and I that all backends are as close to identical as possible, and you have clearly identified the bug for me. Good luck, and thanks for the feedback. Regards Jeremy |
From: Jeremy O'D. <je...@o-...> - 2003-12-27 13:18:17
|
Hi Eugene, I've had a quick look into the problem for you, and I can't give an immediate solution, but I'll try to get a fix in the next few days. I can say that in the original design, the intention was that show() would be the last line of any script. I know that John (author of virtually everything in Matplotlib except backend_wx) has recently made some changes to allow show() to be called more than once. Unfortunately, the code needed to do thisis quite specific to each GUI library, and I cannot simply port what has been done for GTK (I've just tried something very close to the GTK implementation, and it doesn't work). A few questions for John Hunter: I think I need to do something like the following: - show() must now instantiate any figures already defined and enter the the main event loop. ShowOn needs to keep track of this. - I need to keep track of the number of figures instantiated. I assume that Gcf.destroy() does this. - I need to ensure that I do not exit when the last figure is destroyed, and therefore need to manage that I may need to create a new figure manager if there is none. Have I missed anything? Regards Jeremy Eugene A. Suchkov writes: > > Hi all! > > There are some bug's I've found in two days I got started with echotag. > > 1) I can't make 2 plots using WX-backend sequentially > > For example: > > ---CODE--- > > import matplotlib > matplotlib.use('WX') > from matplotlib.matlab import * > plot([1,2,3,4]) > show() > plot([1,4,9,16]) > show() > > --END CODE-- > > Well, everything is OK, while building 1st graph, but then an error > occurs: > > --OUTPUT-- > > Traceback (most recent call last): > File "plot.py", line 7, in ? > plot([1,4,9,16]) > File "/usr/lib/python2.2/site-packages/matplotlib/matlab.py", line > 723, in plot draw_if_interactive() > File > "/usr/lib/python2.2/site-packages/matplotlib/backends/backend_wx.py", > line 986, in draw_if_interactive current_fig = > Gcf().get_current_figwin().figure AttributeError: 'Gcf' object has no > attribute 'get_current_figwin' > > --END OUTPUT-- > It was tested on Linux and Windows. Versions 0.40 and 0.32 > > When I'm using GTK everything is OK with both graphs, but using WX is > critical :( |