SourceForge logo
SourceForge logo
Menu

matplotlib-devel — matplotlib developers

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






Showing 4 results of 4

From: Michael D. <md...@st...> - 2011年07月06日 15:52:41
Looks good. Does matplotlib still pass all regression tests with this 
change?
(See here for information on running the regression tests: 
http://matplotlib.sourceforge.net/devel/coding_guide.html?highlight=nosetests#testing).
Cheers,
Mike
On 07/06/2011 08:33 AM, Martin Teichmann wrote:
> Dear list,
>
> I was just trying to shear an image to be plotted with
> matplotlib (to get some snazzy 3D effect) and realized
> that it's apparently not possible. Investigating further,
> I realized that the underlying agg library indeed supports
> shearing, as it simply uses an affine matrix for its
> transforms (very much like the rest of matplotlib),
> but it does not export that feature to matplotlib.
>
> So, I just quickly added some code to actually
> access the transformation matrix in the C++ code,
> so that one can use it from within python. The next
> step would be to hook that up to the usual code used
> in matplotlib.
>
> A patch is attached at the end of this post.
>
> Greetings
>
> Martin
>
> --------------- patch follows -----------------------
>
> commit b7d0d23d90460ee790f1e94f387070a69be661c8
> Author: Martin Teichmann<martin@renoir.(none)>
> Date: Wed Jul 6 14:04:44 2011 +0200
>
> Make affine transformations work for images
>
> The current code only supports scaling and maybe rotation of
> images, but not all affine transformations, although it is
> already prepared to do so.
>
> This patch adds a method set_matrix to the C++ image handling code,
> so that one can set (and thus perform) arbitrary affine transformations.
>
> It also fixes a little bug which introduced weird side effects
> if images were resized more than once.
>
> diff --git a/src/_image.cpp b/src/_image.cpp
> index 3278b6c..7d40664 100644
> --- a/src/_image.cpp
> +++ b/src/_image.cpp
> @@ -92,7 +92,6 @@ Image::apply_rotation(const Py::Tuple& args)
>
> agg::trans_affine M = agg::trans_affine_rotation(r * agg::pi / 180.0);
> srcMatrix *= M;
> - imageMatrix *= M;
> return Py::Object();
> }
>
> @@ -156,7 +155,6 @@ Image::apply_scaling(const Py::Tuple& args)
> //printf("applying scaling %1.2f, %1.2f\n", sx, sy);
> agg::trans_affine M = agg::trans_affine_scaling(sx, sy);
> srcMatrix *= M;
> - imageMatrix *= M;
>
> return Py::Object();
> }
> @@ -179,7 +177,6 @@ Image::apply_translation(const Py::Tuple& args)
> //printf("applying translation %1.2f, %1.2f\n", tx, ty);
> agg::trans_affine M = agg::trans_affine_translation(tx, ty);
> srcMatrix *= M;
> - imageMatrix *= M;
>
> return Py::Object();
> }
> @@ -285,7 +282,6 @@ Image::reset_matrix(const Py::Tuple& args)
>
> args.verify_length(0);
> srcMatrix.reset();
> - imageMatrix.reset();
>
> return Py::Object();
> }
> @@ -316,6 +312,31 @@ Image::get_matrix(const Py::Tuple& args)
> return ret;
> }
>
> +char Image::set_matrix__doc__[] =
> + "set_matrix(m11,m21,m12,m22,m13,m23)\n"
> + "\n"
> + "Set the affine transformation matrix\n"
> + " /m11,m12,m13\\\n"
> + " /m21,m22,m23|\n"
> + " \\ 0 , 0 , 1 /"
> + ;
> +
> +Py::Object
> +Image::set_matrix(const Py::Tuple& args)
> +{
> + _VERBOSE("Image::set_matrix");
> +
> + args.verify_length(6);
> +
> + double m[6];
> + for (int i = 0;i< 6;i++)
> + {
> + m[i] = Py::Float(args[i]);
> + }
> + srcMatrix.load_from(m);
> + return Py::Object();
> +}
> +
> char Image::resize__doc__[] =
> "resize(width, height, norm=1, radius=4.0)\n"
> "\n"
> @@ -376,8 +397,7 @@ Image::resize(const Py::Tuple& args, const Py::Dict& kwargs)
>
> ras.clip_box(0, 0, numcols, numrows);
>
> - //srcMatrix *= resizingMatrix;
> - //imageMatrix *= resizingMatrix;
> + imageMatrix = srcMatrix;
> imageMatrix.invert();
> interpolator_type interpolator(imageMatrix);
>
> @@ -733,6 +753,7 @@ Image::init_type()
> add_varargs_method("get_size_out",&Image::get_size_out,
> Image::get_size_out__doc__);
> add_varargs_method("reset_matrix",&Image::reset_matrix,
> Image::reset_matrix__doc__);
> add_varargs_method("get_matrix",&Image::get_matrix,
> Image::get_matrix__doc__);
> + add_varargs_method("set_matrix",&Image::set_matrix,
> Image::set_matrix__doc__);
> add_keyword_method("resize",&Image::resize, Image::resize__doc__);
> add_varargs_method("set_interpolation",
> &Image::set_interpolation, Image::set_interpolation__doc__);
> add_varargs_method("set_resample",&Image::set_resample,
> Image::set_resample__doc__);
> diff --git a/src/_image.h b/src/_image.h
> index 8a3be54..89a923c 100644
> --- a/src/_image.h
> +++ b/src/_image.h
> @@ -34,6 +34,7 @@ public:
> Py::Object buffer_rgba(const Py::Tuple& args);
> Py::Object reset_matrix(const Py::Tuple& args);
> Py::Object get_matrix(const Py::Tuple& args);
> + Py::Object set_matrix(const Py::Tuple& args);
> Py::Object resize(const Py::Tuple& args, const Py::Dict& kwargs);
> Py::Object get_aspect(const Py::Tuple& args);
> Py::Object get_size(const Py::Tuple& args);
> @@ -105,6 +106,7 @@ private:
> static char buffer_rgba__doc__[];
> static char reset_matrix__doc__[];
> static char get_matrix__doc__[];
> + static char set_matrix__doc__[];
> static char resize__doc__[];
> static char get_aspect__doc__[];
> static char get_size__doc__[];
>
> ------------------------------------------------------------------------------
> All of the data generated in your IT infrastructure is seriously valuable.
> Why? It contains a definitive record of application performance, security
> threats, fraudulent activity, and more. Splunk takes this data and makes
> sense of it. IT sense. And common sense.
> http://p.sf.net/sfu/splunk-d2d-c2
> _______________________________________________
> Matplotlib-devel mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
From: Benjamin R. <ben...@ou...> - 2011年07月06日 14:07:41
On Wednesday, July 6, 2011, Maximilian Trescher <fa...@tr...> wrote:
> Hi,
>
> i just committed a fix for issue #135, which is about timedelta rounding.
>
> The problem was in drange:
> before the fix it used numpy.arange which resulted in rounding issues,
> the numpy doc says about arange:
> "When using a non-integer step, such as 0.1, the results will often not
> be consistent. It is better to use linspace for these cases."
>
> So i tried to create a fix involving linspace,
> you can see it here:
> https://github.com/faucon/matplotlib/commit/06195c35f4348f37002e850d1cee992d07f5a29c
>
> it works (and is the only way i found to avoid the roundig issues) but
> it feels somehow "hackish".
>
> An alternative would be the following implementation, which is quite
> readable but much slower:
>
> def drange(dstart, dend, delta): # its very slow
>  """
>  Return a date range as float Gregorian ordinals. *dstart* and
>  *dend* are :class:`datetime` instances. *delta* is a
>  :class:`datetime.timedelta` instance.
>  """
>  dloop = dstart
>  datelist = []
>  while dloop < dend:
>    datelist.append(dloop)
>    dloop += delta
>  return dates.date2num(datelist)
>
>
> i will try to add a test the next days. Then i would create a
> pull-request if the fix looks reasonable to you.
>
> thanks,
>
> Maximilian
>
>
Thanks for patching. I haven't tested it yet, but the linspace
solution is probably the best way to go. I would avoid drange because
I believe numpy will soon be implementing such a function and I
wouldn't want the possible confusion that comes from that.
Ben Root
From: Martin T. <mar...@mb...> - 2011年07月06日 12:33:20
Dear list,
I was just trying to shear an image to be plotted with
matplotlib (to get some snazzy 3D effect) and realized
that it's apparently not possible. Investigating further,
I realized that the underlying agg library indeed supports
shearing, as it simply uses an affine matrix for its
transforms (very much like the rest of matplotlib),
but it does not export that feature to matplotlib.
So, I just quickly added some code to actually
access the transformation matrix in the C++ code,
so that one can use it from within python. The next
step would be to hook that up to the usual code used
in matplotlib.
A patch is attached at the end of this post.
Greetings
Martin
--------------- patch follows -----------------------
commit b7d0d23d90460ee790f1e94f387070a69be661c8
Author: Martin Teichmann <martin@renoir.(none)>
Date: Wed Jul 6 14:04:44 2011 +0200
 Make affine transformations work for images
 The current code only supports scaling and maybe rotation of
 images, but not all affine transformations, although it is
 already prepared to do so.
 This patch adds a method set_matrix to the C++ image handling code,
 so that one can set (and thus perform) arbitrary affine transformations.
 It also fixes a little bug which introduced weird side effects
 if images were resized more than once.
diff --git a/src/_image.cpp b/src/_image.cpp
index 3278b6c..7d40664 100644
--- a/src/_image.cpp
+++ b/src/_image.cpp
@@ -92,7 +92,6 @@ Image::apply_rotation(const Py::Tuple& args)
 agg::trans_affine M = agg::trans_affine_rotation(r * agg::pi / 180.0);
 srcMatrix *= M;
- imageMatrix *= M;
 return Py::Object();
 }
@@ -156,7 +155,6 @@ Image::apply_scaling(const Py::Tuple& args)
 //printf("applying scaling %1.2f, %1.2f\n", sx, sy);
 agg::trans_affine M = agg::trans_affine_scaling(sx, sy);
 srcMatrix *= M;
- imageMatrix *= M;
 return Py::Object();
 }
@@ -179,7 +177,6 @@ Image::apply_translation(const Py::Tuple& args)
 //printf("applying translation %1.2f, %1.2f\n", tx, ty);
 agg::trans_affine M = agg::trans_affine_translation(tx, ty);
 srcMatrix *= M;
- imageMatrix *= M;
 return Py::Object();
 }
@@ -285,7 +282,6 @@ Image::reset_matrix(const Py::Tuple& args)
 args.verify_length(0);
 srcMatrix.reset();
- imageMatrix.reset();
 return Py::Object();
 }
@@ -316,6 +312,31 @@ Image::get_matrix(const Py::Tuple& args)
 return ret;
 }
+char Image::set_matrix__doc__[] =
+ "set_matrix(m11,m21,m12,m22,m13,m23)\n"
+ "\n"
+ "Set the affine transformation matrix\n"
+ " /m11,m12,m13\\\n"
+ " /m21,m22,m23|\n"
+ " \\ 0 , 0 , 1 /"
+ ;
+
+Py::Object
+Image::set_matrix(const Py::Tuple& args)
+{
+ _VERBOSE("Image::set_matrix");
+
+ args.verify_length(6);
+
+ double m[6];
+ for (int i = 0;i < 6;i++)
+ {
+ m[i] = Py::Float(args[i]);
+ }
+ srcMatrix.load_from(m);
+ return Py::Object();
+}
+
 char Image::resize__doc__[] =
 "resize(width, height, norm=1, radius=4.0)\n"
 "\n"
@@ -376,8 +397,7 @@ Image::resize(const Py::Tuple& args, const Py::Dict& kwargs)
 ras.clip_box(0, 0, numcols, numrows);
- //srcMatrix *= resizingMatrix;
- //imageMatrix *= resizingMatrix;
+ imageMatrix = srcMatrix;
 imageMatrix.invert();
 interpolator_type interpolator(imageMatrix);
@@ -733,6 +753,7 @@ Image::init_type()
 add_varargs_method("get_size_out", &Image::get_size_out,
Image::get_size_out__doc__);
 add_varargs_method("reset_matrix", &Image::reset_matrix,
Image::reset_matrix__doc__);
 add_varargs_method("get_matrix", &Image::get_matrix,
Image::get_matrix__doc__);
+ add_varargs_method("set_matrix", &Image::set_matrix,
Image::set_matrix__doc__);
 add_keyword_method("resize", &Image::resize, Image::resize__doc__);
 add_varargs_method("set_interpolation",
&Image::set_interpolation, Image::set_interpolation__doc__);
 add_varargs_method("set_resample", &Image::set_resample,
Image::set_resample__doc__);
diff --git a/src/_image.h b/src/_image.h
index 8a3be54..89a923c 100644
--- a/src/_image.h
+++ b/src/_image.h
@@ -34,6 +34,7 @@ public:
 Py::Object buffer_rgba(const Py::Tuple& args);
 Py::Object reset_matrix(const Py::Tuple& args);
 Py::Object get_matrix(const Py::Tuple& args);
+ Py::Object set_matrix(const Py::Tuple& args);
 Py::Object resize(const Py::Tuple& args, const Py::Dict& kwargs);
 Py::Object get_aspect(const Py::Tuple& args);
 Py::Object get_size(const Py::Tuple& args);
@@ -105,6 +106,7 @@ private:
 static char buffer_rgba__doc__[];
 static char reset_matrix__doc__[];
 static char get_matrix__doc__[];
+ static char set_matrix__doc__[];
 static char resize__doc__[];
 static char get_aspect__doc__[];
 static char get_size__doc__[];
From: Maximilian T. <fa...@tr...> - 2011年07月06日 07:40:57
Attachments: signature.asc
Hi,
i just committed a fix for issue #135, which is about timedelta rounding.
The problem was in drange:
before the fix it used numpy.arange which resulted in rounding issues,
the numpy doc says about arange:
"When using a non-integer step, such as 0.1, the results will often not
be consistent. It is better to use linspace for these cases."
So i tried to create a fix involving linspace,
you can see it here:
https://github.com/faucon/matplotlib/commit/06195c35f4348f37002e850d1cee992d07f5a29c
it works (and is the only way i found to avoid the roundig issues) but
it feels somehow "hackish".
An alternative would be the following implementation, which is quite
readable but much slower:
def drange(dstart, dend, delta): # its very slow
 """
 Return a date range as float Gregorian ordinals. *dstart* and
 *dend* are :class:`datetime` instances. *delta* is a
 :class:`datetime.timedelta` instance.
 """
 dloop = dstart
 datelist = []
 while dloop < dend:
 datelist.append(dloop)
 dloop += delta
 return dates.date2num(datelist)
i will try to add a test the next days. Then i would create a
pull-request if the fix looks reasonable to you.
thanks,
Maximilian

Showing 4 results 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 によって変換されたページ (->オリジナル) /