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
(14) |
2
(6) |
3
(10) |
4
(3) |
5
(2) |
6
(3) |
7
(21) |
8
|
9
|
10
(4) |
11
(2) |
12
(8) |
13
(17) |
14
(9) |
15
(5) |
16
(3) |
17
|
18
(10) |
19
(11) |
20
(3) |
21
(11) |
22
(1) |
23
|
24
(2) |
25
|
26
(3) |
27
(6) |
28
|
29
|
30
|
|
|
|
|
|
|
From: Jeffrey B. <jbl...@al...> - 2014-11-03 20:09:44
|
Hi Oren, The link below leads to a recent related thread on this list. Maybe it will be informative. I believe it implies that the answer is No, you have to use TeX. http://matplotlib.1069221.n5.nabble.com/Editable-text-from-matplotlib-td44219.html -Jeff On Mon, Nov 3, 2014 at 11:40 AM, Paul Hobson <pmh...@gm...> wrote: What happens when you save as a postscript file with matplotlib.rcParams["text.usetex"] = False? -paul On Mon, Nov 3, 2014 at 7:11 AM, Oren <or...@gm...> wrote: Anyone know how to solve this thing? Thanks. On 2 November 2014 03:40, oren <or...@gm...> wrote: How can I save a matplotlib figure with text as a postscript image and that the text will be saved as text. Currently when I save the image as postscript all the text in the image ( xlabel, ylabel etc.. ) is saved as path and not as text.. Is it possible to save it as text? If I use the following code ( use latex) matplotlib.rcParams["text.usetex"] = True and save the image as postscript the text is saved as text.. But I do not want to use latex.. Is it possible without latex? Thanks Question also on stackoverflow http://stackoverflow.com/questions/26649266/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path |
From: Paul H. <pmh...@gm...> - 2014-11-03 19:57:07
|
Can just go straight to PDF? What happens then? It might also be informative to explain why using LaTeX is undesirable in your situation. -p On Mon, Nov 3, 2014 at 11:52 AM, Oren <or...@gm...> wrote: > Thanks for the respond Paul, But It still the same... > > This is how it looks like when I use > matplotlib.rcParams["text.usetex"] = False ( or noting at all ) > > [image: Inline images 1] > > > > and this is when I use > matplotlib.rcParams["text.usetex"] = True > > [image: Inline images 2] > > > > > > As you can see, One is text and the other is path of points.. > > > Thank You, > Oren. > > > > > On 3 November 2014 21:40, Paul Hobson <pmh...@gm...> wrote: > >> What happens when you save as a postscript file with >> matplotlib.rcParams["text.usetex"] = False? >> -paul >> >> On Mon, Nov 3, 2014 at 7:11 AM, Oren <or...@gm...> wrote: >> >>> Anyone know how to solve this thing? >>> >>> Thanks. >>> >>> On 2 November 2014 03:40, oren <or...@gm...> wrote: >>> >>>> How can I save a matplotlib figure with text as a postscript image and >>>> that >>>> the text will be saved as text. Currently when I save the image as >>>> postscript all the text in the image ( xlabel, ylabel etc.. ) is saved >>>> as >>>> path and not as text.. Is it possible to save it as text? >>>> >>>> If I use the following code ( use latex) >>>> >>>> matplotlib.rcParams["text.usetex"] = True >>>> and save the image as postscript the text is saved as text.. But I do >>>> not >>>> want to use latex.. Is it possible without latex? >>>> >>>> >>>> Thanks >>>> >>>> >>>> Question also on stackoverflow >>>> >>>> http://stackoverflow.com/questions/26649266/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path >>>> >>>> >>>> >>>> -- >>>> View this message in context: >>>> http://matplotlib.1069221.n5.nabble.com/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path-tp44261.html >>>> Sent from the matplotlib - users mailing list archive at Nabble.com. >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> _______________________________________________ >>>> Matplotlib-users mailing list >>>> Mat...@li... >>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >>>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> Matplotlib-users mailing list >>> Mat...@li... >>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >>> >>> >> > |
From: Paul H. <pmh...@gm...> - 2014-11-03 19:40:26
|
What happens when you save as a postscript file with matplotlib.rcParams["text.usetex"] = False? -paul On Mon, Nov 3, 2014 at 7:11 AM, Oren <or...@gm...> wrote: > Anyone know how to solve this thing? > > Thanks. > > On 2 November 2014 03:40, oren <or...@gm...> wrote: > >> How can I save a matplotlib figure with text as a postscript image and >> that >> the text will be saved as text. Currently when I save the image as >> postscript all the text in the image ( xlabel, ylabel etc.. ) is saved as >> path and not as text.. Is it possible to save it as text? >> >> If I use the following code ( use latex) >> >> matplotlib.rcParams["text.usetex"] = True >> and save the image as postscript the text is saved as text.. But I do not >> want to use latex.. Is it possible without latex? >> >> >> Thanks >> >> >> Question also on stackoverflow >> >> http://stackoverflow.com/questions/26649266/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path >> >> >> >> -- >> View this message in context: >> http://matplotlib.1069221.n5.nabble.com/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path-tp44261.html >> Sent from the matplotlib - users mailing list archive at Nabble.com. >> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > |
From: Oren <or...@gm...> - 2014-11-03 15:11:58
|
Anyone know how to solve this thing? Thanks. On 2 November 2014 03:40, oren <or...@gm...> wrote: > How can I save a matplotlib figure with text as a postscript image and that > the text will be saved as text. Currently when I save the image as > postscript all the text in the image ( xlabel, ylabel etc.. ) is saved as > path and not as text.. Is it possible to save it as text? > > If I use the following code ( use latex) > > matplotlib.rcParams["text.usetex"] = True > and save the image as postscript the text is saved as text.. But I do not > want to use latex.. Is it possible without latex? > > > Thanks > > > Question also on stackoverflow > > http://stackoverflow.com/questions/26649266/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path > > > > -- > View this message in context: > http://matplotlib.1069221.n5.nabble.com/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path-tp44261.html > Sent from the matplotlib - users mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: Pierre H. <pie...@cr...> - 2014-11-03 14:32:32
|
Le 02/11/2014 09:34, Scott Lasley a écrit : > I wish I could say that it was because of a deep understanding of the inner workings of matplotlib or a rock solid grasp of python 3's bytes vs strings, but it wasn't. fig.savefig threw the "TypeError: string argument expected, got 'bytes'" exception, so I figured BytesIO might work better with the binary png data than StringIO, and it did. As a side note on the "bytes vs strings" topic, there is PyCon video that I found immensely useful: Pragmatic Unicode, or How Do I Stop the Pain http://nedbatchelder.com/text/unipain.html IMHO a 30 minutes talk worth watching. best, Pierre |
From: Thomas C. <tca...@gm...> - 2014-11-03 14:14:18
|
Forwarding message to list that should have gone there initialy for archiving. ---------- Forwarded message ---------- From: Martin Wiebusch <mwi...@gm...> Date: Mon, Nov 3, 2014 at 8:26 AM Subject: Re: [Matplotlib-users] tex rendering broken? To: Thomas Caswell <tca...@gm...> On Mon, 2014-11-03 at 07:50 -0500, Thomas Caswell wrote: > I can not reproduce this problem on a 1.4.2 installation on my > computer. Try cleaning out the tex.cache folder in either or both of > > matplotlib.get_cachedir() or matplotlib.get_configdir(). Thanks. Clearing the cache directory did the trick. It might be a good idea to mention matplotlib.get_cachedir() and matplotlib.get_configdir() explicitly under 'Troubleshooting' on the web page. Currently there is a link which points you to matplotlib.get_configdir() (which was empty in my case) but not matplotlib.get_cachedir(). Best regards, Martin. -- Thomas Caswell tca...@gm... |
From: Thomas C. <tca...@gm...> - 2014-11-03 14:14:10
|
Forwarding message to list that should have gone there initialy for archiving. ---------- Forwarded message ---------- From: Thomas Caswell <tca...@gm...> Date: Mon, Nov 3, 2014 at 7:50 AM Subject: Re: [Matplotlib-users] tex rendering broken? To: Martin Wiebusch <mwi...@gm...> My first guess is that there is that some thing wrong with your latex installation as the images on the website are regenerated as part of building the documentation. I can not reproduce this problem on a 1.4.2 installation on my computer. Try cleaning out the tex.cache folder in either or both of matplotlib.get_cachedir() or matplotlib.get_configdir(). Tom On Mon, Nov 3, 2014, 06:24 Martin Wiebusch <mwi...@gm...> wrote: > I just downgraded to matplotlib 1.1.1 and now everything works. Looks > like a regression to me. > > On Fri, 2014-10-31 at 15:53 +0000, Martin Wiebusch wrote: > > I am having trouble executing the example for typesetting labels with > > latex from http://matplotlib.org/users/usetex.html. Copying the standard > > example, tex_demo.py, to a file and executing it gives the following > > output: > > > > Traceback (most recent call last): > > File "scratch.py", line 21, in <module> > > plt.savefig('tex_demo') > > File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 561, in > > savefig > > return fig.savefig(*args, **kwargs) > > File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 1421, > > in savefig > > self.canvas.print_figure(*args, **kwargs) > > File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line > > 2220, in print_figure > > **kwargs) > > File > > "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line > > 505, in print_png > > FigureCanvasAgg.draw(self) > > File > > "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line > > 451, in draw > > self.figure.draw(self.renderer) > > File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in > > draw_wrapper > > draw(artist, renderer, *args, **kwargs) > > File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 1034, > > in draw > > func(*args) > > File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in > > draw_wrapper > > draw(artist, renderer, *args, **kwargs) > > File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 2086, in > > draw > > a.draw(renderer) > > File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in > > draw_wrapper > > draw(artist, renderer, *args, **kwargs) > > File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 1105, in > > draw > > self.label.draw(renderer) > > File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in > > draw_wrapper > > draw(artist, renderer, *args, **kwargs) > > File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 594, in > > draw > > self._fontproperties, angle, mtext=self) > > File > > "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line > > 241, in draw_tex > > self._renderer.draw_text_image(Z, x, y, angle, gc) > > OverflowError: cannot convert float infinity to integer > > > > My system is > > > > Linux mwlaptop 3.16.0-24-generic #32-Ubuntu SMP Tue Oct 28 13:07:32 UTC > > 2014 x86_64 x86_64 x86_64 GNU/Linux > > > > My matplotlib version is 1.3.1, and I am using standard packages from my > > Ubuntu 14.10 distribution. > > > > > > > > ------------------------------------------------------------ > ------------------ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > -- Thomas Caswell tca...@gm... |
From: Martin W. <mwi...@gm...> - 2014-11-03 11:23:01
|
I just downgraded to matplotlib 1.1.1 and now everything works. Looks like a regression to me. On Fri, 2014-10-31 at 15:53 +0000, Martin Wiebusch wrote: > I am having trouble executing the example for typesetting labels with > latex from http://matplotlib.org/users/usetex.html. Copying the standard > example, tex_demo.py, to a file and executing it gives the following > output: > > Traceback (most recent call last): > File "scratch.py", line 21, in <module> > plt.savefig('tex_demo') > File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 561, in > savefig > return fig.savefig(*args, **kwargs) > File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 1421, > in savefig > self.canvas.print_figure(*args, **kwargs) > File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line > 2220, in print_figure > **kwargs) > File > "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line > 505, in print_png > FigureCanvasAgg.draw(self) > File > "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line > 451, in draw > self.figure.draw(self.renderer) > File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in > draw_wrapper > draw(artist, renderer, *args, **kwargs) > File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 1034, > in draw > func(*args) > File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in > draw_wrapper > draw(artist, renderer, *args, **kwargs) > File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 2086, in > draw > a.draw(renderer) > File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in > draw_wrapper > draw(artist, renderer, *args, **kwargs) > File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 1105, in > draw > self.label.draw(renderer) > File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in > draw_wrapper > draw(artist, renderer, *args, **kwargs) > File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 594, in > draw > self._fontproperties, angle, mtext=self) > File > "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line > 241, in draw_tex > self._renderer.draw_text_image(Z, x, y, angle, gc) > OverflowError: cannot convert float infinity to integer > > My system is > > Linux mwlaptop 3.16.0-24-generic #32-Ubuntu SMP Tue Oct 28 13:07:32 UTC > 2014 x86_64 x86_64 x86_64 GNU/Linux > > My matplotlib version is 1.3.1, and I am using standard packages from my > Ubuntu 14.10 distribution. > > |
From: Hartmut K. <har...@gm...> - 2014-11-03 03:31:31
|
Ian, > You are using masked arrays where you shouldn't, again. The documentation > for tricontour states that it expects z to be an array, it doesn't say > masked array. If you pass it a masked array, it will ignore the > mask. Hence you have a number of triangles that include a vertex with a > z-value of -99999; when contoured these are going to give you lots of thin > polygons that you don't want. > You need to stop using masked arrays where they are not expected. Your > triangulation should only contain triangles for which you have valid data > at all three vertices. So either remove invalid triangles from your 'ele' > array before creating the triangulation, or set a mask on the > triangulation once it has been created, e.g. > > point_mask_indices = numpy.where(z.mask) > tri_mask = numpy.any(numpy.in1d(ele, point_mask_indices).reshape(-1, > 3), axis=1) > triang.set_mask(tri_mask) Thanks very much for this explanation! With your code everything fell into place and we see the geometries we expect to see. Great library! Regards Hartmut --------------- http://boost-spirit.com http://stellar.cct.lsu.edu |
From: Martin W. <mwi...@gm...> - 2014-11-02 19:51:57
|
I just installed matplotlib 1.4.2 via pip, and executing the file matplotlib-1.4.2/examples/pylab_examples/tex_demo.py from the source tarball gives the same error: Traceback (most recent call last): File "matplotlib-1.4.2/examples/pylab_examples/tex_demo.py", line 29, in <module> plt.savefig('tex_demo') File "/usr/local/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 577, in savefig res = fig.savefig(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/matplotlib/figure.py", line 1470, in savefig self.canvas.print_figure(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/matplotlib/backend_bases.py", line 2194, in print_figure **kwargs) File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_gtk3agg.py", line 97, in print_png return agg.print_png(filename, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.py", line 521, in print_png FigureCanvasAgg.draw(self) File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.py", line 469, in draw self.figure.draw(self.renderer) File "/usr/local/lib/python2.7/dist-packages/matplotlib/artist.py", line 59, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/matplotlib/figure.py", line 1079, in draw func(*args) File "/usr/local/lib/python2.7/dist-packages/matplotlib/artist.py", line 59, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/matplotlib/axes/_base.py", line 2092, in draw a.draw(renderer) File "/usr/local/lib/python2.7/dist-packages/matplotlib/artist.py", line 59, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/matplotlib/axis.py", line 1128, in draw self.label.draw(renderer) File "/usr/local/lib/python2.7/dist-packages/matplotlib/artist.py", line 59, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/matplotlib/text.py", line 581, in draw self._fontproperties, angle, mtext=mtext) File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.py", line 259, in draw_tex self._renderer.draw_text_image(Z, x, y, angle, gc) OverflowError: cannot convert float infinity to integer System information Linux mwlaptop 3.16.0-24-generic #32-Ubuntu SMP Tue Oct 28 13:07:32 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux |
From: Benjamin R. <ben...@ou...> - 2014-11-02 16:30:52
|
Would it make sense to at least emit a warning when a mask is encountered. There are very few places in matplotlib where masked arrays are not allowed (I think histograms is the other spot, but I can't remember for sure). On Sun, Nov 2, 2014 at 11:10 AM, Ian Thomas <ian...@gm...> wrote: > On 1 November 2014 18:20, Hartmut Kaiser <har...@gm...> wrote: > >> Thanks Ian! Your detailed answer is much appreciated. >> >> As you might have already guessed, we have quite some problems creating >> clean geometries from the generated contour data. I have tried to put >> together one (reasonably) small test case illustrating at least one of our >> issues. I apologize for the lengthy code attached. >> >> The two attached figures demonstrate what we see. Matplotlib.png >> (generated by the library) does not really look ok. Also, the attached >> shape.png shows that there are a lot of geometries generated which are >> self-intersecting (highlighted in dark blue), and we already skip polygons >> with less than 3 points. BTW, there are many polygons stacked with the same >> geometries. >> >> Anything we can do about this? >> >> Thanks! >> Regards Hartmut >> > > Hartmut, > > You are using masked arrays where you shouldn't, again. The documentation > for tricontour states that it expects z to be an array, it doesn't say > masked array. If you pass it a masked array, it will ignore the mask. > Hence you have a number of triangles that include a vertex with a z-value > of -99999; when contoured these are going to give you lots of thin polygons > that you don't want. > > You need to stop using masked arrays where they are not expected. Your > triangulation should only contain triangles for which you have valid data > at all three vertices. So either remove invalid triangles from your 'ele' > array before creating the triangulation, or set a mask on the triangulation > once it has been created, e.g. > > point_mask_indices = numpy.where(z.mask) > tri_mask = numpy.any(numpy.in1d(ele, point_mask_indices).reshape(-1, > 3), axis=1) > triang.set_mask(tri_mask) > > Ian > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > |
From: Ian T. <ian...@gm...> - 2014-11-02 16:10:08
|
On 1 November 2014 18:20, Hartmut Kaiser <har...@gm...> wrote: > Thanks Ian! Your detailed answer is much appreciated. > > As you might have already guessed, we have quite some problems creating > clean geometries from the generated contour data. I have tried to put > together one (reasonably) small test case illustrating at least one of our > issues. I apologize for the lengthy code attached. > > The two attached figures demonstrate what we see. Matplotlib.png > (generated by the library) does not really look ok. Also, the attached > shape.png shows that there are a lot of geometries generated which are > self-intersecting (highlighted in dark blue), and we already skip polygons > with less than 3 points. BTW, there are many polygons stacked with the same > geometries. > > Anything we can do about this? > > Thanks! > Regards Hartmut > Hartmut, You are using masked arrays where you shouldn't, again. The documentation for tricontour states that it expects z to be an array, it doesn't say masked array. If you pass it a masked array, it will ignore the mask. Hence you have a number of triangles that include a vertex with a z-value of -99999; when contoured these are going to give you lots of thin polygons that you don't want. You need to stop using masked arrays where they are not expected. Your triangulation should only contain triangles for which you have valid data at all three vertices. So either remove invalid triangles from your 'ele' array before creating the triangulation, or set a mask on the triangulation once it has been created, e.g. point_mask_indices = numpy.where(z.mask) tri_mask = numpy.any(numpy.in1d(ele, point_mask_indices).reshape(-1, 3), axis=1) triang.set_mask(tri_mask) Ian |
From: Julien H. <jul...@gm...> - 2014-11-02 09:05:39
|
Well, the methodology is sufficient and efficient, I'm OK with that :) Thanks for these additional information. Regards, Le 2 nov. 2014 09:34, "Scott Lasley" <sl...@sp...> a écrit : > I wish I could say that it was because of a deep understanding of the > inner workings of matplotlib or a rock solid grasp of python 3's bytes vs > strings, but it wasn't. fig.savefig threw the "TypeError: string argument > expected, got 'bytes'" exception, so I figured BytesIO might work better > with the binary png data than StringIO, and it did. Your image URI > included base64 encoding I added the base64 code and fiddled with decoding > to get it to produce ASCII. iPython is great for this sort of playing > around with snippets of code. > > btw, if you are not aware of the pros and cons of using data uri's to > embed images take a look at this Wikipedia page for some helpful information > http://en.wikipedia.org/wiki/Data_URI_scheme > > Apologies if you were expecting a more detailed answer, > Scott > > > On Nov 1, 2014, at 4:37 PM, Julien Hillairet <jul...@gm...> > wrote: > > > Indeed, it works also for me with Python 3.3.5. > > > > Could you explain the changes you made and the reasons behind the > byte/string encoding ? > > > > Best regards, > > > > 2014-11-01 17:21 GMT+01:00 Scott Lasley <sl...@sp...>: > > This works for me with python 3.4.2 > > > > import matplotlib.pyplot as plt > > from io import BytesIO > > import base64 > > > > fig = plt.figure() > > ax = fig.add_subplot(111) > > ax.plot([1,2,3]) > > > > sio = BytesIO() > > > > fig.savefig(sio, format="png") > > > > html = """<html><body> > > <img src="data:image/png;base64,{}"/> > > </body></html>""".format(base64.encodebytes(sio.getvalue()).decode()) > > > > > > For python 2.7.8 change html =""" to > > > > html = """<html><body> > > <img src="data:image/png;base64,%s"/> > > </body></html>""" % base64.encodestring(sio.getvalue()) > > > > Best regards, > > Scott > > > > > > On Nov 1, 2014, at 7:37 AM, Julien Hillairet <jul...@gm...> > wrote: > > > > > Dear all, > > > I'm trying to write a html page content in which a png figure is > generated by matplotlib, with Python3. > > > However, the following piece of code does not work with > matplotlib/Python3 (while it should work with Python2). The error is the > following on > > > TypeError: string argument expected, got 'bytes' > > > when on fig.savefig(sio, format="png") > > > Could someone explain me how to do it ? > > > Best regards, > > > Julien > > > > > > -------------------------------------------- > > > > > > import matplotlib.pyplot as plt > > > > > > from io import StringIO > > > fig = plt.figure() > > > ax = fig.add_subplot(111) > > > ax.plot([1,2,3]) > > > > > > sio = StringIO() > > > > > > fig.savefig(sio, format="png") > > > > > > html = """<html><body> > > > ...a bunch of text and html here... > > > <img src="data:image/png;base64,%s"/> > > > ...more text and html... > > > </body></html>""" % sio.getvalue().strip() > > > > > > > ------------------------------------------------------------------------------ > > |
From: Scott L. <sl...@sp...> - 2014-11-02 08:34:33
|
I wish I could say that it was because of a deep understanding of the inner workings of matplotlib or a rock solid grasp of python 3's bytes vs strings, but it wasn't. fig.savefig threw the "TypeError: string argument expected, got 'bytes'" exception, so I figured BytesIO might work better with the binary png data than StringIO, and it did. Your image URI included base64 encoding I added the base64 code and fiddled with decoding to get it to produce ASCII. iPython is great for this sort of playing around with snippets of code. btw, if you are not aware of the pros and cons of using data uri's to embed images take a look at this Wikipedia page for some helpful information http://en.wikipedia.org/wiki/Data_URI_scheme Apologies if you were expecting a more detailed answer, Scott On Nov 1, 2014, at 4:37 PM, Julien Hillairet <jul...@gm...> wrote: > Indeed, it works also for me with Python 3.3.5. > > Could you explain the changes you made and the reasons behind the byte/string encoding ? > > Best regards, > > 2014-11-01 17:21 GMT+01:00 Scott Lasley <sl...@sp...>: > This works for me with python 3.4.2 > > import matplotlib.pyplot as plt > from io import BytesIO > import base64 > > fig = plt.figure() > ax = fig.add_subplot(111) > ax.plot([1,2,3]) > > sio = BytesIO() > > fig.savefig(sio, format="png") > > html = """<html><body> > <img src="data:image/png;base64,{}"/> > </body></html>""".format(base64.encodebytes(sio.getvalue()).decode()) > > > For python 2.7.8 change html =""" to > > html = """<html><body> > <img src="data:image/png;base64,%s"/> > </body></html>""" % base64.encodestring(sio.getvalue()) > > Best regards, > Scott > > > On Nov 1, 2014, at 7:37 AM, Julien Hillairet <jul...@gm...> wrote: > > > Dear all, > > I'm trying to write a html page content in which a png figure is generated by matplotlib, with Python3. > > However, the following piece of code does not work with matplotlib/Python3 (while it should work with Python2). The error is the following on > > TypeError: string argument expected, got 'bytes' > > when on fig.savefig(sio, format="png") > > Could someone explain me how to do it ? > > Best regards, > > Julien > > > > -------------------------------------------- > > > > import matplotlib.pyplot as plt > > > > from io import StringIO > > fig = plt.figure() > > ax = fig.add_subplot(111) > > ax.plot([1,2,3]) > > > > sio = StringIO() > > > > fig.savefig(sio, format="png") > > > > html = """<html><body> > > ...a bunch of text and html here... > > <img src="data:image/png;base64,%s"/> > > ...more text and html... > > </body></html>""" % sio.getvalue().strip() > > > > ------------------------------------------------------------------------------ |
From: oren <or...@gm...> - 2014-11-02 01:40:48
|
How can I save a matplotlib figure with text as a postscript image and that the text will be saved as text. Currently when I save the image as postscript all the text in the image ( xlabel, ylabel etc.. ) is saved as path and not as text.. Is it possible to save it as text? If I use the following code ( use latex) matplotlib.rcParams["text.usetex"] = True and save the image as postscript the text is saved as text.. But I do not want to use latex.. Is it possible without latex? Thanks Question also on stackoverflow http://stackoverflow.com/questions/26649266/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path -- View this message in context: http://matplotlib.1069221.n5.nabble.com/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path-tp44261.html Sent from the matplotlib - users mailing list archive at Nabble.com. |
From: Benjamin R. <ben...@ou...> - 2014-11-01 20:52:33
|
Jerzy, I really do not wish to get into an argument with you. This seems to happen every time you come onto this mailing list. If "winning" this argument is so important to you, then you may have it. I will not continue to split hairs with you. Thank you for mentioning the concept of implicit surfaces and marching cubes. I am glad that is helpful to the original poster. Cheers! Ben Root On Sat, Nov 1, 2014 at 4:38 PM, Jerzy Karczmarczuk < jer...@un...> wrote: > > Le 01/11/2014 20:34, Benjamin Root a écrit : > > Actually, my response is still completely valid. You can only plot > surfaces that can be represented parametrically in two dimensions. Find me > a single plotting library that can do differently without having to get to > this final step. > > > 1. I did not claim that you said something invalid, only that it seemed > weakly appropriate for Peter Karpedjiev. > > 2. Unfortunately NOW you say something inexact. Of course you can plot > implicit surfaces without 2D parametrization. All the ray-tracing > technology is adapted to that. > > POV-Ray, etc., if you want some names. Some terrain renderers, such as > Terragen use it as well. YafaRay was once embeddable in Blender. > > I am sorry if the answer is unsatisfactory to you, but it is the correct > one to give. > > 3. But "my satisfaction" is not the issue. I tried to direct Peter in some > *usable* direction, according to my experience. > > Since the implementation of marching cubes, and other similar techniques > is awkward, not very efficient in Python (I tried it), I suggest very > strongly that Peter direct himself -at least temporarily - to the RT > methods. > > If he wishes, I might help him in private. Writing a Ray Tracer in > Python/numpy is not so difficult (I gave it as student projects a few > times), and of course everything functional may be programmed in POV-Ray. > > Best regards. > > Jerzy K. > > > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > |
From: Jerzy K. <jer...@un...> - 2014-11-01 20:38:26
|
Le 01/11/2014 20:34, Benjamin Root a écrit : > Actually, my response is still completely valid. You can only plot > surfaces that can be represented parametrically in two dimensions. > Find me a single plotting library that can do differently without > having to get to this final step. 1. I did not claim that you said something invalid, only that it seemed weakly appropriate for Peter Karpedjiev. 2. Unfortunately NOW you say something inexact. Of course you can plot implicit surfaces without 2D parametrization. All the ray-tracing technology is adapted to that. POV-Ray, etc., if you want some names. Some terrain renderers, such as Terragen use it as well. YafaRay was once embeddable in Blender. > I am sorry if the answer is unsatisfactory to you, but it is the > correct one to give. 3. But "my satisfaction" is not the issue. I tried to direct Peter in some *usable* direction, according to my experience. Since the implementation of marching cubes, and other similar techniques is awkward, not very efficient in Python (I tried it), I suggest very strongly that Peter direct himself -at least temporarily - to the RT methods. If he wishes, I might help him in private. Writing a Ray Tracer in Python/numpy is not so difficult (I gave it as student projects a few times), and of course everything functional may be programmed in POV-Ray. Best regards. Jerzy K. |
From: Julien H. <jul...@gm...> - 2014-11-01 20:38:01
|
Indeed, it works also for me with Python 3.3.5. Could you explain the changes you made and the reasons behind the byte/string encoding ? Best regards, 2014-11-01 17:21 GMT+01:00 Scott Lasley <sl...@sp...>: > This works for me with python 3.4.2 > > import matplotlib.pyplot as plt > from io import BytesIO > import base64 > > fig = plt.figure() > ax = fig.add_subplot(111) > ax.plot([1,2,3]) > > sio = BytesIO() > > fig.savefig(sio, format="png") > > html = """<html><body> > <img src="data:image/png;base64,{}"/> > </body></html>""".format(base64.encodebytes(sio.getvalue()).decode()) > > > For python 2.7.8 change html =""" to > > html = """<html><body> > <img src="data:image/png;base64,%s"/> > </body></html>""" % base64.encodestring(sio.getvalue()) > > Best regards, > Scott > > > On Nov 1, 2014, at 7:37 AM, Julien Hillairet <jul...@gm...> > wrote: > > > Dear all, > > I'm trying to write a html page content in which a png figure is > generated by matplotlib, with Python3. > > However, the following piece of code does not work with > matplotlib/Python3 (while it should work with Python2). The error is the > following on > > TypeError: string argument expected, got 'bytes' > > when on fig.savefig(sio, format="png") > > Could someone explain me how to do it ? > > Best regards, > > Julien > > > > -------------------------------------------- > > > > import matplotlib.pyplot as plt > > > > from io import StringIO > > fig = plt.figure() > > ax = fig.add_subplot(111) > > ax.plot([1,2,3]) > > > > sio = StringIO() > > > > fig.savefig(sio, format="png") > > > > html = """<html><body> > > ...a bunch of text and html here... > > <img src="data:image/png;base64,%s"/> > > ...more text and html... > > </body></html>""" % sio.getvalue().strip() > > > > > ------------------------------------------------------------------------------ > > |
From: Julien H. <jul...@gm...> - 2014-11-01 20:30:28
|
Many Thanks for your support. It is Python 3.3.5 and matplotlib 1.4.0 I've also found that it worked with ByteIO(), but then I was stuck by the encode/decode things. Thanks very much ! The traceback is below: Traceback (most recent call last): File "<ipython-input-1-e8a4a3fa67f4>", line 1, in <module> runfile('/home/hash/example.py', wdir='/home/hash') File "/usr/lib/python3.3/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 586, in runfile execfile(filename, namespace) File "/usr/lib/python3.3/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 48, in execfile exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace) File "/home/hash/example.py", line 10, in <module> fig.savefig(sio, format="png") File "/usr/lib64/python3.3/site-packages/matplotlib/figure.py", line 1470, in savefig self.canvas.print_figure(*args, **kwargs) File "/usr/lib64/python3.3/site-packages/matplotlib/backend_bases.py", line 2192, in print_figure **kwargs) File "/usr/lib64/python3.3/site-packages/matplotlib/backends/backend_agg.py", line 525, in print_png filename_or_obj, self.figure.dpi) TypeError: string argument expected, got 'bytes' 2014-11-01 17:21 GMT+01:00 Scott Lasley <sl...@sp...>: > This works for me with python 3.4.2 > > import matplotlib.pyplot as plt > from io import BytesIO > import base64 > > fig = plt.figure() > ax = fig.add_subplot(111) > ax.plot([1,2,3]) > > sio = BytesIO() > > fig.savefig(sio, format="png") > > html = """<html><body> > <img src="data:image/png;base64,{}"/> > </body></html>""".format(base64.encodebytes(sio.getvalue()).decode()) > > > For python 2.7.8 change html =""" to > > html = """<html><body> > <img src="data:image/png;base64,%s"/> > </body></html>""" % base64.encodestring(sio.getvalue()) > > Best regards, > Scott > > > On Nov 1, 2014, at 7:37 AM, Julien Hillairet <jul...@gm...> > wrote: > > > Dear all, > > I'm trying to write a html page content in which a png figure is > generated by matplotlib, with Python3. > > However, the following piece of code does not work with > matplotlib/Python3 (while it should work with Python2). The error is the > following on > > TypeError: string argument expected, got 'bytes' > > when on fig.savefig(sio, format="png") > > Could someone explain me how to do it ? > > Best regards, > > Julien > > > > -------------------------------------------- > > > > import matplotlib.pyplot as plt > > > > from io import StringIO > > fig = plt.figure() > > ax = fig.add_subplot(111) > > ax.plot([1,2,3]) > > > > sio = StringIO() > > > > fig.savefig(sio, format="png") > > > > html = """<html><body> > > ...a bunch of text and html here... > > <img src="data:image/png;base64,%s"/> > > ...more text and html... > > </body></html>""" % sio.getvalue().strip() > > > > > ------------------------------------------------------------------------------ > > |
From: Peter K. <pke...@gm...> - 2014-11-01 19:49:15
|
Hi Jerzy and Ben, Thanks for you answers! I must say that although Ben is right in principle, Jerzy's answer is exactly what I was looking for. Even if matplotlib can't do it by itself, there appears to be other libraries that do the heavy lifting and return a set of triangles which can then be placed in a Polygon3DCollection and plotted. It's always good to know what something is called. Searching for '3D contours' was leading nowhere, but plugging in '*polygonization of the implicit surface' *returned a multitude of descriptions of the problem and libraries. It turns out I had been trying to implement the marching cubes algorithm myself for the better part of the last week. Oops! Thanks again to the both of you!! -Peter On 11/1/14, 8:34 PM, Benjamin Root wrote: > Jerzy, > > Actually, my response is still completely valid. You can only plot > surfaces that can be represented parametrically in two dimensions. > Find me a single plotting library that can do differently without > having to get to this final step. For matplotlib, it is up to the user > to get the data to that point. As you stated, he is seeking > polygonization of an *implicit* surface. Matplotlib has no means of > understanding this. And this is unlikely to happen anytime soon given > the inherent 2D limitations of Matplotlib. > > I am sorry if the answer is unsatisfactory to you, but it is the > correct one to give. > > Ben Root > > > On Sat, Nov 1, 2014 at 2:49 PM, Jerzy Karczmarczuk > <jer...@un... <mailto:jer...@un...>> > wrote: > > > Le 01/11/2014 19:21, Benjamin Root answers the query of Peter > Kerpedjiev, who wants to plot (with Matplotlib) the surface of an > implicit surface (at least it was his presented example). > >> Your comment "of course, plotting a sphere can be done in >> spherical coordinates" is actually the right thought process. >> Spherical coordinates is how you parametrize your spherical >> surface. Pick a coordinate system that is relevant to your >> problem at hand and use it. > > Sorry Ben, but this is not an answer. P.K. clearly states that his > case is more complicated, and no parametrization is likely. > Anyway, the spherical exercise as it is presented uses the 3D > constraint, it is not parametric. > > The general solution is the *polygonization of the implicit > surface*, which is a well established technology (although > non-trivial). For example the /marching cubes / marching > simplices/ algorithms and their variants. > These are techniques for the polygonization of a mesh. > > If P.K. has an analytic formula for his distributions, and is able > to compute gradients, etc., there are some more efficient > techniques, but in general it is the case for solving the equation > F(x,y,z)=0 for {x,y,z} ; here Matplotlib doesn't offer (yet) any > tools if I am not mistaken. > > Jerzy Karczmarczuk > Caen, France. > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > <mailto:Mat...@li...> > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users |
From: Benjamin R. <ben...@ou...> - 2014-11-01 19:34:29
|
Jerzy, Actually, my response is still completely valid. You can only plot surfaces that can be represented parametrically in two dimensions. Find me a single plotting library that can do differently without having to get to this final step. For matplotlib, it is up to the user to get the data to that point. As you stated, he is seeking polygonization of an *implicit* surface. Matplotlib has no means of understanding this. And this is unlikely to happen anytime soon given the inherent 2D limitations of Matplotlib. I am sorry if the answer is unsatisfactory to you, but it is the correct one to give. Ben Root On Sat, Nov 1, 2014 at 2:49 PM, Jerzy Karczmarczuk < jer...@un...> wrote: > > Le 01/11/2014 19:21, Benjamin Root answers the query of Peter Kerpedjiev, > who wants to plot (with Matplotlib) the surface of an implicit surface (at > least it was his presented example). > > Your comment "of course, plotting a sphere can be done in spherical > coordinates" is actually the right thought process. Spherical coordinates > is how you parametrize your spherical surface. Pick a coordinate system > that is relevant to your problem at hand and use it. > > > Sorry Ben, but this is not an answer. P.K. clearly states that his case is > more complicated, and no parametrization is likely. Anyway, the spherical > exercise as it is presented uses the 3D constraint, it is not parametric. > > The general solution is the *polygonization of the implicit surface*, > which is a well established technology (although non-trivial). For example > the *marching cubes / marching simplices* algorithms and their variants. > These are techniques for the polygonization of a mesh. > > If P.K. has an analytic formula for his distributions, and is able to > compute gradients, etc., there are some more efficient techniques, but in > general it is the case for solving the equation F(x,y,z)=0 for {x,y,z} ; > here Matplotlib doesn't offer (yet) any tools if I am not mistaken. > > Jerzy Karczmarczuk > Caen, France. > > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > |
From: Jerzy K. <jer...@un...> - 2014-11-01 19:09:00
|
Le 01/11/2014 19:21, Benjamin Root answers the query of Peter Kerpedjiev, who wants to plot (with Matplotlib) the surface of an implicit surface (at least it was his presented example). > Your comment "of course, plotting a sphere can be done in spherical > coordinates" is actually the right thought process. Spherical > coordinates is how you parametrize your spherical surface. Pick a > coordinate system that is relevant to your problem at hand and use it. Sorry Ben, but this is not an answer. P.K. clearly states that his case is more complicated, and no parametrization is likely. Anyway, the spherical exercise as it is presented uses the 3D constraint, it is not parametric. The general solution is the *polygonization of the implicit surface*, which is a well established technology (although non-trivial). For example the /marching cubes / marching simplices/ algorithms and their variants. These are techniques for the polygonization of a mesh. If P.K. has an analytic formula for his distributions, and is able to compute gradients, etc., there are some more efficient techniques, but in general it is the case for solving the equation F(x,y,z)=0 for {x,y,z} ; here Matplotlib doesn't offer (yet) any tools if I am not mistaken. Jerzy Karczmarczuk Caen, France. |
From: Benjamin R. <ben...@ou...> - 2014-11-01 18:21:57
|
Generally speaking, a plottable 3D surface can be represented parametrically in 2D (hence why it is a surface). Your point cloud can not be represented parametrically in 2 dimensions, hence why you are having difficulty figuring out how to plot it as a surface. I used to have similar problems with 3D plotting (both here and in Matlab) before I came to this realization. Your comment "of course, plotting a sphere can be done in spherical coordinates" is actually the right thought process. Spherical coordinates is how you parametrize your spherical surface. Pick a coordinate system that is relevant to your problem at hand and use it. I hope this helps! Ben Root On Sat, Nov 1, 2014 at 2:07 PM, Peter Kerpedjiev <pke...@gm...> wrote: > Hi, > > I'm trying to plot an outline of an arbitrary 3D shape using > matplotlib's plot_surface, and I wanted to ask if any one has any ideas > as to how to do it. Here's the beginnings of a simple example: > > # create a grid > resolution = 10 > > xs = np.linspace(-1,1,resolution) > ys = np.linspace(-1,1,resolution) > zs = np.linspace(-1,1,resolution) > > X,Y,Z = np.meshgrid(xs, ys, zs) > > #Then we can calculate the square of the distance of each point to the > center: > W = X**2 + Y**2 + Z**2 > > # Let's see which points are within a certain radius: > C = W < 1. > > # this can be used to create a point-cloud > x = X[C] > y = Y[C] > z = Z[C] > > From this I tried a lot options, the best being to do some XOR > operations on the array C to get a list of points which are on the > surface of the sphere. My question is, can anybody see a reasonable way > to plot this surface using mplot3D? > > Of course plotting a sphere can be done using spherical coordinates, but > that defeats the purpose of this example :) This is just a > simplification as the application is actually to draw 3D contours (i.e. > shapes, rather than iso-lines) of a three-parameter probability > distribution. > > Thanks in advance, > > -Peter > > > > > > > > > > > > ------------------------------------------------------------------------------ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: Hartmut K. <har...@gm...> - 2014-11-01 18:20:59
|
> On 26 October 2014 00:18, Hartmut Kaiser <har...@gm...> wrote: > At this point we assume, that polys[0] is a linear ring to be interpreted > as > a polygon exterior and polys[1:] are the corresponding interiors for > polys[0]. > > Here are our questions: > > Is this assumption correct? > Is there any detailed documentation describing the structure of the > returned > geometries? > Are the linear rings supposed to be correctly oriented (area > 0 for > exteriors and area < 0 for the interiors)? > > Hello Hartmut, > In brief, the answers are no, no and yes. > In more detail, assuming polys is not empty then it will contain one or > more polygon exteriors and zero or more interiors, and they can be in any > order. Here is a simple example where polys[0] is an interior and > polys[1] an exterior: > > x = [0, 0, 1, 1, 0.5] > y = [0, 1, 0, 1, 0.5] > z = [0.5, 0.5, 0.5, 0.5, 0] > triang = tri.Triangulation(x, y) > contour = plt.tricontourf(triang, z, levels=[0.2, 0.4]) > The returned geometries are purposefully not documented. They are an > 'implementation detail' and not considered part of the public interface. > and as such they could change at any time and hence should not be relied > upon. Of course you can choose to access them if you wish, as I do myself > sometimes, but we make no promises about what the order of the polygons > is, or that it won't change tomorrow. > In reality the order of the polygons is chosen to be something that is > easy for both the contour generation routines to create and for the > various backends to render. If you were to look at the output generated > by contourf, you will see that it is organised differently from that > produced by tricontourf and is more like you would like it to be, i.e. one > or more groups of an exterior polygon followed by zero or more > interiors. This is historical as the contourf code dates from before all > of the backends were able to render arbitrary groups of exterior and > interior polygons, and so the contourf code has to calculate the order for > the backends. When the tricontourf code was written the backends were all > able to calculate the exterior/interior containment themselves, so there > was no need for tricontourf to do it as well. Thanks Ian! Your detailed answer is much appreciated. As you might have already guessed, we have quite some problems creating clean geometries from the generated contour data. I have tried to put together one (reasonably) small test case illustrating at least one of our issues. I apologize for the lengthy code attached. The two attached figures demonstrate what we see. Matplotlib.png (generated by the library) does not really look ok. Also, the attached shape.png shows that there are a lot of geometries generated which are self-intersecting (highlighted in dark blue), and we already skip polygons with less than 3 points. BTW, there are many polygons stacked with the same geometries. Anything we can do about this? Thanks! Regards Hartmut --------------- http://boost-spirit.com http://stellar.cct.lsu.edu |
From: Peter K. <pke...@gm...> - 2014-11-01 18:07:45
|
Hi, I'm trying to plot an outline of an arbitrary 3D shape using matplotlib's plot_surface, and I wanted to ask if any one has any ideas as to how to do it. Here's the beginnings of a simple example: # create a grid resolution = 10 xs = np.linspace(-1,1,resolution) ys = np.linspace(-1,1,resolution) zs = np.linspace(-1,1,resolution) X,Y,Z = np.meshgrid(xs, ys, zs) #Then we can calculate the square of the distance of each point to the center: W = X**2 + Y**2 + Z**2 # Let's see which points are within a certain radius: C = W < 1. # this can be used to create a point-cloud x = X[C] y = Y[C] z = Z[C] From this I tried a lot options, the best being to do some XOR operations on the array C to get a list of points which are on the surface of the sphere. My question is, can anybody see a reasonable way to plot this surface using mplot3D? Of course plotting a sphere can be done using spherical coordinates, but that defeats the purpose of this example :) This is just a simplification as the application is actually to draw 3D contours (i.e. shapes, rather than iso-lines) of a three-parameter probability distribution. Thanks in advance, -Peter |