SourceForge logo
SourceForge logo
Menu

matplotlib-users — Discussion related to using matplotlib

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
3
4
5
(10)
6
7
(3)
8
(5)
9
10
(3)
11
(1)
12
(16)
13
(1)
14
15
(5)
16
(5)
17
(4)
18
(2)
19
(9)
20
(4)
21
(2)
22
23
(1)
24
25
(4)
26
(6)
27
(9)
28
(1)
29
(2)
30





Showing results of 94

<< < 1 2 3 4 (Page 4 of 4)
From: C M <cmp...@gm...> - 2014年06月08日 17:16:23
Great, thanks for all the help!
On Sun, Jun 8, 2014 at 12:09 AM, Eric Firing <ef...@ha...> wrote:
> On 2014年06月07日, 5:03 PM, C M wrote:
> >
> >
> >
> > On Sat, Jun 7, 2014 at 10:18 PM, Eric Firing <ef...@ha...
> > <mailto:ef...@ha...>> wrote:
> >
> > On 2014年06月07日, 4:12 PM, C M wrote:
> > > I had been using a custom function (written originally by
> > Jae-Joon and
> > > modified a little by me...quite a long time back now) that was
> > working
> > > to allow point picking of markers, but *not* the line connecting
> > them.
> > > However, I've now discovered with the help of this list that the
> > > function I am using has the disadvantage that if there are more
> > than 100
> > > data points, I can't get the correct index for the picked marker
> > (turned
> > > out not to be a mpl bug:
> > > https://github.com/matplotlib/matplotlib/issues/3124).
> > >
> > > So I can just use the default pick event, but then the user can
> pick
> > > anywhere on the connecting line, which is meaningless in this
> > use--so I
> > > don't want them to be able to pick on the connecting line.
> >
> > Why not just execute plot twice, once with the markers, with picking
> > activated, and a second time with the line, with picking inactive
> (the
> > default).
> >
> > Eric
> >
> >
> > That is so simple, and I hadn't thought of it at all. Thank you! My
> > only concerns would be for slowness of plotting if there are a lot of
> > points and just code simplicity, and so if there could be some other way
> > with a custom function for the picker that would do this, I would
> > probably prefer that. But maybe neither of these are particularly
> > important concerns.
>
> I think you will find plotting two lines instead of one is not at all
> prohibitive with respect to speed; especially when you are zooming, so
> that the number of points being plotted is not so large.
>
> As for simplicity, two calls to a standard function with almost the same
> arguments beats an arcane special-purpose function!
>
> If you want to make your own picker, though, it looks like you could use
> a slight modification of Line2D.contains(); it would be just a matter of
> copying it and replacing this section
>
> # Check for collision
> if self._linestyle in ['None', None]:
> # If no line, return the nearby point(s)
> d = (xt - mouseevent.x) ** 2 + (yt - mouseevent.y) ** 2
> ind, = np.nonzero(np.less_equal(d, pixels ** 2))
> else:
> # If line, return the nearby segment(s)
> ind = segment_hits(mouseevent.x, mouseevent.y, xt, yt,
> pixels)
>
>
> with the code in the first option--that is, without checking the
> _linestyle. You would also need to remove the first two lines after the
> docstring.
>
> Eric
>
> >
> > Che
> >
> >
> >
> >
> >
> >
> ------------------------------------------------------------------------------
> > Learn Graph Databases - Download FREE O'Reilly Book
> > "Graph Databases" is the definitive new guide to graph databases and
> their
> > applications. Written by three acclaimed leaders in the field,
> > this first edition is now available. Download your free book today!
> > http://p.sf.net/sfu/NeoTech
> >
> >
> >
> > _______________________________________________
> > Matplotlib-users mailing list
> > Mat...@li...
> > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> >
>
>
>
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and their
> applications. Written by three acclaimed leaders in the field,
> this first edition is now available. Download your free book today!
> http://p.sf.net/sfu/NeoTech
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
From: Eric F. <ef...@ha...> - 2014年06月08日 04:10:10
On 2014年06月07日, 5:03 PM, C M wrote:
>
>
>
> On Sat, Jun 7, 2014 at 10:18 PM, Eric Firing <ef...@ha...
> <mailto:ef...@ha...>> wrote:
>
> On 2014年06月07日, 4:12 PM, C M wrote:
> > I had been using a custom function (written originally by
> Jae-Joon and
> > modified a little by me...quite a long time back now) that was
> working
> > to allow point picking of markers, but *not* the line connecting
> them.
> > However, I've now discovered with the help of this list that the
> > function I am using has the disadvantage that if there are more
> than 100
> > data points, I can't get the correct index for the picked marker
> (turned
> > out not to be a mpl bug:
> > https://github.com/matplotlib/matplotlib/issues/3124).
> >
> > So I can just use the default pick event, but then the user can pick
> > anywhere on the connecting line, which is meaningless in this
> use--so I
> > don't want them to be able to pick on the connecting line.
>
> Why not just execute plot twice, once with the markers, with picking
> activated, and a second time with the line, with picking inactive (the
> default).
>
> Eric
>
>
> That is so simple, and I hadn't thought of it at all. Thank you! My
> only concerns would be for slowness of plotting if there are a lot of
> points and just code simplicity, and so if there could be some other way
> with a custom function for the picker that would do this, I would
> probably prefer that. But maybe neither of these are particularly
> important concerns.
I think you will find plotting two lines instead of one is not at all 
prohibitive with respect to speed; especially when you are zooming, so 
that the number of points being plotted is not so large.
As for simplicity, two calls to a standard function with almost the same 
arguments beats an arcane special-purpose function!
If you want to make your own picker, though, it looks like you could use 
a slight modification of Line2D.contains(); it would be just a matter of 
copying it and replacing this section
 # Check for collision
 if self._linestyle in ['None', None]:
 # If no line, return the nearby point(s)
 d = (xt - mouseevent.x) ** 2 + (yt - mouseevent.y) ** 2
 ind, = np.nonzero(np.less_equal(d, pixels ** 2))
 else:
 # If line, return the nearby segment(s)
 ind = segment_hits(mouseevent.x, mouseevent.y, xt, yt, 
pixels)
with the code in the first option--that is, without checking the 
_linestyle. You would also need to remove the first two lines after the 
docstring.
Eric
>
> Che
>
>
>
>
>
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and their
> applications. Written by three acclaimed leaders in the field,
> this first edition is now available. Download your free book today!
> http://p.sf.net/sfu/NeoTech
>
>
>
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
From: C M <cmp...@gm...> - 2014年06月08日 03:04:03
On Sat, Jun 7, 2014 at 10:18 PM, Eric Firing <ef...@ha...> wrote:
> On 2014年06月07日, 4:12 PM, C M wrote:
> > I had been using a custom function (written originally by Jae-Joon and
> > modified a little by me...quite a long time back now) that was working
> > to allow point picking of markers, but *not* the line connecting them.
> > However, I've now discovered with the help of this list that the
> > function I am using has the disadvantage that if there are more than 100
> > data points, I can't get the correct index for the picked marker (turned
> > out not to be a mpl bug:
> > https://github.com/matplotlib/matplotlib/issues/3124).
> >
> > So I can just use the default pick event, but then the user can pick
> > anywhere on the connecting line, which is meaningless in this use--so I
> > don't want them to be able to pick on the connecting line.
>
> Why not just execute plot twice, once with the markers, with picking
> activated, and a second time with the line, with picking inactive (the
> default).
>
> Eric
>
That is so simple, and I hadn't thought of it at all. Thank you! My only
concerns would be for slowness of plotting if there are a lot of points and
just code simplicity, and so if there could be some other way with a custom
function for the picker that would do this, I would probably prefer that.
But maybe neither of these are particularly important concerns.
Che
From: Eric F. <ef...@ha...> - 2014年06月08日 02:18:54
On 2014年06月07日, 4:12 PM, C M wrote:
> I had been using a custom function (written originally by Jae-Joon and
> modified a little by me...quite a long time back now) that was working
> to allow point picking of markers, but *not* the line connecting them.
> However, I've now discovered with the help of this list that the
> function I am using has the disadvantage that if there are more than 100
> data points, I can't get the correct index for the picked marker (turned
> out not to be a mpl bug:
> https://github.com/matplotlib/matplotlib/issues/3124).
>
> So I can just use the default pick event, but then the user can pick
> anywhere on the connecting line, which is meaningless in this use--so I
> don't want them to be able to pick on the connecting line.
Why not just execute plot twice, once with the markers, with picking 
activated, and a second time with the line, with picking inactive (the 
default).
Eric
>
> My goal is to have a custom function that will serve *both* purposes:
> allow picking the markers only, not the line, of a set of data of any
> length while returning the correct index of that marker/data point. But
> the code in the custom function is mostly above my head, was written for
> mpl 0.99 or so, and I don't know how to modify it to get both purposes
> achieved.
>
> I attach the current sample again, with the problematic custom picker
> function, "contains_points()". Thanks for any suggestions or help.
>
> Che
>
>
>
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and their
> applications. Written by three acclaimed leaders in the field,
> this first edition is now available. Download your free book today!
> http://p.sf.net/sfu/NeoTech
>
>
>
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
From: C M <cmp...@gm...> - 2014年06月08日 02:12:33
I had been using a custom function (written originally by Jae-Joon and
modified a little by me...quite a long time back now) that was working to
allow point picking of markers, but *not* the line connecting them.
However, I've now discovered with the help of this list that the function I
am using has the disadvantage that if there are more than 100 data points,
I can't get the correct index for the picked marker (turned out not to be a
mpl bug: https://github.com/matplotlib/matplotlib/issues/3124).
So I can just use the default pick event, but then the user can pick
anywhere on the connecting line, which is meaningless in this use--so I
don't want them to be able to pick on the connecting line.
My goal is to have a custom function that will serve *both* purposes:
allow picking the markers only, not the line, of a set of data of any
length while returning the correct index of that marker/data point. But
the code in the custom function is mostly above my head, was written for
mpl 0.99 or so, and I don't know how to modify it to get both purposes
achieved.
I attach the current sample again, with the problematic custom picker
function, "contains_points()". Thanks for any suggestions or help.
Che
From: C M <cmp...@gm...> - 2014年06月07日 21:34:19
On Sat, Jun 7, 2014 at 4:02 PM, Benjamin Root <ben...@ou...> wrote:
> Thanks for the example script. I think I have a clue now what is happening.
>
Thank you for the quick reply.
> If one were to also print out the length of the "d" array, you will find
> that it is significantly shorter than when you aren't zoomed (I am getting
> a length of 7 when it should be 155). But it isn't truncated for the other
> dataset (which is of length 62). This makes me suspect that there is some
> threshold being triggered here (possibly around 128?).
>
I've tested it, and it seems that threshold number is 100. If the dataset
has 100 points, the zooming doesn't affect the index. If it has 101 or
more (I guess...I didn't test it in any comprehensive way), I get the
error.
I think at this point, you should definitely file a bug report.
>
 I have filed a bug report:
https://github.com/matplotlib/matplotlib/issues/3124
And I made it such that there is just the one data set and you can truncate
it to however many points you want, with the direction being to try 101
(which it is set to initially) and then try 100 or less.
Che
From: Benjamin R. <ben...@ou...> - 2014年06月07日 20:02:44
Thanks for the example script. I think I have a clue now what is happening.
If one were to also print out the length of the "d" array, you will find
that it is significantly shorter than when you aren't zoomed (I am getting
a length of 7 when it should be 155). But it isn't truncated for the other
dataset (which is of length 62). This makes me suspect that there is some
threshold being triggered here (possibly around 128?). I know there is such
a threshold for Paths for path simplification, but my tests turning it off
do not seem to make a difference. So, perhaps this might be related to
clipping?
I think at this point, you should definitely file a bug report.
Cheers!
Ben Root
On Sat, Jun 7, 2014 at 3:19 PM, C M <cmp...@gm...> wrote:
> Hello again. This is follow-up on this 9 month old thread (I left this
> issue for a while and am now returning to it).
>
> I upgraded to the latest stable version of Matplotlib, 1.3.1, and tested
> and I am still getting the exact same confusing problem.
>
> Now I also have a small runnable test script that demonstrates this
> problem, from IDLE using Python 2.7 and Matplotlib 1.3.1.
>
> Attached is the script. If you run it as is, it will show a plot. Click
> on the last point (which is obviously higher than the rest) and note the
> index number that is printed in the IDLE prompt. It should say "index is:
> [154]". But now zoom the plot tightly around that last point, and click on
> it again. Now it will report that the index is much smaller (depending on
> how tightly you zoomed), down to "index is: [1]". This is the problem.
>
> What's critical to point out is: this only occurs with *this* data. To
> show that, go to the script and comment out the line near the end that
> starts with "plt.plot(bad_final_dates," and comment in the one below it,
> that starts with "plt.plot(good_final_dates,". Run the script again, and
> repeat the process above. You'll find that zooming does not affect the
> index number--which is the correct behavior.
>
> The contains_points() function was something I got on this mailing list
> from Jae-Joon some years back, and it is above my level of understanding,
> and it's possible I goofed something up in there.
>
> I'm really puzzled why one set of data doesn't have this problem and
> another one does. Any suggestions for what's wrong greatly appreciated.
>
> Thanks,
> Che
>
>
> On Mon, Sep 16, 2013 at 9:15 AM, Benjamin Root <ben...@ou...> wrote:
>
>>
>>
>>
>> On Sun, Sep 15, 2013 at 11:59 PM, C M <cmp...@gm...> wrote:
>>
>>> Just a follow-up on this problem...
>>>
>>> I've found now that the index is only off if the plot is zoomed, and in
>>> the following way. When I zoom, the first point that is visible in the
>>> plot window will have index = 0, the next point will have index = 1, and so
>>> forth. If I zoom another section of the points, the indices are "reset" in
>>> this same way.
>>>
>>> What's really bizarre is that this is only occurring on one plot. When
>>> I try to reproduce the problem on other plots (so far at least), I can't.
>>>
>>> Any suggestions for how to chase this down would be very welcome.
>>>
>>> Thanks.
>>>
>>>
>> That is a very useful observation. I am not very familiar with the artist
>> picking code, but if I have to guess, I would wonder if indices are being
>> determined from a path created *after* clip_to_rect() is used internally.
>> Given that you are having difficulties in reproducing this issue in other
>> plots, I would suggest trying to pare down your badly behaving code as much
>> as you can and post it here. Furthermore, it would also be useful to
>> determine if the issue still occurs in v1.3 or in the master branch.
>>
>> Cheers!
>> Ben Root
>>
>
>
>
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and their
> applications. Written by three acclaimed leaders in the field,
> this first edition is now available. Download your free book today!
> http://p.sf.net/sfu/NeoTech
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>
Hello again. This is follow-up on this 9 month old thread (I left this
issue for a while and am now returning to it).
I upgraded to the latest stable version of Matplotlib, 1.3.1, and tested
and I am still getting the exact same confusing problem.
Now I also have a small runnable test script that demonstrates this
problem, from IDLE using Python 2.7 and Matplotlib 1.3.1.
Attached is the script. If you run it as is, it will show a plot. Click on
the last point (which is obviously higher than the rest) and note the index
number that is printed in the IDLE prompt. It should say "index is:
[154]". But now zoom the plot tightly around that last point, and click on
it again. Now it will report that the index is much smaller (depending on
how tightly you zoomed), down to "index is: [1]". This is the problem.
What's critical to point out is: this only occurs with *this* data. To
show that, go to the script and comment out the line near the end that
starts with "plt.plot(bad_final_dates," and comment in the one below it,
that starts with "plt.plot(good_final_dates,". Run the script again, and
repeat the process above. You'll find that zooming does not affect the
index number--which is the correct behavior.
The contains_points() function was something I got on this mailing list
from Jae-Joon some years back, and it is above my level of understanding,
and it's possible I goofed something up in there.
I'm really puzzled why one set of data doesn't have this problem and
another one does. Any suggestions for what's wrong greatly appreciated.
Thanks,
Che
On Mon, Sep 16, 2013 at 9:15 AM, Benjamin Root <ben...@ou...> wrote:
>
>
>
> On Sun, Sep 15, 2013 at 11:59 PM, C M <cmp...@gm...> wrote:
>
>> Just a follow-up on this problem...
>>
>> I've found now that the index is only off if the plot is zoomed, and in
>> the following way. When I zoom, the first point that is visible in the
>> plot window will have index = 0, the next point will have index = 1, and so
>> forth. If I zoom another section of the points, the indices are "reset" in
>> this same way.
>>
>> What's really bizarre is that this is only occurring on one plot. When I
>> try to reproduce the problem on other plots (so far at least), I can't.
>>
>> Any suggestions for how to chase this down would be very welcome.
>>
>> Thanks.
>>
>>
> That is a very useful observation. I am not very familiar with the artist
> picking code, but if I have to guess, I would wonder if indices are being
> determined from a path created *after* clip_to_rect() is used internally.
> Given that you are having difficulties in reproducing this issue in other
> plots, I would suggest trying to pare down your badly behaving code as much
> as you can and post it here. Furthermore, it would also be useful to
> determine if the issue still occurs in v1.3 or in the master branch.
>
> Cheers!
> Ben Root
>
From: Jorge S. <jor...@ya...> - 2014年06月05日 22:02:09
Jorge Scandaliaris <jorgesmbox-ml@...> writes:
> 
> Hi,
> I just mentioned this problem with Qt4Agg and python 3.4 in another thread
> [1], but I decided to post it on a thread of its own, as I suspect it might
> be a bug in the Qt4Agg backend.
> 
> I get a NameError exception (see backtrace below) when trying to use key
> events in matplotlib (master branch rev:
> e322d5f5bb024bbec44d3ba76da1bc16bf52af9c), python 3.4.1, and pyqt 4.10.
> Is this a bug?
> 
A trivial fix using six (credits to Werner for suggesting it), also
submitted as issue #3117 in the GH tracker:
diff --git a/lib/matplotlib/backends/backend_qt4.py
b/lib/matplotlib/backends/backend_qt4.py
index 70152aa..26486b4 100644
--- a/lib/matplotlib/backends/backend_qt4.py
+++ b/lib/matplotlib/backends/backend_qt4.py
@@ -362,7 +362,7 @@ class FigureCanvasQT(QtGui.QWidget, FigureCanvasBase):
 if event_key > MAX_UNICODE:
 return None
- key = unichr(event_key)
+ key = six.unichr(event_key)
 # qt delivers capitalized letters. fix capitalization
 # note that capslock is ignored
 if 'shift' in mods:
From: Werner <wer...@gm...> - 2014年06月05日 14:01:47
On 6/5/2014 15:45, "V. Armando Solé" wrote:
...
>> You would use 'six' - https://pypi.python.org/pypi/six it is used by
>> many packages including wxPython.
>>
>> import six
>>
>> if six.PY3:
>> 	key = chr(event_key)
>>
>> else:
>> 	key = unichr(event_key)
>>
> Just for info.
>
> I had never heard about six. Is there anything wrong using sys???:
>
> import sys
> if sys.version < "3.0":
> key = unichr(event_key)
> else:
> key = chr(event_key)
>
> Thanks,
Using 'six' for just the above case is definitely overkill, but it has 
many more goodies in it to make py2/py3 single source code easier.
Werner
From: V. A. S. <so...@es...> - 2014年06月05日 13:46:12
On 05/06/2014 15:24, Werner wrote:
> On 6/5/2014 15:10, Jorge Scandaliaris wrote:
>> Jorge Scandaliaris <jorgesmbox-ml@...> writes:
>>
>>> Hi,
>>> I just mentioned this problem with Qt4Agg and python 3.4 in another thread
>>> [1], but I decided to post it on a thread of its own, as I suspect it might
>>> be a bug in the Qt4Agg backend.
>>>
>>> I get a NameError exception (see backtrace below) when trying to use key
>>> events in matplotlib (master branch rev:
>>> e322d5f5bb024bbec44d3ba76da1bc16bf52af9c), python 3.4.1, and pyqt 4.10.
>>> Is this a bug?
>> I can confirm that using chr() instead of unichr() fixes this problem. I
>> don't know how ones handle python2 vs python3 in these cases
>>
>> diff --git a/lib/matplotlib/backends/backend_qt4.py
>> b/lib/matplotlib/backends/backend_qt4.py
>> index 70152aa..b0d8233 100644
>> --- a/lib/matplotlib/backends/backend_qt4.py
>> +++ b/lib/matplotlib/backends/backend_qt4.py
>> @@ -362,7 +362,7 @@ class FigureCanvasQT(QtGui.QWidget, FigureCanvasBase):
>> if event_key > MAX_UNICODE:
>> return None
>> 
>> - key = unichr(event_key)
>> + key = chr(event_key)
>> # qt delivers capitalized letters. fix capitalization
>> # note that capslock is ignored
>> if 'shift' in mods:
> You would use 'six' - https://pypi.python.org/pypi/six it is used by
> many packages including wxPython.
>
> import six
>
> if six.PY3:
> 	key = chr(event_key)
>
> else:
> 	key = unichr(event_key)
>
Just for info.
I had never heard about six. Is there anything wrong using sys???:
import sys
if sys.version < "3.0":
 key = unichr(event_key)
else:
 key = chr(event_key)
Thanks,
Armando
From: Werner <wer...@gm...> - 2014年06月05日 13:24:39
On 6/5/2014 15:10, Jorge Scandaliaris wrote:
> Jorge Scandaliaris <jorgesmbox-ml@...> writes:
>
>> Hi,
>> I just mentioned this problem with Qt4Agg and python 3.4 in another thread
>> [1], but I decided to post it on a thread of its own, as I suspect it might
>> be a bug in the Qt4Agg backend.
>>
>> I get a NameError exception (see backtrace below) when trying to use key
>> events in matplotlib (master branch rev:
>> e322d5f5bb024bbec44d3ba76da1bc16bf52af9c), python 3.4.1, and pyqt 4.10.
>> Is this a bug?
> I can confirm that using chr() instead of unichr() fixes this problem. I
> don't know how ones handle python2 vs python3 in these cases
>
> diff --git a/lib/matplotlib/backends/backend_qt4.py
> b/lib/matplotlib/backends/backend_qt4.py
> index 70152aa..b0d8233 100644
> --- a/lib/matplotlib/backends/backend_qt4.py
> +++ b/lib/matplotlib/backends/backend_qt4.py
> @@ -362,7 +362,7 @@ class FigureCanvasQT(QtGui.QWidget, FigureCanvasBase):
> if event_key > MAX_UNICODE:
> return None
> 
> - key = unichr(event_key)
> + key = chr(event_key)
> # qt delivers capitalized letters. fix capitalization
> # note that capslock is ignored
> if 'shift' in mods:
You would use 'six' - https://pypi.python.org/pypi/six it is used by 
many packages including wxPython.
import six
if six.PY3:
	key = chr(event_key)
else:
	key = unichr(event_key)
Werner
From: Jorge S. <jor...@ya...> - 2014年06月05日 13:12:06
Jorge Scandaliaris <jorgesmbox-ml@...> writes:
> 
> Hi,
> I just mentioned this problem with Qt4Agg and python 3.4 in another thread
> [1], but I decided to post it on a thread of its own, as I suspect it might
> be a bug in the Qt4Agg backend.
> 
> I get a NameError exception (see backtrace below) when trying to use key
> events in matplotlib (master branch rev:
> e322d5f5bb024bbec44d3ba76da1bc16bf52af9c), python 3.4.1, and pyqt 4.10.
> Is this a bug?
I can confirm that using chr() instead of unichr() fixes this problem. I
don't know how ones handle python2 vs python3 in these cases
diff --git a/lib/matplotlib/backends/backend_qt4.py
b/lib/matplotlib/backends/backend_qt4.py
index 70152aa..b0d8233 100644
--- a/lib/matplotlib/backends/backend_qt4.py
+++ b/lib/matplotlib/backends/backend_qt4.py
@@ -362,7 +362,7 @@ class FigureCanvasQT(QtGui.QWidget, FigureCanvasBase):
 if event_key > MAX_UNICODE:
 return None
 
- key = unichr(event_key)
+ key = chr(event_key)
 # qt delivers capitalized letters. fix capitalization
 # note that capslock is ignored
 if 'shift' in mods:
jorge
From: Jorge S. <jor...@ya...> - 2014年06月05日 12:38:38
Werner <wernerfbd@...> writes:
<...>
> Some time ago I did a bit of work on the wx backend to work with 
> wxPython Phoenix.
> 
> https://github.com/matplotlib/matplotlib/pull/2803
> 
> I haven't had time to look at the last few comments made on that PR.
> 
> Just the other day someone contacted me off list and he used it on a 
> project of his with a recent build of Phoenix. He noted small refresh 
> issues which corrected itself by resizing the frame, this probably needs 
> a "self.Refresh" or similar when things get drawn.
> 
> Builds for Phoenix are here:
> http://wxpython.org/Phoenix/snapshot-builds/
> 
> Recent versions of Phoenix (this is still in development) run on Py 2.7, 
> Py 3.3 and Py 3.4 and use the wheel format and can be installed with the 
> following at least on Windows and Mac as far as I know:
> 
> pip install -U --pre -f http://wxpython.org/Phoenix/snapshot-builds/ 
> wxPython_Phoenix
> 
> Werner
> 
> 
Thanks for the info, but at this point I'd rather focus on the task I need
to solve rather than in the necessary tools. I have just creted a new thread
regarding the Qt4Agg backend problem I saw, as that is probably the closest
path to have a working setup. If that can't be solved, I have to probably go
back to python 2. I upgraded in the first place because it seemed like all
the tools were ready, and that's a natural path, but I can live with python
2 for a bit longer...
Jorge
From: Jorge S. <jor...@ya...> - 2014年06月05日 12:32:32
Hi,
I just mentioned this problem with Qt4Agg and python 3.4 in another thread
[1], but I decided to post it on a thread of its own, as I suspect it might
be a bug in the Qt4Agg backend.
I get a NameError exception (see backtrace below) when trying to use key
events in matplotlib (master branch rev:
e322d5f5bb024bbec44d3ba76da1bc16bf52af9c), python 3.4.1, and pyqt 4.10.
Is this a bug?
Regards,
Jorge
backtrace:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/home/jscandal/sw/matplotlib/matplotlib/lib/matplotlib/backends/backend_qt4.py
in
keyReleaseEvent(self=<matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg
object>, event=<PyQt4.QtGui.QKeyEvent object>)
 308 
 309 def keyReleaseEvent(self, event):
--> 310 key = self._get_key(event)
 key = undefined
 self._get_key = <bound method FigureCanvasQTAgg._get_key of
<matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg object at 0x7f0393412948>>
 event = <PyQt4.QtGui.QKeyEvent object at 0x7f0393507a68>
 311 if key is None:
 312 return
/home/jscandal/sw/matplotlib/matplotlib/lib/matplotlib/backends/backend_qt4.py
in _get_key(self=<matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg
object>, event=<PyQt4.QtGui.QKeyEvent object>)
 363 return None
 364 
--> 365 key = unichr(event_key)
 key = undefined
 global unichr = undefined
 global event_key = undefined
 366 # qt delivers capitalized letters. fix capitalization
 367 # note that capslock is ignored
NameError: name 'unichr' is not defined
[1] http://thread.gmane.org/gmane.comp.python.matplotlib.general/34361
From: Werner <wer...@gm...> - 2014年06月05日 09:15:07
Hi Jorge,
Oops, sorry for first sending it directly to your mail.
Some time ago I did a bit of work on the wx backend to work with 
wxPython Phoenix.
https://github.com/matplotlib/matplotlib/pull/2803
I haven't had time to look at the last few comments made on that PR.
Just the other day someone contacted me off list and he used it on a 
project of his with a recent build of Phoenix. He noted small refresh 
issues which corrected itself by resizing the frame, this probably needs 
a "self.Refresh" or similar when things get drawn.
Builds for Phoenix are here:
http://wxpython.org/Phoenix/snapshot-builds/
Recent versions of Phoenix (this is still in development) run on Py 2.7, 
Py 3.3 and Py 3.4 and use the wheel format and can be installed with the 
following at least on Windows and Mac as far as I know:
pip install -U --pre -f http://wxpython.org/Phoenix/snapshot-builds/ 
wxPython_Phoenix
Werner
From: V. A. S. <so...@es...> - 2014年06月05日 09:00:53
On 05/06/2014 07:21, Jorge Scandaliaris wrote:
> Hi,
> After a while away from matplotlib I am back working on some old code. I
> decided to switch to python 3 (bad idea?) and I am having problems with
> backends. I used to use GTKAgg, it worked ok, but it doesn't seem to work
> with python 3?
> 1- What are my choices running python 3 and matplotlib from source (I
> started following the master branch to avoid some bugs in the past, and kept
> using it since)? I did look in the docs and searched the lists, but I
> couldn't find a clear answer.
> 2- Is it discouraged to use matplotlib with python 3?
I am using matplotlib with Python 3 and the Qt backend (PyQt4 and 
PySide) but I did not try to handle key events (just mouse) ...
Armando
From: Jorge S. <jor...@ya...> - 2014年06月05日 05:21:32
Hi,
After a while away from matplotlib I am back working on some old code. I
decided to switch to python 3 (bad idea?) and I am having problems with
backends. I used to use GTKAgg, it worked ok, but it doesn't seem to work
with python 3?
1- What are my choices running python 3 and matplotlib from source (I
started following the master branch to avoid some bugs in the past, and kept
using it since)? I did look in the docs and searched the lists, but I
couldn't find a clear answer.
2- Is it discouraged to use matplotlib with python 3?
3- I got the Qt4Agg backend sort of working. It displays my figures ok, but
throws exceptions related to some key events I have set up. See below for
backtrace. unichr() has disappeared in python 3, but somehow the backend is
still using it?
Sorry about the post becoming a bit messy. 
Jorge
backtrace:
NameError Traceback (most recent call last)
/home/jscandal/sw/matplotlib/matplotlib/lib/matplotlib/backends/backend_qt4.py
in
keyReleaseEvent(self=<matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg
object>, event=<PyQt4.QtGui.QKeyEvent object>)
 308 
 309 def keyReleaseEvent(self, event):
--> 310 key = self._get_key(event)
 key = undefined
 self._get_key = <bound method FigureCanvasQTAgg._get_key of
<matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg object at 0x7fc124046af8>>
 event = <PyQt4.QtGui.QKeyEvent object at 0x7fc1260cfb88>
 311 if key is None:
 312 return
/home/jscandal/sw/matplotlib/matplotlib/lib/matplotlib/backends/backend_qt4.py
in _get_key(self=<matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg
object>, event=<PyQt4.QtGui.QKeyEvent object>)
 363 return None
 364 
--> 365 key = unichr(event_key)
 key = undefined
 global unichr = undefined
 global event_key = undefined
 366 # qt delivers capitalized letters. fix capitalization
 367 # note that capslock is ignored
NameError: name 'unichr' is not defined
From: dydy2014 <dya...@gm...> - 2014年06月01日 09:40:28
Dear all,
It is still the same problem. Actually my code like below :
import os
import netCDF4 as nc
import numpy as np
import matplotlib.pylab as pl
base_dir = 'C:/DATA2011/' # Note PC
nc_file1 = '20110301.faifb1p16m2.nc' # Single beam data
nc_file2 = '20110301.faifb1p16m3.nc' # Single beam data
nc_file3 = '20110301.faifb1p16m4.nc' # Single beam data
# Change directory
os.chdir(base_dir)
# Open netCDF file
fd1 = nc.Dataset(nc_file1, 'r')
fd2 = nc.Dataset(nc_file2, 'r')
fd3 = nc.Dataset(nc_file3, 'r')
# Read variables from the netCDF file
date1 = fd1.variables['date'][:]
beam1 = fd1.variables['beam'][:]
az1 = fd1.variables['az'][:]
ze1 = fd1.variables['ze'][:]
rng1 = fd1.variables['range'][:]
tim1 = fd1.variables['time'][:]
pwr1 = fd1.variables['pwr'][:]
dpl1 = fd1.variables['dpl'][:]
nfft1 = fd1.variables['nfft'][0]
pn1 = fd1.variables['pnoise'][:]
# Read variables from the netCDF file
date2 = fd2.variables['date'][:]
beam2 = fd2.variables['beam'][:]
az2 = fd2.variables['az'][:]
ze2 = fd2.variables['ze'][:]
rng2 = fd2.variables['range'][:]
tim2 = fd2.variables['time'][:]
pwr2 = fd2.variables['pwr'][:]
dpl2 = fd2.variables['dpl'][:]
nfft2 = fd2.variables['nfft'][0]
pn2 = fd2.variables['pnoise'][:]
# Read variables from the netCDF file
date3 = fd3.variables['date'][:]
beam3 = fd3.variables['beam'][:]
az3 = fd3.variables['az'][:]
ze3 = fd3.variables['ze'][:]
rng3 = fd3.variables['range'][:]
tim3 = fd3.variables['time'][:]
pwr3 = fd3.variables['pwr'][:]
dpl3 = fd3.variables['dpl'][:]
nfft3 = fd3.variables['nfft'][0]
pn3 = fd3.variables['pnoise'][:]
# Close netCDF file
fd1.close()
fd2.close()
fd3.close()
# Speify which beam to show
ibeam1 = 0
ibeam2 = 0
ibeam3 = 0
# Time convertion from seconds to hours
tim1 = tim1/3600.0
tim2 = tim2/3600.0
tim3 = tim3/3600.0
# Select data of the specified beam, and transpose
p_plot1 = pwr1[ibeam1]
for it1 in range(len(tim1)):
 p_plot1[it1] = p_plot1[it1] - pn1[ibeam1][it1] - 10.*np.log10(nfft1)
p_plot1 = p_plot1.transpose() 
# Select data of the specified beam, and transpose
p_plot2 = pwr2[ibeam2]
for it2 in range(len(tim2)):
 p_plot2[it2] = p_plot2[it2] - pn2[ibeam2][it2] - 10.*np.log10(nfft2)
p_plot2 = p_plot2.transpose() 
# Select data of the specified beam, and transpose
p_plot3 = pwr3[ibeam3]
for it3 in range(len(tim3)):
 p_plot3[it3] = p_plot3[it3] - pn3[ibeam3][it3] - 10.*np.log10(nfft3)
p_plot3 = p_plot3.transpose() 
# Count max SNR (single beam)
pthres1 = 2.0
N_total1 = 0
N_signal1 = 0
for j in range(len(tim1)):
 if 18.0 <= tim1[j] <= 30.0:
 for i in range(len(rng1)):
 N_total1 = N_total1 + 1
 if 200.0 <= rng1[i] <= 550 :
 if p_plot1[i][j] > pthres1:
 ipthres1 = i
 jpthres1 = j
 N_signal1 = N_signal1 + 1
 
# Count max SNR (single beam)
pthres2 = 2.0
N_total2 = 0
N_signal2 = 0
for j in range(len(tim2)):
 if 18.0 <= tim2[j] <= 30.0:
 for i in range(len(rng2)):
 N_total2 = N_total2 + 1
 if 200.0 <= rng2[i] <= 550 :
 if p_plot2[i][j] > pthres2:
 ipthres2 = i
 jpthres2 = j
 N_signal2 = N_signal2 + 1
 
# Count max SNR (single beam)
pthres3 = 2.0
N_total3 = 0
N_signal3 = 0
for j in range(len(tim3)):
 if 18.0 <= tim3[j] <= 30.0:
 for i in range(len(rng3)):
 N_total3 = N_total3 + 1
 if 200.0 <= rng3[i] <= 550 :
 if p_plot3[i][j] > pthres3:
 ipthres3 = i
 jpthres3 = j
 N_signal3 = N_signal3 + 1
 
fig = pl.figure()
#Plot contour
axs1=fig.add_subplot(3,1,1)
v1 = np.linspace(0., 50., 10., endpoint=True)
axs1=pl.contourf(tim1, rng1, p_plot1, v1, cmap1=pl.cm.jet)
x1 = pl.colorbar(ticks=v1)
print x1
# Set X and Y axis lower/upper limit
set_xy1 = range(4)
set_xy1[0] = 18.0 # x min
set_xy1[1] = 30.0 # x max
set_xy1[2] = 200.0 # y min
set_xy1[3] = 550.0 # y max
pl.axis(set_xy1)
axs2=fig.add_subplot(3,1,2)
v2 = np.linspace(0., 50., 10., endpoint=True)
axs2=pl.contourf(tim2, rng2, p_plot2, v2, cmap2=pl.cm.jet)
x2 = pl.colorbar(ticks=v2)
print x2
# Set X and Y axis lower/upper limit
set_xy2 = range(4)
set_xy2[0] = 18.0 # x min
set_xy2[1] = 30.0 # x max
set_xy2[2] = 200.0 # y min
set_xy2[3] = 550.0 # y max
pl.axis(set_xy2)
axs3=fig.add_subplot(3,1,3)
v3 = np.linspace(0., 50., 10., endpoint=True)
axs3=pl.contourf(tim3, rng3, p_plot3, v3, cmap3=pl.cm.jet)
x3 = pl.colorbar(ticks=v3)
print x3
# Set X and Y axis lower/upper limit
set_xy3 = range(4)
set_xy3[0] = 18.0 # x min
set_xy3[1] = 30.0 # x max
set_xy3[2] = 200.0 # y min
set_xy3[3] = 550.0 # y max
pl.axis(set_xy3)
pl.show()
# Set X and Y axis lower/upper limit
set_xy1 = range(4)
set_xy1[0] = 18.0 # x min
set_xy1[1] = 30.0 # x max
set_xy1[2] = 200.0 # y min
set_xy1[3] = 550.0 # y max
pl.axis(set_xy1)
Could somebody help me to make the code shorter by using loop and the image
only show one colorbar for three image?.
Recent result :
<http://matplotlib.1069221.n5.nabble.com/file/n43464/figure_1.png> 
--
View this message in context: http://matplotlib.1069221.n5.nabble.com/One-colorbar-for-many-plot-tp43430p43464.html
Sent from the matplotlib - users mailing list archive at Nabble.com.

Showing results of 94

<< < 1 2 3 4 (Page 4 of 4)
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /