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: John H. <jdh...@ac...> - 2004-03-01 23:47:37
|
>>>>> "James" == James Boyle <bo...@ll...> writes:
James> I have used nc = 3 or 4 if I use the plot command and all
James> the plots are squished into the subregions for which I
James> asked - even if things get ugly.
This is a one character bug!
I mainly use multiple rows in my own plots and never noticed it. On
or around line 1492 in axes.Subplot.__init__
change
figLeft = left + colNum*(figW + sepH)
^
to
figLeft = left + colNum*(figW + sepW)
^
Thanks for the detailed bug report and example code.
JDH
|
|
From: Arnold M. <arn...@wu...> - 2004-03-01 23:25:35
|
Dear John,
> Well, the behavior you are seeing is the correct, documented
> behavior. I think it would be easier for you to pass errorbar what it
> is expecting than for errorbar to handle this additional use case -
> it's already getting pretty hairy in there.
>
> DO you have a problem doing
>
> errorbar([1],[2],xerr=[.1])
Not really, it's just that I hate to think beforehand about whether a
routine eats everything or just arrays ;). The adjustments needed are
only minor I found out, after sending the previous mail. Here is the
diff against matplotlib-0.50e
<diff>
>
> 7c7
< log10, Float
---
> log10, Float, NewAxis
527a528,531
> if (len(x.shape) == 0): x=x[NewAxis,] if (len(y.shape) == 0):
> y=y[NewAxis,]
533,534c537,544
< if xerr is not None: xerr = asarray(xerr)
< if yerr is not None: yerr = asarray(yerr)
---
> if xerr is not None: xerr = asarray(xerr) if (len(xerr.shape) == 0):
> xerr=xerr[NewAxis,] if yerr is not None: yerr = asarray(yerr) if
> (len(yerr.shape) == 0): yerr=yerr[NewAxis,]
</diff>
>
> You're not the first! The temporary workaround is to use
> plot(x,y,'o') which uses fixes sizes in points for the symbols (you
> can also use '*', '+', etc) However, you cannot vary the size or
> color of the symbols so this may not be workable.
I'm perfectly happy with the plot command to do normal scatter plots. I
even think that it would be more logical (but perhaps not
matlab-compatible) to move all machinery of scatter to plot.
You asked for information of how people (would like to) use scatter
plots. Well, my wishlist for scatter would be more or less like (sorry
it's a long wishlist, but see them as suggestions, not commands!):
* Scatter plots of symbols where the size of the symbols can be set per
x-y pair. The use of this is that it depends on the number of points
whether you want tiny dots, or large circles (the latter being nice
when you have 10 points, but not when you have a million. For me,
the size does not need to be specified in points, or another seemingly
exact measure. I can live with a 'default size' (say 1/100 of the
smallest of the axes) and a multiplier that can set by the user (like
in Gnuplot).
* The symbols should be the same kind of symbols as used in plot (i.e.
squares, triangles, circles etc.). The blob-symbols as plotted now
should be a special case rather than the default. For myself, I only
see a useful usage for *circular* (irrespective of axes) blobs where
the radius is set by the s-keyword. But perhaps others like to have
ellipsoid blobs that have a *two* axes that make physical sense.
* It would be nice if all symbols -as far as applicable- come in 'open'
and 'filled' versions (nice if you want to plot in one scatter plot
data referring to the same physical quantity, but separating between
daytime and nighttime for instance).
For me, the number of symbols needed in one plot is rather limited: I
hardly use more than 4 simultaneously in one scatter plot. On the
other hand, in general x-y plots (lines, line-points, or points in
Gnuplot terms) I would like to have at least say 10 symbols, since I
usually use symbols to clarify the difference between lines, because
that's easier than to ask the reader to differentiate between dash,
dash-dot, dash-dash-dot etc.
* With respect to the coloring (c-keyword) it is perhaps easiest if this
is applied to the symbols directly: just as one can say 'b>' in plot,
it would be something like:
scatter(x, y, '>', c=color_array)
* Assume that the new symbol for the 'blobs' would be say '@', then
scatter(x, y, '@', s=size_array, c=color_array)
gives colored blobs with unequal axes (as now),
scatter(x, y, 'b@', s=size_array)
gives blue blobs with unequal axes
scatter(x, y, 'b@', s=size_array*-1)
gives blue blobs with equal axes
etc.
I hope this helps. And perhaps I can help in some other ways.
With kind regards,
Arnold Moene
>
> When I refactor the scatter / pcolor etc commands as discussed in my
> response to Dominique Orban above, I'll make sure that this case is
> handled as well. I plan to support efficient handling of scatter
> with arbitrary (or at least several) shapes where the size can be in
> data (x,y) or user-defined coords, eg, physical sizes. It would be
> helpful for me if people gave some information about how they would
> like scatter to behave, particularly in regard to the sizes since I
> am still working this out.
>
> Would you like physical sizes, eg circles with radius in points, or
> what?
>
> Should the shape depend on the aspect ratio of the plotting window.
> Eg, if it's a circle and you have a short, wide window, should it
> appear ellipsoidal?
>
> What basic scatter symbols should be supported?
>
> What are the most common uses: fixed size? fixed color? vary both?
>
> JDH
>
--
------------------------------------------------------------------------
Arnold F. Moene NEW tel: +31 (0)317 482604
Meteorology and Air Quality Group fax: +31 (0)317 482811
Wageningen University e-mail: Arn...@wu...
Duivendaal 2 url: http://www.met.wau.nl 6701
AP Wageningen
The Netherlands
------------------------------------------------------------------------
Openoffice.org - Freedom at work
------------------------------------------------------------------------
--
------------------------------------------------------------------------
Arnold F. Moene NEW tel: +31 (0)317 482604
Meteorology and Air Quality Group fax: +31 (0)317 482811
Wageningen University e-mail: Arn...@wu...
Duivendaal 2 url: http://www.met.wau.nl
6701 AP Wageningen
The Netherlands
------------------------------------------------------------------------
Openoffice.org - Freedom at work
------------------------------------------------------------------------
|
|
From: James B. <bo...@ll...> - 2004-03-01 22:51:49
|
I was making subplots using the bar command and ran into a problem I do
not understand.
nr = number of rows, nc = number of columns
I want nr = 1, i.e. just one row of plots. If nc is 1 or 2 all is
well, but nc =3 the third plot is cutoff in the middle. If nc = 4, I
get 3 plots and the fourth cannot be seen.
What seems to be happening is that the subplots are not scaled to fit
the viewport dictated by suplot(nr,nc,plotNumber).
I have used nc = 3 or 4 if I use the plot command and all the plots
are squished into the subregions for which I asked - even if things get
ugly.
I use the PS and Agg backends and both yield similar results.
My code is below.
Thanks for any help.
Jim
The Code:
import matplotlib
matplotlib.use('PS')
#matplotlib.use('Agg')
from matplotlib.matlab import *
import showPS
import showAGG
nTypes = 3
ind = arange(nTypes) # the x locations for the groups
width = .2 # the width of the bars
nr = 1
nc = 3
crap = []
for c in range(nc):
for r in range(nr):
subplotID = nc*r + c + 1
crap.append(subplotID)
ax = subplot(nr,nc,subplotID)
frame = ax.get_frame()
frame.set_linewidth(1.5)
amip = (20, 35, 30)
p1 = bar(ind, amip, width, color='r')
climo = (25, 32, 34)
p2 = bar(ind+width, climo, width, color='y')
isccp = (5, 10, 60)
p3 = bar(ind+2.0*width, isccp, width, color='g')
atlas = (20, 40, 70)
p4 = bar(ind+3.0*width, atlas, width, color='b')
ylabel('Cloud Fraction (%)')
title('Cloud' + str(subplotID)+'_'+str(c)+'_'+str(r) )
set(gca(), 'xticks', ind+2*width)
set(gca(), 'xticklabels', ('low', 'mid', 'high') )
set(gca(), 'yticks', arange(0,100,10))
legend( (p1[0], p2[0],p3[0],p4[0]), ('Amip',
'climo','isccp','atlas') )
savefig('barchart_test')
showPS.showPS('barchart_test')
|
|
From: John H. <jdh...@ac...> - 2004-03-01 15:21:41
|
>>>>> "Arnold" == Arnold Moene <arn...@wu...> writes:
Arnold> Dear all, Praise for this first serious python plotting
Arnold> package!
Thanks!
Arnold> I have two minor comments:
-> when I try to do an errorbar plot with a scalar, rather than an
Arnold> array as the argument (i.e. errorbar(scalar_x, scalar_y,
Arnold> xerr=scalar_xerr)) I get the following error message:
Arnold> "/usr/lib/python2.3/site-packages/matplotlib/axes.py",
Arnold> line 569, in errorbar right = x+xerr[1] IndexError: index
Arnold> out of bounds
Arnold> This is due to the fact that the length of xerr is tested
Arnold> only to be 1 or greater than 1 (asymmetric
Arnold> errors). However, the option that I would like to plot
Arnold> just one point is not included. So an extra if-clause is
Arnold> needed before the present code that checks whether x and
Arnold> xerr are arrays or not.
Well, the behavior you are seeing is the correct, documented behavior.
I think it would be easier for you to pass errorbar what it is
expecting than for errorbar to handle this additional use case - it's
already getting pretty hairy in there.
DO you have a problem doing
errorbar([1],[2],xerr=[.1])
-> I very much like the option for scatter to color the blobs to
-> be
Arnold> plotted. However, I have an application where the shape of
Arnold> the blobs is immaterial: I would rather have filled
Arnold> circles (or even better: filled symbols, be it circles,
Arnold> triangles ...). Anyhow: I would like them to be symmetric
Arnold> irrespective of the range of the axes. One option would be
Arnold> to allow the s-keyword to be allowed to be negative, where
Arnold> negative means: symmetric and the value of the negative
Arnold> number being the size relative to some default size.
You're not the first! The temporary workaround is to use
plot(x,y,'o') which uses fixes sizes in points for the symbols (you
can also use '*', '+', etc) However, you cannot vary the size or
color of the symbols so this may not be workable.
When I refactor the scatter / pcolor etc commands as discussed in my
response to Dominique Orban above, I'll make sure that this case is
handled as well. I plan to support efficient handling of scatter with
arbitrary (or at least several) shapes where the size can be in data
(x,y) or user-defined coords, eg, physical sizes. It would be helpful
for me if people gave some information about how they would like
scatter to behave, particularly in regard to the sizes since I am
still working this out.
Would you like physical sizes, eg circles with radius in points, or
what?
Should the shape depend on the aspect ratio of the plotting window.
Eg, if it's a circle and you have a short, wide window, should it
appear ellipsoidal?
What basic scatter symbols should be supported?
What are the most common uses: fixed size? fixed color? vary both?
JDH
|
|
From: John H. <jdh...@ac...> - 2004-03-01 15:08:36
|
>>>>> "Dominique" == Dominique Orban <do...@da...> writes:
Dominique> Hello, I am having trouble viewing scatter plots of
Dominique> large data sets with the GTK backend. The plots are
Dominique> sparsity patterns of sparse matrices, much in the way
Dominique> of Matlab's spy function. First of all, there may be a
Dominique> conflict somewhere with my version of GTK/PyGTK;
Dominique> issuing a plot() or scatter() command often results in
Dominique> the message 'None Active' being displayed. After a
Dominique> couple of seconds, the python prompt comes back, and
Dominique> the 'scatter' command results in a huge number of
Dominique> messages of the form
Dominique> <matplotlib.patches.Circle instance at 0x4531730c>
Hi Dominique,
It looks like there is a "print" statement somewhere in your code.
It's possible that this was from a vestigial debug command I left in.
I don't get get it on my system. Are you using matplotlib-0.50? I
also don't get the "None Active" line.
I'm using this as a test script
from matplotlib.matlab import *
x = 100*rand(100000)
y = 100*rand(100000)
s = rand(100000)
scatter(x,y,s)
#plot(x,y,'o')
show()
Takes about 30s on my system. Note that plot with circles can be must
faster that scatter if you don't need to vary the size or color of the
symbols.
Dominique> begin displayed; litterally hundreds of them---it takes
Dominique> some 10 seconds. Finally, a show() opens up a Figure
Dominique> window, but no plot. The matrix has 80519 nonzero
Dominique> elements and is symmetric, so the scatter plot contains
Dominique> roughly twice as many points. I have a Gnuplot
Dominique> interface and a spy-like function which works just fine
Dominique> and displays the pattern in a matter of a fraction of a
Dominique> second.
There are several areas where matplotlib performance is subpar -
mostly for large numbers of patches (circles for scatter, rectangles
for pcolor). Fixing this is a fairly high priority and I have a good
idea how to go about it - see
http://sourceforge.net/mailarchive/message.php?msg_id=7142332 for a
recent discussion. I think in the next 3-4 weeks I can get this
fixed. Basically, the plan is to set up an additional backend method
or two that the various backends may optionally implement in extension
code for performance.
Dominique> Sometimes, a plot using the GTK backend gets stuck in
Dominique> gtk.mainloop(), and i have to interrupt it with
Dominique> Ctrl-C. I am using SuSE Linux 8.0. I have installed the
Dominique> most recent versions of GTK and PyGTK.
Are you using the default GTK that comes with SuSE or did you upgrade?
I have gotten myself into a world of pain before trying to upgraded
GTK libs on a linux box. It does look like you are getting some
unusual behavior. Make sure you are using the latest matplotlib and
try running the test script I posted above. If you still get the same
errors, something is whacked with your install or paths. Otherwise,
stay tuned for performance enhancements coming soon to theaters
everywhere.
JDH
|
|
From: John H. <jdh...@ac...> - 2004-03-01 14:53:07
|
- I have 2 Suplots on top of each other, but when I select only one
axis on the drop-down button I get an error:
This was a python2.2 specific bug relating to nested scopes. It's
fixed for the next release.
- I want to systematically disable the vertical zoom/move on the
second subplot, but not the first. How can I do that ?
Well, when the menu is working properly that is how you do it. By
"systematically", do you mean by default so it's disabled when the
plot comes up?
If so, this depends on how you are building your GUI window.
Basically you need to get your hands on the gtk.Toolbar instance,
which contains an omenu (gtk.OptionMenu) attribute (wait until the
next release, a couple of days, where I've cleaned this up a bit).
Eg, if you are using the matlab interface
manager = get_current_fig_manager()
items = manager.toolbar.omenuItems
items[-1].set_active(False)
Turns off navigation for the last subplot. items[0] would turn off
navigation for the first subplot, and so on.
Here are the docs for gtk.MenuItem -
http://www.gnome.org/~james/pygtk-docs/class-gtkmenuitem.html
- How can I activate a tooltip on top of my plots ?
You'll have to read up on gtk tooltips. Depends on what elements you
want to add tips to. Give me a little more info. DO you want to add
tips to the navigation buttons or lines on your plot or text elements
or what?
http://www.gnome.org/~james/pygtk-docs/class-gtktooltips.html
Also check out the pygtk FAQ http://www.async.com.br/faq/pygtk and
tutorial
http://www.moeraki.com/pygtktutorial/pygtk2tutorial/index.html.
- I cannot zoom or move an plot I set the axis ticks to , ie
ax.set_xticks([])
This is a bug - thanks for reporting it. I use the tick width as the
default interval in pan. When there are no ticks, I divided by the
number of ticks and got a division by zero error. I now check for 0
and default to 20% of the plot if there are no ticks.
- How could I add a button to directly print out the picture in the toolbar ?
Print as in to a printer? No support for that yet and am not sure I
want to go there right now (cross platform printing would might take
lot of work). Best I can offer you currently is the savefig button.
I think gnome-print has made a fair amount of progress since I first
wrote matplotlib so if you want to be on the vanguard and explore this
option I would be happy.
- Is there any density plot available ?
Do you mean hist?
http://matplotlib.sourceforge.net/screenshots.html#histogram_demo
http://matplotlib.sourceforge.net/matplotlib.matlab.html#-hist
- Can I change the size taken by each of the Suplots ?
Just use axes. Subplot derives from Axes. With axes, you can set the
size of your subplot with a rect [left, bottom, width, height]
http://matplotlib.sourceforge.net/matplotlib.matlab.html#-axes
http://matplotlib.sourceforge.net/matplotlib.axes.html
http://matplotlib.sourceforge.net/screenshots.html#axes_demo
- I have MANY small plots on my graph. Is there a cost effective way
to filter which plots to show ?
I don't know what this means. Wouldn't you want to show all the plots
on your figure? Why else would you put them there? Please elaborate.
Cheers,
JDH
|
|
From: John H. <jdh...@ac...> - 2004-03-01 14:26:08
|
>>>>> "matthew" == matthew arnison <ma...@ca...> writes:
matthew> Specifically, what about making the default behaviour to
matthew> clip the data at the first point which is equal or
matthew> greater than the axis range? That should maintain the
matthew> efficiency gains of clipping, while still keeping the
matthew> scientific plotting behaviour that I think most users are
matthew> accustomed to.
Hi Matthew -
That's a good idea - the data clipping feature was a gotcha for many.
For the next release, I turned data clipping off by default since I
don't think it's the typical use case and implemented the "first point
which is equal or greater" suggestion. However, I also have created a
config file, so you can set the default as you like.
JDH
|
|
From: Kuzminski, S. R <SKu...@fa...> - 2004-03-01 14:08:43
|
I upgraded to GD v2 and gdmodule v0.52 and I noticed that line widths don't work correctly. If the line width is >1 the line comes out as 'stripes'. This is on Linux. The GD lib < 2.0 didn't have line width support at all so maybe I've never seen GD create variable width lines on linux? I wonder if this is a GD problem. =20 I tried the new Agg backend, very nice. I'm all set to jettison GD altogether and go with Agg except that the anti-aliased graphs that look so great, print poorly.. :-( Is there a way to turn off the anti-aliasing? It would be *great* to be able to drop that GD dependency. =20 thanks, Stefan =20 |
|
From: Arnold M. <arn...@wu...> - 2004-03-01 12:30:33
|
Dear all,
Praise for this first serious python plotting package!
I have two minor comments:
-> when I try to do an errorbar plot with a scalar, rather than an array
as the argument (i.e. errorbar(scalar_x, scalar_y, xerr=scalar_xerr)) I
get the following error message:
"/usr/lib/python2.3/site-packages/matplotlib/axes.py", line 569, in errorbar
right = x+xerr[1]
IndexError: index out of bounds
This is due to the fact that the length of xerr is tested only to be 1
or greater than 1 (asymmetric errors). However, the option that I would
like to plot just one point is not included. So an extra if-clause is
needed before the present code that checks whether x and xerr are arrays
or not.
-> I very much like the option for scatter to color the blobs to be
plotted. However, I have an application where the shape of the blobs is
immaterial: I would rather have filled circles (or even better: filled
symbols, be it circles, triangles ...). Anyhow: I would like them to be
symmetric irrespective of the range of the axes. One option would be to
allow the s-keyword to be allowed to be negative, where negative means:
symmetric and the value of the negative number being the size relative
to some default size.
Thanks and keep up the good work,
Arnold Moene
|
|
From: Dominique O. <do...@da...> - 2004-03-01 00:23:17
|
Hello,
I am having trouble viewing scatter plots of large data sets
with the GTK backend. The plots are sparsity patterns of
sparse matrices, much in the way of Matlab's spy function.
First of all, there may be a conflict somewhere with my
version of GTK/PyGTK; issuing a plot() or scatter() command
often results in the message 'None Active' being displayed.
After a couple of seconds, the python prompt comes back, and
the 'scatter' command results in a huge number of messages
of the form
<matplotlib.patches.Circle instance at 0x4531730c>
begin displayed; litterally hundreds of them---it takes some
10 seconds. Finally, a show() opens up a Figure window, but
no plot. The matrix has 80519 nonzero elements and is
symmetric, so the scatter plot contains roughly twice as
many points. I have a Gnuplot interface and a spy-like
function which works just fine and displays the pattern in a
matter of a fraction of a second.
Sometimes, a plot using the GTK backend gets stuck in
gtk.mainloop(), and i have to interrupt it with Ctrl-C. I am
using SuSE Linux 8.0. I have installed the most recent
versions of GTK and PyGTK.
Thanks in advance for any suggestions.
Dominique
|
|
From: Jean-Baptiste C. <Jea...@de...> - 2004-02-27 13:58:30
|
S=E6l !
I have been developing a small interface based on matlpotlib. I must say I =
really enjoy it.
I came to the point of a lot of small questions, not found in the FAQ
I am using matplotlib 0.50e on RedHat 9.0 linux and mainly the object picke=
r class
- I have 2 Suplots on top of each other, but when I select only one axis on=
the drop-down button I get an error:
Traceback (most recent call last):
File "/usr/lib/python2.2/site-packages/matplotlib/backends/backend_gtk.py=
", line 987, in toggled
if item=3D=3DitemAll:
NameError: free variable 'itemAll' referenced before assignment in enclosin=
g scope
- I want to systematically disable the vertical zoom/move on the second sub=
plot, but not the first. How can I do that ?
- How can I activate a tooltip on top of my plots ?
- I cannot zoom or move an plot I set the axis ticks to , ie ax.set_xticks(=
[])
- How could I add a button to directly print out the picture in the toolbar=
?
- Is there any density plot available ?
- Can I change the size taken by each of the Suplots ?=20
- I have MANY small plots on my graph. Is there a cost effective way to fil=
ter which plots to show ?
Thanks a lot for this great library !
Kve=F0ja
Jean-Baptiste
=09
--=20
-----------------------------
Jea...@de...
Department of Statistics
deCODE genetics Sturlugata,8
570 2993 101 Reykjav=EDk
|
|
From: matthew a. <ma...@ca...> - 2004-02-25 22:35:50
|
I suggest to John a while back that for plotting it makes more sense for data ranges to be inclusive [] or min <= x <= max rather than half-inclusive [) or min <= x < max as is the python default for functions like range(). Specifically, what about making the default behaviour to clip the data at the first point which is equal or greater than the axis range? That should maintain the efficiency gains of clipping, while still keeping the scientific plotting behaviour that I think most users are accustomed to. Cheers, Matthew. |
|
From: John H. <jdh...@ac...> - 2004-02-25 18:18:31
|
>>>>> "James" == James Boyle <bo...@ll...> writes:
James> I set the axis bounds when I am plotting a number of lines
James> some of which have a larger domain. While interested in the
James> behaviour in the limited domain, I would like to retain the
James> information that some lines extend beyond. When I first
James> encountered this behaviour, I thought that I had mistakenly
James> truncated my input data - I think that the plot should show
James> as much of the data passed to it as possible.
James> Is there something I am missing - or is this a feature?
It's a feature!
matplotlib does two kinds of clipping: data clipping and viewport
clipping. Viewport clipping is the typical clipping where the lines
are clipped to the viewport. data clipping throws out all points not
in the viewport.
I work with very long data sets of which only a small portion is in
the viewport, and use the interactive navigation controls to scroll
trough it. I found it was much more efficient to first clip the data
with Numeric before plotting it. See examples/stock_demo.py, of which
only a few days of 60 days of data are initially in the viewport.
You can control this in a couple of ways:
from matplotlib.matlab import *
ax = subplot(111)
line1, line2 = plot([1,2,3,4],'bo', [1,2,3,4],'k')
line1.set_data_clipping(False)
line2.set_data_clipping(False)
axis([0.,2.4,1.,4.])
show()
Or edit the init function of lines.Line2D to turn data clipping off by
default
self._useDataClipping = False
I've been meaning to make a matplotlibrc file to control things like
default line width, color, fontsize and name, antialiasing, data
clipping and so on.
JDH
|
|
From: James B. <bo...@ll...> - 2004-02-25 17:56:53
|
If I set the axis limits to a value less than the actual domain of the data, the line is not extended to the edge of the plot but rather is only drawn to the final point within the domain. The following illustrates what I mean: ax = subplot(111) plot([1,2,3,4],'bo', [1,2,3,4],'k') axis([0.,2.4,1.,4.]) The plot stops at the point (2,3) although the data go to (3,4). When I have dealt with these issues, I usually draw the line to its full extent and then clip the line so it stops at the edge of the plot frame. I set the axis bounds when I am plotting a number of lines some of which have a larger domain. While interested in the behaviour in the limited domain, I would like to retain the information that some lines extend beyond. When I first encountered this behaviour, I thought that I had mistakenly truncated my input data - I think that the plot should show as much of the data passed to it as possible. Is there something I am missing - or is this a feature? JIm |
|
From: Gary P. <pa...@in...> - 2004-02-23 23:22:17
|
> >>>>> "Gary" == Gary Pajer <pa...@in...> writes: > > Gary> If I start interactive2.py, it complains that ShowOn can't > Gary> be imported. Sure enough, there seems to be no method > Gary> ShowOn. Or at least I can't find it. Consequently > Gary> interactive2.py loses it's charm :) > > Gary> Or have I misunderstood something? > > You are using an out-of-date interactive2.py. Matplotlib recently > changed (improved!) the way it sets the interactive flags. You have > the new matplotlib module and the old interactive2.py code. Grab > the latest *.tar.gz or *.zip and use examples/interactive2.py from > that code. > > Should help, > JDH Yes, thank you. |
|
From: James B. <bo...@ll...> - 2004-02-23 19:01:27
|
On Feb 23, 2004, at 9:16 AM, John Hunter wrote
>
> Perhaps a better solution is to allow keyword args to the plot command
>
> plot(datar, -1.0*pr, 'b',
> linewidth=0.2, label='a red line', alpha=0.2)
>
> This could be extended to handle plot multiple plots with one command
> as follows
>
> plot(x1, y1, 'b', x2, y2, 'r--',
> linewidth=(2,3), label=('a blue line', 'a red line'),
> alpha=(1.0,0.5), antialiased = (True,False))
>
I strongly agree with the kwargs approach, it makes things clear as to
what is being set.
> Just an oversight on my part - I've been adding these neglected
> accessor methods as people need them. The axes border is a
> patches.Rectangle instance. If you add the following accessor method
> to class Axes (on or around line 598)
>
> def get_frame(self):
> "Return the axes Rectangle frame"
> return self._axesPatch
> from matplotlib.matlab import *
> ax = subplot(111)
> plot([1,2,3])
> frame = ax.get_frame()
> frame.set_linewidth(3.0)
> frame.set_facecolor('r')
> frame.set_edgecolor('y')
> show()
I applied this patch and it worked fine. On my Mac I use the PS
backend and convert to PDF. With the default frame width (0.5), the
frame was not visible using Adobe Reader 6.0. The file printed fine,
but the on screen viewing omitted the frame. This might be a personal
problem on my setup, but it might be useful if other people have this
difficulty. Making the frame width equal to 1 fixes things.
using matplotlib and lovin' it.
Jim
|
|
From: John H. <jdh...@ac...> - 2004-02-23 17:45:33
|
>>>>> "James" == James Boyle <bo...@ll...> writes:
James> I would like to be able to change the width of a line. If
James> I just use B/W the use of line widths and styles can
James> differentiate a number of lines. Currently, I do this: p =
James> plot(datar,-1.0*(pr),'b') p.extend(
James> plot(datac,-1.0*(pc),'r--')) p[0].set_linewidth(2)
James> p[1].set_linewidth(3)
James> Is this the way to do this? or is there something more
James> elegant.
I guess beauty is in the eye of the beholder, but I find this more
elegant
liner, linec = plot(datar, -1.0*pr, 'b',
datac, -1.0*pc, 'r--')
liner.set_linewidth(2)
linec.set_linewidth(3)
James> It might be useful for the third argument to have color,
James> style and width.
It's certainly doable, but my hesitancy in doing this is that there
are a lot of properties of a line that one could make an argument for
putting in the format string. matthew suggested allowing a label as
in 'r--;red line' (ala octave). Should the alpha property be in
there? My inclination is to follow the python design philosophy of
"one obvious way to do it".
Perhaps a better solution is to allow keyword args to the plot command
plot(datar, -1.0*pr, 'b',
linewidth=0.2, label='a red line', alpha=0.2)
This could be extended to handle plot multiple plots with one command
as follows
plot(x1, y1, 'b', x2, y2, 'r--',
linewidth=(2,3), label=('a blue line', 'a red line'),
alpha=(1.0,0.5), antialiased = (True,False))
legend can be altered to use line labels if they exist, so you could
build the legend of this plot just by callinging
legend()
I find this the kwargs approach a little cleaner than having a
mother-of-all-format-strings.
James> I have not been able to figure out how to change the line
James> thickness of the axis frame, i.e. the x and y axis
James> themselves. There are examples for the grid, if one is
James> used, and the tick marks but not the frame itself.
Just an oversight on my part - I've been adding these neglected
accessor methods as people need them. The axes border is a
patches.Rectangle instance. If you add the following accessor method
to class Axes (on or around line 598)
def get_frame(self):
"Return the axes Rectangle frame"
return self._axesPatch
I just added it to the src tree. You can then control the axes
rectangle as well, as in this example
from matplotlib.matlab import *
ax = subplot(111)
plot([1,2,3])
frame = ax.get_frame()
frame.set_linewidth(3.0)
frame.set_facecolor('r')
frame.set_edgecolor('y')
show()
Hope this helps,
JDH
|
|
From: James B. <bo...@ll...> - 2004-02-23 17:21:35
|
I would like to be able to change the width of a line. If I just use
B/W the use of line widths and styles can differentiate a number of
lines. Currently, I do this:
p = plot(datar,-1.0*(pr),'b')
p.extend( plot(datac,-1.0*(pc),'r--'))
p[0].set_linewidth(2)
p[1].set_linewidth(3)
Is this the way to do this? or is there something more eleganf. It
might be useful for the third argument to have color, style and width.
I have not been able to figure out how to change the line thickness of
the axis frame, i.e. the x and y axis themselves. There are examples
for the grid, if one is used, and the tick marks but not the frame
itself.
Thanks for any help.
Jim
|
|
From: John H. <jdh...@ac...> - 2004-02-23 01:53:44
|
>>>>> "katrin" == katrin schenk <sc...@ph...> writes:
katrin> C:\GTK\lib and C:\GTK\include to the path
^^^
should be C:\GTK\bin.
Also make sure you have no spaces in other entries in your path.
Correcting your PATH will probably cure you, but if you still have
troubles you should read the FAQ entry "I cannot import gtk / gdk /
gobject" at http://matplotlib.sourceforge.net/faq.html and if you
still are having trouble after trying what is suggested there and
reading the links, you may want to consider using the wx backend.
http://matplotlib.sourceforge.net/backends.html#WX
Sorry you're having so much trouble; don't give up hope!
JDH
|
|
From: katrin s. <sc...@ph...> - 2004-02-22 22:56:41
|
Hi again,
I have given up on installing matplotlib on linux for now, i have to
upgrade my mandrake install anyway, then I will try again. Now I have an
issue with installing matplotlib with gtk on my windows 2000 partition:
I followed the instructions on the web page to the letter:
installed python23
installed pygtk2.0
installed gtk in C:\GTK
added C:\GTK\lib and C:\GTK\include to the path
installed matplotlib
For a test i ran:
import pygtk
pygtk.require('2.0')
import gtk
At this point i get a system error telling me that the dynamic link
library libglib-2.0-0.dll could not be found on my path. This makes sense
since there IS no file libglib-2.0-0.dll in the GTK install, only a file
called libglib-2.0.dll.a
What is going on? What have I done wrong?
Any help would be appreciated greatly!
katrin
|
|
From: John H. <jdh...@ac...> - 2004-02-22 19:19:44
|
>>>>> "Gary" == Gary Pajer <pa...@in...> writes:
Gary> If I start interactive2.py, it complains that ShowOn can't
Gary> be imported. Sure enough, there seems to be no method
Gary> ShowOn. Or at least I can't find it. Consequently
Gary> interactive2.py loses it's charm :)
Gary> Or have I misunderstood something?
You are using an out-of-date interactive2.py. Matplotlib recently
changed (improved!) the way it sets the interactive flags. You have
the new matplotlib module and the old interactive2.py code. Grab
the latest *.tar.gz or *.zip and use examples/interactive2.py from
that code.
Should help,
JDH
|
|
From: Gary P. <pa...@in...> - 2004-02-22 19:14:48
|
If I start interactive2.py, it complains that ShowOn can't be imported. Sure enough, there seems to be no method ShowOn. Or at least I can't find it. Consequently interactive2.py loses it's charm :) Or have I misunderstood something? -gary WinXP, python 2.3.3, matplotlib 5.0, GTK 2.2.4.1 |
|
From: John H. <jdh...@ac...> - 2004-02-22 14:04:46
|
>>>>> "katrin" == katrin schenk <sc...@ph...> writes:
katrin> Hi all, I am DESPERATE to use matplotlib on my linux
katrin> box...Here is the problem, according to my linux box,
katrin> Gtk+2.0 and the corresponding libgtk developer tools are
katrin> installed. However, when I try to configure pygtk2.0
katrin> (needed by matplotlib) I get an error saying that gtk+2.0
katrin> is not installed, (I also tried (foolishly) to run a
katrin> matplotlib example file with a gtk backgroud and got a
katrin> "gobject missing" error). Has anyone else had a problem
katrin> like this? Anyone know how to fix?
Hi Katrin,
I saw that you were already getting some good suggestions on the pygtk
list, which I also read. Those are the same things I would suggest
too: try an rpm, if not, make sure your pkgconfig for pygtk is updated
eg, what doed the following reveal?
localhost:~> pkg-config --modversion gtk+-2.0
2.2.1
Even if your RPM installed them, if pkgconfig cannot find them, you'll
have install troubles. You can set the path pkgconfig uses to find
files, eg,
setenv PKG_CONFIG_PATH /usr/local/lib/pkgconfig:/usr/lib/pkgconfig
In this case, you want to make sure the file gtk+-2.0.pc is in your
PKG_CONFIG_PATH path.
But these are all fallback suggestions if the rpm doesn't work for
you. If you have more trouble, it will help also to provide the exact
compiler error.
Good luck. If you figure out what was going wrong and fix it, let me
know and I'll update the website docs.
JDH
|
|
From: katrin s. <sc...@ph...> - 2004-02-22 08:25:54
|
Hi all, I am DESPERATE to use matplotlib on my linux box...Here is the problem, according to my linux box, Gtk+2.0 and the corresponding libgtk developer tools are installed. However, when I try to configure pygtk2.0 (needed by matplotlib) I get an error saying that gtk+2.0 is not installed, (I also tried (foolishly) to run a matplotlib example file with a gtk backgroud and got a "gobject missing" error). Has anyone else had a problem like this? Anyone know how to fix? katrin |
|
From: John H. <jdh...@ac...> - 2004-02-21 14:51:43
|
>>>>> "David" == David ASN <as...@ho...> writes:
David> Hi all, I'm starting to get in matlabplot world :-D Before
David> it I tried chaco but it doesn't work in Linux, so I want to
David> try this. I'm trying to develope an oscilloscope and I
David> need it to embed it into a wx application. i was thinking
David> in derive a class from wxScrolledWindow and create a Figure
David> inside, is it possible?
Is certainly possible. Have you looked at examples/anim.py and
examples/system_monitor.py? These use GTK, but will show you how to
dynamically update your figure. Both WX and GTK have a mainloop,
which probably means you need to define an update function that
updates your plot along the lines of system_monitor, and then pass
that function to an idle handler in wx.
David> I want to know something about the Class Hierarchy in
David> matplotlib, from which class figure derives, which is the
David> 'main' class (Figure, i hope), where is the data stored,...
I assume you are using the latest matplotlib release 0.50. In this
release, there are two important objects for you. The first is
Figure, which is what the figure command creates and it contains all
the axes, plots, etc... This has nothing to do with wx, The second is
FigureCanvasWx. In backend wx, this derives from wxPanel and so is a
wx widget. It contains your figure.
In the matlab interface, you can access all of these attributes as
follows
manager = get_current_fig_manager()
canvas = manager.canvas # in wx mode, this is FigureCanvasWx
figure = canvas.figure # this is the backend independent Figure instance
In you oscilloscope update function, you will probably want to do
something along the lines of
lines = plot(t, y) # the initial plot at time 0
line = lines[0] # a matplotlib.lines.Line2D instance
def update_scope(*args):
# get a new t, y
line.set_data(t, y)
canvas.draw()
# this is a made up function, meaning, tell wx's idle handler to call
# update_scope every 100ms
wx.idle_handler(update_scope, 0.1)
show() # enter the wx mainloop
You don't need to use the matlab interface at all - you can work
directly with the wx widgets if you prefer. See
examples/embedding_in_wx.py
If you run into more trouble, post some code back here and someone can
probably help you out.
Good luck,
JDH
|