You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
(12) |
Sep
(12) |
Oct
(56) |
Nov
(65) |
Dec
(37) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(59) |
Feb
(78) |
Mar
(153) |
Apr
(205) |
May
(184) |
Jun
(123) |
Jul
(171) |
Aug
(156) |
Sep
(190) |
Oct
(120) |
Nov
(154) |
Dec
(223) |
2005 |
Jan
(184) |
Feb
(267) |
Mar
(214) |
Apr
(286) |
May
(320) |
Jun
(299) |
Jul
(348) |
Aug
(283) |
Sep
(355) |
Oct
(293) |
Nov
(232) |
Dec
(203) |
2006 |
Jan
(352) |
Feb
(358) |
Mar
(403) |
Apr
(313) |
May
(165) |
Jun
(281) |
Jul
(316) |
Aug
(228) |
Sep
(279) |
Oct
(243) |
Nov
(315) |
Dec
(345) |
2007 |
Jan
(260) |
Feb
(323) |
Mar
(340) |
Apr
(319) |
May
(290) |
Jun
(296) |
Jul
(221) |
Aug
(292) |
Sep
(242) |
Oct
(248) |
Nov
(242) |
Dec
(332) |
2008 |
Jan
(312) |
Feb
(359) |
Mar
(454) |
Apr
(287) |
May
(340) |
Jun
(450) |
Jul
(403) |
Aug
(324) |
Sep
(349) |
Oct
(385) |
Nov
(363) |
Dec
(437) |
2009 |
Jan
(500) |
Feb
(301) |
Mar
(409) |
Apr
(486) |
May
(545) |
Jun
(391) |
Jul
(518) |
Aug
(497) |
Sep
(492) |
Oct
(429) |
Nov
(357) |
Dec
(310) |
2010 |
Jan
(371) |
Feb
(657) |
Mar
(519) |
Apr
(432) |
May
(312) |
Jun
(416) |
Jul
(477) |
Aug
(386) |
Sep
(419) |
Oct
(435) |
Nov
(320) |
Dec
(202) |
2011 |
Jan
(321) |
Feb
(413) |
Mar
(299) |
Apr
(215) |
May
(284) |
Jun
(203) |
Jul
(207) |
Aug
(314) |
Sep
(321) |
Oct
(259) |
Nov
(347) |
Dec
(209) |
2012 |
Jan
(322) |
Feb
(414) |
Mar
(377) |
Apr
(179) |
May
(173) |
Jun
(234) |
Jul
(295) |
Aug
(239) |
Sep
(276) |
Oct
(355) |
Nov
(144) |
Dec
(108) |
2013 |
Jan
(170) |
Feb
(89) |
Mar
(204) |
Apr
(133) |
May
(142) |
Jun
(89) |
Jul
(160) |
Aug
(180) |
Sep
(69) |
Oct
(136) |
Nov
(83) |
Dec
(32) |
2014 |
Jan
(71) |
Feb
(90) |
Mar
(161) |
Apr
(117) |
May
(78) |
Jun
(94) |
Jul
(60) |
Aug
(83) |
Sep
(102) |
Oct
(132) |
Nov
(154) |
Dec
(96) |
2015 |
Jan
(45) |
Feb
(138) |
Mar
(176) |
Apr
(132) |
May
(119) |
Jun
(124) |
Jul
(77) |
Aug
(31) |
Sep
(34) |
Oct
(22) |
Nov
(23) |
Dec
(9) |
2016 |
Jan
(26) |
Feb
(17) |
Mar
(10) |
Apr
(8) |
May
(4) |
Jun
(8) |
Jul
(6) |
Aug
(5) |
Sep
(9) |
Oct
(4) |
Nov
|
Dec
|
2017 |
Jan
(5) |
Feb
(7) |
Mar
(1) |
Apr
(5) |
May
|
Jun
(3) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1
(1) |
2
(43) |
3
(17) |
4
(12) |
5
(9) |
6
(14) |
7
(8) |
8
|
9
(15) |
10
(16) |
11
(11) |
12
(10) |
13
(20) |
14
(7) |
15
(4) |
16
(16) |
17
(25) |
18
(10) |
19
(27) |
20
(26) |
21
(6) |
22
(20) |
23
(12) |
24
(15) |
25
(22) |
26
(15) |
27
(43) |
28
(8) |
29
(6) |
30
(12) |
|
|
|
|
|
On Mon, Jun 23, 2008 at 6:52 PM, Charlie Moad <cw...@gm...> wrote: > On Thu, Jun 19, 2008 at 10:35 PM, John Hunter <jd...@gm...> wrote: >> >> On Thu, Jun 19, 2008 at 9:19 PM, Charles Moad <cw...@gm...> wrote: >> >> > Seems like that one little fix did the trick. I ran several examples >> > and >> > haven't had any problems. Committed now. >> >> Thanks Charlie! Can you provide some basic instructions for those of >> us on osx how we can enable and test this backend? > > I guess the two option are to set "CocoaAgg" as the default backend in your > rc config or run a script with the "-dCocoaAgg" flag. Works fine for me with Matplotlib 0.98.2. Thanks for the fix. Regards, ismail -- Programmer Excuses number 45: I do object-oriented programming - if the customer objects, I do more programming.
Tony S Yu wrote: > > On Jun 30, 2008, at 11:13 AM, Michael Droettboom wrote: >> transScale is where all of the (optionally) logarithmic >> transformation takes place. I'm surprised >> >> >>> transDesired = self.transScale + self.transLimits >> >> didn't work for going from data to a (0, 0) - (1, 1) bounding box. >> Can you provide a small, yet complete, example that illustrates the >> bug so I can look at it further? > > I tried to put together a simple example showing my problem, but the > example worked properly! Doh! > > It turns out that my problem was specific to using a bounding box as > an input to transform: > > ========= > from numpy.random import rand > import matplotlib.pyplot as plt > > ax = plt.subplot(111) > xy = rand(5,2) > ax.loglog(xy[:, 0], xy[:, 1], 'ro') > > trans = ax.transScale + ax.transLimits > result = trans.transform(ax.dataLim) > ========= > > The above command gives me: > * TypeError:* 'Bbox' object is unsubscriptable > (Note, if I call `plot` instead of `loglog` I don't have problems). > The quick solution is to replace the last line with > > >>> result = trans.transform(ax.dataLim._points) > > I guess I was confused because the transform worked fine with `plot`. > Is the TypeError above expected behavior? > Yes. The "transform" method is meant to take an Nx2 array, it doesn't take a bounding box. I think it probably works with non-log plots only by accident because bounding boxes can cast to arrays in some cases. It may be worth taking that out to avoid confusion, but I'll have to think on it some. Thanks for looking into this! Mike -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA
On Jun 30, 2008, at 11:13 AM, Michael Droettboom wrote: > transScale is where all of the (optionally) logarithmic > transformation takes place. I'm surprised > > >>> transDesired = self.transScale + self.transLimits > > didn't work for going from data to a (0, 0) - (1, 1) bounding box. > Can you provide a small, yet complete, example that illustrates the > bug so I can look at it further? I tried to put together a simple example showing my problem, but the example worked properly! Doh! It turns out that my problem was specific to using a bounding box as an input to transform: ========= from numpy.random import rand import matplotlib.pyplot as plt ax = plt.subplot(111) xy = rand(5,2) ax.loglog(xy[:, 0], xy[:, 1], 'ro') trans = ax.transScale + ax.transLimits result = trans.transform(ax.dataLim) ========= The above command gives me: TypeError: 'Bbox' object is unsubscriptable (Note, if I call `plot` instead of `loglog` I don't have problems). The quick solution is to replace the last line with >>> result = trans.transform(ax.dataLim._points) I guess I was confused because the transform worked fine with `plot`. Is the TypeError above expected behavior? Thanks for your help. -Tony
Tony S Yu wrote: > On Jun 30, 2008, at 10:22 AM, Nihat wrote: > >> ax = gca() >> (x_screen, y_screen) = ax.transData.transform([x[10], y[10]) >> (x10, y10) = ax.transAxes.inverted().transform([x_screen, y_screen]) >> >> Is it the proper way of doing it? Where can I find more info on >> transformations in general? >> > > I'd really be interested to know the answer to this question, too. I > recently wanted to do this exact same transformation. When I tried > > >>> (x10, y10) = ax.transLimits.transform([x[10], y[10]) > > I got the desired input for *linear* data. Looking looking at the > definitions of the axes transforms in the code (Axes class in axes.py) > you see that: > > >>> self.transData = self.transScale + (self.transLimits + > self.transAxes) > > where `self` is the Axes object. It would seem that your sequence of > operations (`transData.transform` followed by > `transAxes.inverted().transform`) should be equivalent to: > > >>> transDesired = self.transScale + self.transLimits > > But, when I tried using this transform, I didn't get the desired > transformation for logarithmic data. > > Any transform experts out there? > transScale is where all of the (optionally) logarithmic transformation takes place. I'm surprised >>> transDesired = self.transScale + self.transLimits didn't work for going from data to a (0, 0) - (1, 1) bounding box. Can you provide a small, yet complete, example that illustrates the bug so I can look at it further? Cheers, Mike -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA
Nihat wrote: > Hello all, > > I believe it is an easy thing to do but I haven't figured out how to > convert between coordinate systems using transData or transAxes. > > x = numpy.arange(0.0, 1.0+0.01, 0.01) > y = numpy.cos(2*2*numpy.pi*x) > pylab.plot(x, y) > > I want to transform y1 to axis scale between 0 and 1. > Also, I want to transform a value in axis scale, say 0.25, to a > corresponding y value in the data coordinates. > > I used > > ax = gca() > (x_screen, y_screen) = ax.transData.transform([x[10], y[10]) > (x10, y10) = ax.transAxes.inverted().transform([x_screen, y_screen]) > > Is it the proper way of doing it? Where can I find more info on > transformations in general? The new transformations infrastructure is documented in the new docs (which are still in progress...) http://matplotlib.sourceforge.net/doc/html/devel/transformations.html This document, however, doesn't describe what things like transData and transAxes are defined to be. That would probably be a useful thing to document. transAxes places the axes within the figure. transData maps from the data's coordinates all the way to the figure space which is (0, 0) to (1, 1). transData is a composite of the scale (for eg. logarithm), the limits (the currently "zoomed" in portion of the data), and the transAxes. It's the "fast lane" between the data and the screen. In your example, if you expect to go between data and screen coordinates, you would do: (x_screen, y_screen) = ax.transData.transform([x[10], y[10]) (x10, y10) = ax.transData.inverted().transform([x_screen, y_screen]) Note, we use transData both ways. > > Currently I am doing it manually scaling things with axis limits, > etc. I believe the neat thing is to use the transforms. Can somebody > explain me how it is done with transforms? I am using v0.98.1. I hope that answers your question, but it's not entirely clear what you would like to do. Please ask further if the above didn't help. Cheers, Mike
On Jun 30, 2008, at 10:22 AM, Nihat wrote: > ax = gca() > (x_screen, y_screen) = ax.transData.transform([x[10], y[10]) > (x10, y10) = ax.transAxes.inverted().transform([x_screen, y_screen]) > > Is it the proper way of doing it? Where can I find more info on > transformations in general? I'd really be interested to know the answer to this question, too. I recently wanted to do this exact same transformation. When I tried >>> (x10, y10) = ax.transLimits.transform([x[10], y[10]) I got the desired input for *linear* data. Looking looking at the definitions of the axes transforms in the code (Axes class in axes.py) you see that: >>> self.transData = self.transScale + (self.transLimits + self.transAxes) where `self` is the Axes object. It would seem that your sequence of operations (`transData.transform` followed by `transAxes.inverted().transform`) should be equivalent to: >>> transDesired = self.transScale + self.transLimits But, when I tried using this transform, I didn't get the desired transformation for logarithmic data. Any transform experts out there? -Tony
Hello all, I believe it is an easy thing to do but I haven't figured out how to convert between coordinate systems using transData or transAxes. x = numpy.arange(0.0, 1.0+0.01, 0.01) y = numpy.cos(2*2*numpy.pi*x) pylab.plot(x, y) I want to transform y1 to axis scale between 0 and 1. Also, I want to transform a value in axis scale, say 0.25, to a corresponding y value in the data coordinates. I used ax = gca() (x_screen, y_screen) = ax.transData.transform([x[10], y[10]) (x10, y10) = ax.transAxes.inverted().transform([x_screen, y_screen]) Is it the proper way of doing it? Where can I find more info on transformations in general? Currently I am doing it manually scaling things with axis limits, etc. I believe the neat thing is to use the transforms. Can somebody explain me how it is done with transforms? I am using v0.98.1. Thanks in advance, Nihat
On Mon, Jun 30, 2008 at 3:32 AM, Andrea Gavana <and...@gm...> wrote: > It seems like Michael changes were reverted back to the previous > behaviour. I have scanned the matplotlib-devel archives and found the > reason. Even if the message says that text.py is fixed, I still see > the problem I was having in dashpointlabel.py example using the latest > text.py from SVN. I am probably missing something... The changes that fixed dashpointlabel broke plain-vanilla tick layout, which also use a TextWithDash. So I temporarily reverted them until we can get a fix that works with all the examples. Sorry for the confusion. JDH
On Monday 30 June 2008 04:18:14 sa6113 wrote: > I want to save an animation in avi format by python code, would you please > help me to start in this way? At the FAQ page, http://matplotlib.sourceforge.net/faq.html , there is a section titled "How do I make a movie with matplotlib?"
Hi All, On 6/27/08, Andrea Gavana wrote: > Hi Michael, > > On Fri, Jun 27, 2008 at 7:54 PM, Michael Droettboom wrote: > > Andrea Gavana wrote: > >> > >> 2) The dashed text positioning is wrong, you can see it by running > >> dashpointlabel.py in the > >> matplotlib_examples_0.98.1\examples\pylab_examples: the position of > >> the values should be at the other end of the dash, not over the > >> plotted point. > >> > > > > I believe I have this fixed in SVN. Please kick the tires and let me know > > if you still have problems. It seems like Michael changes were reverted back to the previous behaviour. I have scanned the matplotlib-devel archives and found the reason. Even if the message says that text.py is fixed, I still see the problem I was having in dashpointlabel.py example using the latest text.py from SVN. I am probably missing something... Andrea. "Imagination Is The Only Weapon In The War Against Reality." http://xoomer.alice.it/infinity77/
I want to save an animation in avi format by python code, would you please help me to start in this way? -- View this message in context: http://www.nabble.com/how-to-save-animation-tp18190767p18190767.html Sent from the matplotlib - users mailing list archive at Nabble.com.
Hi. A couple of questions about `scatter`: Q1 ==== The bounding box `axes.dataLim` increases in size when calling scatter(x, y) compared to plot(x, y) (for the same x, y data, of course). I think this change is due to the size of the markers being added to the data limits (not sure if this is true). Is there an easy way to get the same data limits I would have for a call to `plot`? Q2 ==== Is there a way to get the data from the axes of a scatter plot? Initially I thought I could get it with: >>> for collection in ax.collections: >>> for path in collection._paths: >>> print path.vertices But this seems to be the path that draws the scatter markers. Any ideas? Frame Class ========== Finally, if anyone is interested, I'm playing around with a Frame class for `axes.frame`. This class adds customizable axes frames similar to the topic of this thread: http://sourceforge.net/mailarchive/message.php?msg_id=87d57vjgye.fsf%40peds-pc311.bsd.uchicago.edu In this older thread, the SAGE axes frames were criticized for not being flexible enough. I've tried to make this class as general as possible (within my ability:). As an example of the flexibility of this Frame class, I've added some Tufte-style frames similar to: http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/ To the developers on this thread: If there's anything I could do to make the attached Frame class more flexible (and more suitable for possible inclusion into MPL), I'd be happy to get some feedback. Current Limitations: ================ * the frame can only be placed on the borders of the axes (mainly because I don't know how to move the tickers anywhere else). * RangeFrame only works with linear data (I'm not sure how to use the `axes.transScale` to properly transform the data) * RangeFrame and DashDotFrame don't work properly with `scatter` (because of the questions in this post). The frame class itself isn't too long, but I got a little carried away adding in extra crap. Sorry for the long, rambling email.;) -Tony
sandric ionut wrote: > Hello: > > I am trying to diplay legend of X and Y axes like: legend(('label X', > 'label Y'), isaxes=True) > and I get an error<type 'exceptions.TypeError'>: __init__() got an > unexpected keyword argument 'is > axes' > > How can I display labels for X and Y axes and a Title for the plot If I understand you correctly, what I think you want are: title() xlabel() ylabel() Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma
Hello: I am trying to diplay legend of X and Y axes like: legend(('label X', 'label Y'), isaxes=True) and I get an error<type 'exceptions.TypeError'>: __init__() got an unexpected keyword argument 'is axes' How can I display labels for X and Y axes and a Title for the plot Thank you, Ionut
On Sun, Jun 29, 2008 at 22:26, John Hunter <jd...@gm...> wrote: > gcf is written to return the last figure activated or created by the > "figure" command. It would be fairly trivial to add support for > making the last clicked figure the active one, but it seems like a > reasonable thing to do (does anyone know what matlab does?). Since > gcf emulates a matlab function, I'd like to hew fairly closely to > that. in Matlab, gcf() returns a handle to the last activated figure, either by click or programmatically (e.g. "figure(1)", etc) Cheers, Vincent
On Sun, Jun 29, 2008 at 2:09 PM, sordnay <so...@gm...> wrote: > > Hi all, > I have a little problem, I've been unable to solve, maybe someone can help > me out. > I have several figures opened, but when I use gcf() I get handle of the last > opened figure instead of the active one... > i.e. when intercepting a button_press_event, gcf().number returns the number > of the last figure, not the number of the figure over which I clicked > (different from last one gcf is written to return the last figure activated or created by the "figure" command. It would be fairly trivial to add support for making the last clicked figure the active one, but it seems like a reasonable thing to do (does anyone know what matlab does?). Since gcf emulates a matlab function, I'd like to hew fairly closely to that. JDH
Hi all, I have a little problem, I've been unable to solve, maybe someone can help me out. I have several figures opened, but when I use gcf() I get handle of the last opened figure instead of the active one... i.e. when intercepting a button_press_event, gcf().number returns the number of the last figure, not the number of the figure over which I clicked (different from last one). How can I force that the gcf() to return handle to the active figure? Is there any event trigered when a figure gets the focus? I don't think this should be the normal behaviour, but I have review my code and I haven't found how could I be forcing this... any idea about how to debug this? or if this is a bug? some data that may help: matplotlib version 0.98.1 interactive is True units is False platform is win32 numerix numpy 1.1.0 backend TkAgg version 8.4 -- View this message in context: http://www.nabble.com/gcf%28%29-problem-tp18184245p18184245.html Sent from the matplotlib - users mailing list archive at Nabble.com.
Hello all, I believe it is an easy thing to do but I haven't figured out how to convert between coordinate systems using transData or transAxes. Here is the simple_plot.py import numpy import pylab x = numpy.arange(0.0, 1.0+0.01, 0.01) y = numpy.cos(2*2*numpy.pi*x) pylab.plot(x, y) Here I want to transform y1 to axis scale between 0 and 1. Also, I want to transform axis scale, say 0.25, to a corresponding y value in the data coordinates. pylab.show() Currently I am doing it manually scaling things with axis limits, etc. I believe the neat thing is to use the transforms api. Can somebody explain me how it is done with transforms? I am using 0.98.1. Thanks in advance, Nihat
Thank you John: I have exported the excel file in csv format and imported as you showed me. When I try to create a plot with the command: plot(a[isfinite(b)],b[isfinite(b)]), I get an error message: index should be int. When I look at the second column from the csv file I see that the values are imported like '23.5' and not like 23.5 and this causes that error. How can I imported the values from all columns without '' Ionut ----- Original Message ---- From: John Hunter <jd...@gm...> To: sandric ionut <san...@ya...> Cc: Darren Dale <dsd...@gm...>; Matplotlib <mat...@li...> Sent: Saturday, June 28, 2008 5:19:42 PM Subject: Re: [Matplotlib-users] plot xy data with missing values On Sat, Jun 28, 2008 at 9:16 AM, sandric ionut <san...@ya...> wrote: > Thank you Darren: > > The second example is what I need. I have made some test and it looks OK > I have my data in excel. How can I read from excel files? Is it a special > tool? If you save as csv, you can use matplotlib.mlab.csv2rec to get your data back as a record array. See http://matplotlib.sourceforge.net/examples/pylab_examples/loadrec.py JDH
On Sat, Jun 28, 2008 at 9:16 AM, sandric ionut <san...@ya...> wrote: > Thank you Darren: > > The second example is what I need. I have made some test and it looks OK > I have my data in excel. How can I read from excel files? Is it a special > tool? If you save as csv, you can use matplotlib.mlab.csv2rec to get your data back as a record array. See http://matplotlib.sourceforge.net/examples/pylab_examples/loadrec.py JDH
Thank you Darren: The second example is what I need. I have made some test and it looks OK I have my data in excel. How can I read from excel files? Is it a special tool? Thank you again, Ionut ----- Original Message ---- From: Darren Dale <dsd...@gm...> To: mat...@li... Cc: sandric ionut <san...@ya...> Sent: Saturday, June 28, 2008 3:12:48 PM Subject: Re: [Matplotlib-users] plot xy data with missing values Hi Sandric, On Saturday 28 June 2008 04:31:19 sandric ionut wrote: > Hello: > I want to draw a multiple line plot using the data from the bottom of the > email, but I get a error message: <type 'exceptions.AssertionError'>: > Dimensions of x and y are incompatible, which is normal, because the number > of values on x are not equal with the number of values on y. The empty > spaces from the table are missing values (which were not measured for a > certain moment in time) and I can't replace them with any other values It is more robust to use a NaN to represent a missed data point. Then when you load your data, your arrays will be the same length. There is already some support for plotting data with NaNs in it, but the preferred solution is to take a further step and use a masked array to mask your missing values. For example, at the ipython -pylab prompt: time=array([1,2,3,4,5]) f1=array([1,2,NaN,4,5]) f1_m=ma.masked_where(isnan(f1),f1) plot(f1_m) That will give you a line with a break in it at the missed observation. > Is it possible to interpolate the missing values or to the draw the plot as: > on x the time values and on y the f1,f2,f3, represented as a continuous > line If you do not want breaks in your line due to the missed observation, you could interpolate the missing values yourself, but if you just want a continuous line through whatever data you have, you could use numpy's flexible indexing and do: plot(time[isfinite(f1)], f1[isfinite(f1)]) > The plot should look like the image attached, but with a line crossing > all the points for f1, f2, f3 > > time f1 f2 f3 > 30 3.39 13.55 > 33 16.94 > 35 6.78 > 36 10.16 > 37 10.16 13.55 > 38 13.55 > 39 16.94 16.94 > 40 20.33 > 41 20.33 20.33 > 42 23.71 > 44 23.71 All of my suggestions are based on the assumption that you have recorded missing values as NaNs. If you can't reformat your data, or insert NaN's for missing values when you load it, I'm not sure how to help. Darren
Hi Sandric, On Saturday 28 June 2008 04:31:19 sandric ionut wrote: > Hello: > I want to draw a multiple line plot using the data from the bottom of the > email, but I get a error message: <type 'exceptions.AssertionError'>: > Dimensions of x and y are incompatible, which is normal, because the number > of values on x are not equal with the number of values on y. The empty > spaces from the table are missing values (which were not measured for a > certain moment in time) and I can't replace them with any other values It is more robust to use a NaN to represent a missed data point. Then when you load your data, your arrays will be the same length. There is already some support for plotting data with NaNs in it, but the preferred solution is to take a further step and use a masked array to mask your missing values. For example, at the ipython -pylab prompt: time=array([1,2,3,4,5]) f1=array([1,2,NaN,4,5]) f1_m=ma.masked_where(isnan(f1),f1) plot(f1_m) That will give you a line with a break in it at the missed observation. > Is it possible to interpolate the missing values or to the draw the plot as: > on x the time values and on y the f1,f2,f3, represented as a continuous > line If you do not want breaks in your line due to the missed observation, you could interpolate the missing values yourself, but if you just want a continuous line through whatever data you have, you could use numpy's flexible indexing and do: plot(time[isfinite(f1)], f1[isfinite(f1)]) > The plot should look like the image attached, but with a line crossing > all the points for f1, f2, f3 > > time f1 f2 f3 > 30 3.39 13.55 > 33 16.94 > 35 6.78 > 36 10.16 > 37 10.16 13.55 > 38 13.55 > 39 16.94 16.94 > 40 20.33 > 41 20.33 20.33 > 42 23.71 > 44 23.71 All of my suggestions are based on the assumption that you have recorded missing values as NaNs. If you can't reformat your data, or insert NaN's for missing values when you load it, I'm not sure how to help. Darren
I kind of figured that was the case, upon looking at the code and realizing that the only commonality was in the broad purpose of both representations. Otherwise, there's really no commonality in the details or implementation. I just wanted to see what the "experts" thought before I embarked. Between this and getting a working SkewT and the meteorological community will be all set! Ryan Eric Firing wrote: > Ryan, > > Quiver is not quite the right starting point, although parts of it might > work--and actually it could be bent into shape. The problem with > attempting a direct transformation of arrows into wind barbs is that the > arrows are formed with a fixed number of vertices, so everything is done > with nice, regular ndarrays. The natural way to make wind barbs would > be with the number of vertices depending on the wind speed. One could > probably get around this by using the maximum number of vertices, > corresponding to the max wind speed, and then letting some of the barbs > be zero-length. > > Another difference might be that wind barbs would best be drawn with > lines, not with patches. > > It might be worthwhile to start with the Quiver class and modify it as > needed. I certainly would not try to include Windbarb functionality as > an option or extension of Quiver. At most, one might be able to pull > some common functionality out into a base class for both. > > Something I keep wanting to get to is an ellipse variant of quiver; that > would be much closer to the present quiver than a windbarb version would. > > In any case, if you can come up with a good windbarb class, that would > be great. I expect Jeff Whitaker would like to add that to basemap, too. > > Eric > > > Ryan May wrote: >> Hi, >> >> Has anyone ever tried to modify quiver to change away from plotting >> arrows? In my quest to make matplotlib useful the meteorological >> community at large, I'm trying to be able to plot what we refer to as >> wind barbs. Basically, instead of an arrow whose size indicates the >> magnitude of the vector field, a wind barb consists of a line whose >> alignment indicates the direction of the vector field (like the arrow) >> and has a number of lines or triangles along this shaft to indicate >> wind speed. It's a little odd and domain specific, but it's a must >> for the meteorologist. We like it because, unlike the arrows, you can >> pick off the actual wind speed at a point. See here for an example: >> >> http://www.rap.ucar.edu/weather/info/about_windbarb.html >> http://www.rap.ucar.edu/weather/surface/displaySfc.php?region=abi&endDate=20080627&endTime=-1&duration=0 >> >> >> Has anyone ever tried this (I'm pretty sure I know the answer)? >> Failing that, can anyone give me an idea of how difficult it might be >> for me to tweak quiver to do this? >> >> Thanks, >> >> Ryan >> > -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma
Ryan, Quiver is not quite the right starting point, although parts of it might work--and actually it could be bent into shape. The problem with attempting a direct transformation of arrows into wind barbs is that the arrows are formed with a fixed number of vertices, so everything is done with nice, regular ndarrays. The natural way to make wind barbs would be with the number of vertices depending on the wind speed. One could probably get around this by using the maximum number of vertices, corresponding to the max wind speed, and then letting some of the barbs be zero-length. Another difference might be that wind barbs would best be drawn with lines, not with patches. It might be worthwhile to start with the Quiver class and modify it as needed. I certainly would not try to include Windbarb functionality as an option or extension of Quiver. At most, one might be able to pull some common functionality out into a base class for both. Something I keep wanting to get to is an ellipse variant of quiver; that would be much closer to the present quiver than a windbarb version would. In any case, if you can come up with a good windbarb class, that would be great. I expect Jeff Whitaker would like to add that to basemap, too. Eric Ryan May wrote: > Hi, > > Has anyone ever tried to modify quiver to change away from plotting > arrows? In my quest to make matplotlib useful the meteorological > community at large, I'm trying to be able to plot what we refer to as > wind barbs. Basically, instead of an arrow whose size indicates the > magnitude of the vector field, a wind barb consists of a line whose > alignment indicates the direction of the vector field (like the arrow) > and has a number of lines or triangles along this shaft to indicate wind > speed. It's a little odd and domain specific, but it's a must for the > meteorologist. We like it because, unlike the arrows, you can pick off > the actual wind speed at a point. See here for an example: > > http://www.rap.ucar.edu/weather/info/about_windbarb.html > http://www.rap.ucar.edu/weather/surface/displaySfc.php?region=abi&endDate=20080627&endTime=-1&duration=0 > > Has anyone ever tried this (I'm pretty sure I know the answer)? Failing > that, can anyone give me an idea of how difficult it might be for me to > tweak quiver to do this? > > Thanks, > > Ryan >
Hi, Has anyone ever tried to modify quiver to change away from plotting arrows? In my quest to make matplotlib useful the meteorological community at large, I'm trying to be able to plot what we refer to as wind barbs. Basically, instead of an arrow whose size indicates the magnitude of the vector field, a wind barb consists of a line whose alignment indicates the direction of the vector field (like the arrow) and has a number of lines or triangles along this shaft to indicate wind speed. It's a little odd and domain specific, but it's a must for the meteorologist. We like it because, unlike the arrows, you can pick off the actual wind speed at a point. See here for an example: http://www.rap.ucar.edu/weather/info/about_windbarb.html http://www.rap.ucar.edu/weather/surface/displaySfc.php?region=abi&endDate=20080627&endTime=-1&duration=0 Has anyone ever tried this (I'm pretty sure I know the answer)? Failing that, can anyone give me an idea of how difficult it might be for me to tweak quiver to do this? Thanks, Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma