You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(33) |
Dec
(20) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(7) |
Feb
(44) |
Mar
(51) |
Apr
(43) |
May
(43) |
Jun
(36) |
Jul
(61) |
Aug
(44) |
Sep
(25) |
Oct
(82) |
Nov
(97) |
Dec
(47) |
2005 |
Jan
(77) |
Feb
(143) |
Mar
(42) |
Apr
(31) |
May
(93) |
Jun
(93) |
Jul
(35) |
Aug
(78) |
Sep
(56) |
Oct
(44) |
Nov
(72) |
Dec
(75) |
2006 |
Jan
(116) |
Feb
(99) |
Mar
(181) |
Apr
(171) |
May
(112) |
Jun
(86) |
Jul
(91) |
Aug
(111) |
Sep
(77) |
Oct
(72) |
Nov
(57) |
Dec
(51) |
2007 |
Jan
(64) |
Feb
(116) |
Mar
(70) |
Apr
(74) |
May
(53) |
Jun
(40) |
Jul
(519) |
Aug
(151) |
Sep
(132) |
Oct
(74) |
Nov
(282) |
Dec
(190) |
2008 |
Jan
(141) |
Feb
(67) |
Mar
(69) |
Apr
(96) |
May
(227) |
Jun
(404) |
Jul
(399) |
Aug
(96) |
Sep
(120) |
Oct
(205) |
Nov
(126) |
Dec
(261) |
2009 |
Jan
(136) |
Feb
(136) |
Mar
(119) |
Apr
(124) |
May
(155) |
Jun
(98) |
Jul
(136) |
Aug
(292) |
Sep
(174) |
Oct
(126) |
Nov
(126) |
Dec
(79) |
2010 |
Jan
(109) |
Feb
(83) |
Mar
(139) |
Apr
(91) |
May
(79) |
Jun
(164) |
Jul
(184) |
Aug
(146) |
Sep
(163) |
Oct
(128) |
Nov
(70) |
Dec
(73) |
2011 |
Jan
(235) |
Feb
(165) |
Mar
(147) |
Apr
(86) |
May
(74) |
Jun
(118) |
Jul
(65) |
Aug
(75) |
Sep
(162) |
Oct
(94) |
Nov
(48) |
Dec
(44) |
2012 |
Jan
(49) |
Feb
(40) |
Mar
(88) |
Apr
(35) |
May
(52) |
Jun
(69) |
Jul
(90) |
Aug
(123) |
Sep
(112) |
Oct
(120) |
Nov
(105) |
Dec
(116) |
2013 |
Jan
(76) |
Feb
(26) |
Mar
(78) |
Apr
(43) |
May
(61) |
Jun
(53) |
Jul
(147) |
Aug
(85) |
Sep
(83) |
Oct
(122) |
Nov
(18) |
Dec
(27) |
2014 |
Jan
(58) |
Feb
(25) |
Mar
(49) |
Apr
(17) |
May
(29) |
Jun
(39) |
Jul
(53) |
Aug
(52) |
Sep
(35) |
Oct
(47) |
Nov
(110) |
Dec
(27) |
2015 |
Jan
(50) |
Feb
(93) |
Mar
(96) |
Apr
(30) |
May
(55) |
Jun
(83) |
Jul
(44) |
Aug
(8) |
Sep
(5) |
Oct
|
Nov
(1) |
Dec
(1) |
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(1) |
Oct
(3) |
Nov
|
Dec
|
2017 |
Jan
|
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
(7) |
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
1
(1) |
2
(7) |
3
|
4
|
5
(16) |
6
(11) |
7
|
8
(1) |
9
(4) |
10
(10) |
11
|
12
(4) |
13
(4) |
14
(5) |
15
(5) |
16
(11) |
17
(3) |
18
(2) |
19
(5) |
20
(2) |
21
(5) |
22
(2) |
23
(2) |
24
|
25
|
26
(4) |
27
(8) |
28
(9) |
29
(9) |
30
(5) |
31
(1) |
Okay -- I think I've at least narrowed it down to a cause. Agg uses fixed-point arithmetic to render at the low-level -- by default it uses 24.8 (i.e. 24 integer bits and 8 fractional bits). Therefore, it can only handle pixel coordinates in the range -2^23 to 2^23. Both of the provided examples, after the data has been scaled, draw outside of this range, which results in integer overflow, hence things going in the wrong direction etc. We could change the fixed point in agg_basics.h, but I hesitate to do so, as it's at the expense of fine detail. We could possibly move to 64-bits, but I'm not sure how easy that would be, or what the impact might be on 32-bit platforms. //----------------------------------------------------poly_subpixel_scale_e // These constants determine the subpixel accuracy, to be more precise, // the number of bits of the fractional part of the coordinates. // The possible coordinate capacity in bits can be calculated by formula: // sizeof(int) * 8 - poly_subpixel_shift, i.e, for 32-bit integers and // 8-bits fractional part the capacity is 24 bits. enum poly_subpixel_scale_e { poly_subpixel_shift = 8, //----poly_subpixel_shift poly_subpixel_scale = 1<<poly_subpixel_shift, //----poly_subpixel_scale poly_subpixel_mask = poly_subpixel_scale-1, //----poly_subpixel_mask }; One thing I will look into is whether the line simplification algorithm can be extended to actually clip the lines when they go outside of the image range. At the moment, it does some work to reduce the number of points outside of the image, but it always draws at least one point outside at its original location. It looks like Agg has some of the pieces necessary to do this -- whether it's feasible to integrate that into our existing line simplification algorithm remains to be seen. Mike Michael Droettboom wrote: > Thanks for this. > > I believe both of these examples illustrate a shortcoming in Agg when > the distance between two points on either end of a line is too great. > > I'll do some digging around and see what may be causing this and if any > limits can be adjusted -- I may not get to this today, however. > > Mike > > João Luís Silva wrote: > >> Jan Müller wrote: >> >> >>> Hi, >>> >>> The simple code snippet at the end of this mail should plot a single line. >>> >>> >>> >> I can confirm this bug on Ubuntu running matplotlib svn revision 6827. >> However I think it doesn't have to do with the log-scale but with the >> big variations on the x-scale and the custom xscale. I've reproduced a >> similar behavior with the following script (pan and zoom to see the >> buggy behavior). >> -------------------- >> >> import numpy as np >> import matplotlib.pyplot as plt >> >> x = np.array([1.0,2.0,3.0,1.0E5,2.0E5]) >> y = np.arange(len(x)) >> plt.plot(x,y) >> plt.xlim(xmin=2,xmax=6) >> plt.show() >> >> -------------------- >> >> Best Regards, >> João Silva >> >> >> ------------------------------------------------------------------------------ >> This SF.net email is sponsored by: >> SourcForge Community >> SourceForge wants to tell your story. >> http://p.sf.net/sfu/sf-spreadtheword >> _______________________________________________ >> Matplotlib-devel mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel >> >> > > -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA
Thanks for this. I believe both of these examples illustrate a shortcoming in Agg when the distance between two points on either end of a line is too great. I'll do some digging around and see what may be causing this and if any limits can be adjusted -- I may not get to this today, however. Mike João Luís Silva wrote: > Jan Müller wrote: > >> Hi, >> >> The simple code snippet at the end of this mail should plot a single line. >> >> > > I can confirm this bug on Ubuntu running matplotlib svn revision 6827. > However I think it doesn't have to do with the log-scale but with the > big variations on the x-scale and the custom xscale. I've reproduced a > similar behavior with the following script (pan and zoom to see the > buggy behavior). > -------------------- > > import numpy as np > import matplotlib.pyplot as plt > > x = np.array([1.0,2.0,3.0,1.0E5,2.0E5]) > y = np.arange(len(x)) > plt.plot(x,y) > plt.xlim(xmin=2,xmax=6) > plt.show() > > -------------------- > > Best Regards, > João Silva > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > Matplotlib-devel mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel > -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA
Jan Müller wrote: > Hi, > > The simple code snippet at the end of this mail should plot a single line. > I can confirm this bug on Ubuntu running matplotlib svn revision 6827. However I think it doesn't have to do with the log-scale but with the big variations on the x-scale and the custom xscale. I've reproduced a similar behavior with the following script (pan and zoom to see the buggy behavior). -------------------- import numpy as np import matplotlib.pyplot as plt x = np.array([1.0,2.0,3.0,1.0E5,2.0E5]) y = np.arange(len(x)) plt.plot(x,y) plt.xlim(xmin=2,xmax=6) plt.show() -------------------- Best Regards, João Silva
Hi, The simple code snippet at the end of this mail should plot a single line. Unfortunately, depending on - the backend - the windowsize - and the pan/zoom position inside the plot one or more additional lines appear. Under windows it looks like this: http://img217.imageshack.us/my.php?image=matplotlibproblemei6.png (disable Adblock Plus on Firefox, otherwise the image might not be visible) When I pan the plot, the additional lines jump around randomly and sometimes dis- and reappear at their own will. I get this problem for all the AGG-based backends (one additional line) and the GTK backend (several additional lines). GTKCairo does not show this behavior. The problem appears under an up-to-date Fedora 64-bit with matplotlib 0.98.3 and 0.89.6 SVN (from today) The output of "python setup.py" is this: ------------------ BUILDING MATPLOTLIB matplotlib: 0.98.6svn python: 2.5.2 (r252:60911, Sep 30 2008, 15:42:03) [GCC 4.3.2 20080917 (Red Hat 4.3.2-4)] platform: linux2 REQUIRED DEPENDENCIES numpy: 1.2.0 freetype2: 9.18.3 OPTIONAL BACKEND DEPENDENCIES libpng: 1.2.33 Tkinter: no wxPython: 2.8.9.1 * WxAgg extension not required for wxPython >= 2.8 Gtk+: gtk+: 2.14.5, glib: 2.18.3, pygtk: 2.13.0, pygobject: 2.15.4 Qt4: Qt: 4.4.3, PyQt4: 4.4.4 Cairo: 1.4.12 OPTIONAL DATE/TIMEZONE DEPENDENCIES datetime: present, version unknown dateutil: 1.4 pytz: 2008i OPTIONAL USETEX DEPENDENCIES dvipng: no ghostscript: 8.63 latex: no ------------------ Additionally I see this problem under 32-bit Windows XP using the Enthought EPD Py25 v4.1.30101 distribution which uses matplotlib 0.98.3 To reproduce the error: - switch to GTKAgg - run the script below - enlarge or maximize the window (something larger than 1280*1024 should be fine) - play around with zoom/pan Expected result: - a single line is plotted Actually result: - two or more lines are plotted If you need more information just contact me, Jan ----------------------------------------- import numpy as np import matplotlib.pyplot as plt E = np.array(( 1.00000000e+00, 1.50000000e+00, 2.00000000e+00, 3.00000000e+00, 4.00000000e+00, 5.00000000e+00, 6.00000000e+00, 8.00000000e+00, 1.00000000e+01, 1.50000000e+01, 2.00000000e+01, 3.00000000e+01, 4.00000000e+01, 5.00000000e+01, 6.00000000e+01, 8.00000000e+01, 1.00000000e+02, 1.50000000e+02, 2.00000000e+02, 3.00000000e+02, 4.00000000e+02, 5.00000000e+02, 6.00000000e+02, 8.00000000e+02, 1.00000000e+03, 1.02200000e+03, 1.25000000e+03, 1.50000000e+03, 2.00000000e+03, 2.04400000e+03, 3.00000000e+03, 4.00000000e+03, 5.00000000e+03, 6.00000000e+03, 7.00000000e+03, 8.00000000e+03, 9.00000000e+03, 1.00000000e+04, 1.10000000e+04, 1.20000000e+04, 1.30000000e+04, 1.40000000e+04, 1.50000000e+04, 1.60000000e+04, 1.80000000e+04, 2.00000000e+04, 2.20000000e+04, 2.40000000e+04, 2.60000000e+04, 2.80000000e+04, 3.00000000e+04, 4.00000000e+04, 5.00000000e+04, 6.00000000e+04, 8.00000000e+04, 1.00000000e+05, 1.50000000e+05, 2.00000000e+05, 3.00000000e+05, 4.00000000e+05, 5.00000000e+05, 6.00000000e+05, 8.00000000e+05, 1.00000000e+06, 1.50000000e+06, 2.00000000e+06, 3.00000000e+06, 4.00000000e+06, 5.00000000e+06, 6.00000000e+06, 8.00000000e+06, 1.00000000e+07, 1.50000000e+07, 2.00000000e+07, 3.00000000e+07, 4.00000000e+07, 5.00000000e+07, 6.00000000e+07, 8.00000000e+07, 1.00000000e+08)) att = np.array(( 6.81740051e+00, 1.75185086e+00, 6.63815247e-01, 1.67656668e-01, 6.29160626e-02, 2.93190047e-02, 1.56961535e-02, 5.86499592e-03, 2.72337524e-03, 6.73972636e-04, 2.49871770e-04, 6.16613263e-05, 2.28421754e-05, 1.05816094e-05, 5.64930077e-06, 2.10496950e-06, 9.82279267e-07, 2.49513274e-07, 9.62561983e-08, 2.63733618e-08, 1.11014287e-08, 5.93131769e-09, 3.67936480e-09, 1.86298464e-09, 1.17168470e-09, 1.12328773e-09, 7.79131487e-10, 5.81480647e-10, 3.70505702e-10, 3.58735080e-10, 2.10556699e-10, 1.46027404e-10, 1.11492282e-10, 9.01020155e-11, 7.55231748e-11, 6.50072897e-11, 5.70367268e-11, 5.08048699e-11, 4.57978746e-11, 4.16871195e-11, 3.82455571e-11, 3.53357639e-11, 3.28322663e-11, 3.06573900e-11, 2.70724292e-11, 2.42403101e-11, 2.19399603e-11, 2.00399310e-11, 1.84446235e-11, 1.70823384e-11, 1.59052762e-11, 1.18363457e-11, 9.42247205e-12, 7.82716448e-12, 5.84766861e-12, 4.66702151e-12, 3.10158861e-12, 2.32245712e-12, 1.54571561e-12, 1.15853984e-12, 9.26114881e-13, 7.71364072e-13, 5.78493179e-13, 4.62698944e-13, 3.08366381e-13, 2.31229973e-13, 1.54153316e-13, 1.15555237e-13, 9.24919894e-14, 7.70766578e-14, 5.77835936e-14, 4.62280699e-14, 3.08187133e-14, 2.31110475e-14, 1.54093566e-14, 1.15555237e-14, 9.24322401e-15, 7.70169085e-15, 5.77776187e-15, 4.62220950e-15)) plt.figure() plt.plot(E,att) plt.yscale("log") plt.xscale("linear") plt.xlim(xmin=np.log(20), xmax=np.log(500)) plt.ylim(ymin=-18,ymax=5) plt.show()