|
From: Jesper L. <jes...@gm...> - 2014-03-24 09:45:59
|
Hi matplotlib users,
I am using matplotlib to produce plots (tiles) in a Web Map Service.
Unfortunately I cannot get Matplotlib to plot on the entire image. There
are one transparent (pixel) line at the bottom and one transparent line at
the right. This is of course a problem when the tiles are shown in a map.
Please see example below. Can anyone see what I am doing wrong?
Best regards,
Jesper
import numpy as np
import matplotlib as mpl
from matplotlib.figure import Figure
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
w = 256
h = 256
dpi = 128
figsize = w/dpi, h/dpi
fig = Figure(figsize=figsize, dpi=dpi, frameon=False)
canvas = FigureCanvas(fig)
ax = fig.add_axes([0, 0, 1, 1])
x = np.arange(0, 10, 0.1)
y = np.arange(10, 20, 0.2)
X, Y = np.meshgrid(x, y)
D = np.ones((X.shape[0]-1, X.shape[1]-1))
V = np.linspace(0.0, 1.0, 10)
ax.pcolor(X, Y, D, antialiased=False)
ax.axis( [x[0], x[-1], y[0], y[-1]] )
ax.axis('off')
filename = 'testfile.png'
fig.savefig(filename, dpi=128)
# Test image
from PIL import Image
im = Image.open(filename)
print im.getcolors()
|
|
From: Pierre H. <pie...@cr...> - 2014-03-24 10:27:21
|
Hi, Le 24/03/2014 10:45, Jesper Larsen a écrit : > I am using matplotlib to produce plots (tiles) in a Web Map Service. > Unfortunately I cannot get Matplotlib to plot on the entire image. > There are one transparent (pixel) line at the bottom and one > transparent line at the right. This is of course a problem when the > tiles are shown in a map. Please see example below. Can anyone see > what I am doing wrong? I've run your code and got no transparent pixels. print im.getcolors() [(65536, (0, 0, 128, 255))] I also tried with __future__ division to see if there was something with figsize = w/dpi, h/dpi, but got the same output best, Pierre (python 2.7 on Linux, mpl 1.3.1) |
|
From: Jesper L. <jes...@gm...> - 2014-03-24 10:49:24
|
Thanks Pierre, from __future__ import division did not help me, I am using mpl 1.1.1rc. I will try upgrading to a newer version of mpl and report back whether that helps. My output is: [(511, (255, 255, 255, 0)), (65025, (0, 0, 128, 255))] Best regards, Jesper 2014-03-24 11:27 GMT+01:00 Pierre Haessig <pie...@cr...>: > Hi, > > Le 24/03/2014 10:45, Jesper Larsen a écrit : > > I am using matplotlib to produce plots (tiles) in a Web Map Service. > > Unfortunately I cannot get Matplotlib to plot on the entire image. > > There are one transparent (pixel) line at the bottom and one > > transparent line at the right. This is of course a problem when the > > tiles are shown in a map. Please see example below. Can anyone see > > what I am doing wrong? > I've run your code and got no transparent pixels. > > print im.getcolors() > [(65536, (0, 0, 128, 255))] > > I also tried with __future__ division to see if there was something with > figsize = w/dpi, h/dpi, but got the same output > > best, > Pierre > > (python 2.7 on Linux, mpl 1.3.1) > > > > ------------------------------------------------------------------------------ > 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/13534_NeoTech > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
|
From: Nicolas R. <Nic...@in...> - 2014-03-24 11:09:49
|
If you do not draw at all (no pcolor call), do you still get transparent colors ? If yes, what is your .matplotlibrc ? Nicolas On 24 Mar 2014, at 11:49, Jesper Larsen <jes...@gm...> wrote: > Thanks Pierre, > > from __future__ import division did not help me, I am using mpl 1.1.1rc. I will try upgrading to a newer version of mpl and report back whether that helps. My output is: > > [(511, (255, 255, 255, 0)), (65025, (0, 0, 128, 255))] > > Best regards, > Jesper > > > > 2014-03-24 11:27 GMT+01:00 Pierre Haessig <pie...@cr...>: > Hi, > > Le 24/03/2014 10:45, Jesper Larsen a écrit : > > I am using matplotlib to produce plots (tiles) in a Web Map Service. > > Unfortunately I cannot get Matplotlib to plot on the entire image. > > There are one transparent (pixel) line at the bottom and one > > transparent line at the right. This is of course a problem when the > > tiles are shown in a map. Please see example below. Can anyone see > > what I am doing wrong? > I've run your code and got no transparent pixels. > > print im.getcolors() > [(65536, (0, 0, 128, 255))] > > I also tried with __future__ division to see if there was something with > figsize = w/dpi, h/dpi, but got the same output > > best, > Pierre > > (python 2.7 on Linux, mpl 1.3.1) > > > ------------------------------------------------------------------------------ > 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/13534_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/13534_NeoTech_______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users |
|
From: Jesper L. <jes...@gm...> - 2014-03-24 11:13:50
|
Hi Nicolas, Then everything is transparent. I have no .matplotlibrc file. I pulled the most recent version of mpl. And that solved the issue. Best regards, Jesper 2014-03-24 12:09 GMT+01:00 Nicolas Rougier <Nic...@in...>: > > > If you do not draw at all (no pcolor call), do you still get transparent > colors ? > If yes, what is your .matplotlibrc ? > > > Nicolas > > > On 24 Mar 2014, at 11:49, Jesper Larsen <jes...@gm...> wrote: > > > Thanks Pierre, > > > > from __future__ import division did not help me, I am using mpl 1.1.1rc. > I will try upgrading to a newer version of mpl and report back whether that > helps. My output is: > > > > [(511, (255, 255, 255, 0)), (65025, (0, 0, 128, 255))] > > > > Best regards, > > Jesper > > > > > > > > 2014-03-24 11:27 GMT+01:00 Pierre Haessig <pie...@cr...>: > > Hi, > > > > Le 24/03/2014 10:45, Jesper Larsen a écrit : > > > I am using matplotlib to produce plots (tiles) in a Web Map Service. > > > Unfortunately I cannot get Matplotlib to plot on the entire image. > > > There are one transparent (pixel) line at the bottom and one > > > transparent line at the right. This is of course a problem when the > > > tiles are shown in a map. Please see example below. Can anyone see > > > what I am doing wrong? > > I've run your code and got no transparent pixels. > > > > print im.getcolors() > > [(65536, (0, 0, 128, 255))] > > > > I also tried with __future__ division to see if there was something with > > figsize = w/dpi, h/dpi, but got the same output > > > > best, > > Pierre > > > > (python 2.7 on Linux, mpl 1.3.1) > > > > > > > ------------------------------------------------------------------------------ > > 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/13534_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/13534_NeoTech_______________________________________________ > > Matplotlib-users mailing list > > Mat...@li... > > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > |
|
From: Phil E. <pel...@gm...> - 2014-03-24 11:13:18
|
I fixed an issue related to this (I too was producing map tiles) in matplotlib v1.2 I believe. The original issue can be found at https://github.com/matplotlib/matplotlib/pull/1591 and so I suggest this might not be an issue with matplotlib >= v1.3. Incidentally, if you are producing map tiles you might be interested in cartopy which will allow you to produce properly referenced geo maps (and therefore tiles) with coastlines etc. I've put a short-sh example in a gist () with the rendered results also available (https://rawgithub.com/pelson/9738051/raw/map.html). I've also got a tornado based handler version which generates the tiles upon HTTP request rather than storing the tiles on disk (much more efficient if you have highly dynamic data and a caching layer). Let me know if updating your matplotlib version helps, Cheers, Phil On 24 March 2014 09:45, Jesper Larsen <jes...@gm...> wrote: > Hi matplotlib users, > > I am using matplotlib to produce plots (tiles) in a Web Map Service. > Unfortunately I cannot get Matplotlib to plot on the entire image. There > are one transparent (pixel) line at the bottom and one transparent line at > the right. This is of course a problem when the tiles are shown in a map. > Please see example below. Can anyone see what I am doing wrong? > > Best regards, > Jesper > > import numpy as np > import matplotlib as mpl > from matplotlib.figure import Figure > from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas > > w = 256 > h = 256 > dpi = 128 > figsize = w/dpi, h/dpi > fig = Figure(figsize=figsize, dpi=dpi, frameon=False) > canvas = FigureCanvas(fig) > ax = fig.add_axes([0, 0, 1, 1]) > > x = np.arange(0, 10, 0.1) > y = np.arange(10, 20, 0.2) > X, Y = np.meshgrid(x, y) > D = np.ones((X.shape[0]-1, X.shape[1]-1)) > V = np.linspace(0.0, 1.0, 10) > ax.pcolor(X, Y, D, antialiased=False) > ax.axis( [x[0], x[-1], y[0], y[-1]] ) > ax.axis('off') > filename = 'testfile.png' > fig.savefig(filename, dpi=128) > > # Test image > from PIL import Image > im = Image.open(filename) > print im.getcolors() > > > > ------------------------------------------------------------------------------ > 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/13534_NeoTech > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > |
|
From: Jesper L. <jes...@gm...> - 2014-03-24 11:39:27
|
Hi Phil, Yes, I can confirm that upgrading fixes the issue. Thanks for the pointer to cartopy. Best regards, Jesper 2014-03-24 12:13 GMT+01:00 Phil Elson <pel...@gm...>: > I fixed an issue related to this (I too was producing map tiles) in > matplotlib v1.2 I believe. > > The original issue can be found at > https://github.com/matplotlib/matplotlib/pull/1591 and so I suggest this > might not be an issue with matplotlib >= v1.3. > > Incidentally, if you are producing map tiles you might be interested in > cartopy which will allow you to produce properly referenced geo maps (and > therefore tiles) with coastlines etc. > I've put a short-sh example in a gist () with the rendered results also > available (https://rawgithub.com/pelson/9738051/raw/map.html). I've also > got a tornado based handler version which generates the tiles upon HTTP > request rather than storing the tiles on disk (much more efficient if you > have highly dynamic data and a caching layer). > > Let me know if updating your matplotlib version helps, > > Cheers, > > Phil > > > > > > > > On 24 March 2014 09:45, Jesper Larsen <jes...@gm...> wrote: > >> Hi matplotlib users, >> >> I am using matplotlib to produce plots (tiles) in a Web Map Service. >> Unfortunately I cannot get Matplotlib to plot on the entire image. There >> are one transparent (pixel) line at the bottom and one transparent line at >> the right. This is of course a problem when the tiles are shown in a map. >> Please see example below. Can anyone see what I am doing wrong? >> >> Best regards, >> Jesper >> >> import numpy as np >> import matplotlib as mpl >> from matplotlib.figure import Figure >> from matplotlib.backends.backend_agg import FigureCanvasAgg as >> FigureCanvas >> >> w = 256 >> h = 256 >> dpi = 128 >> figsize = w/dpi, h/dpi >> fig = Figure(figsize=figsize, dpi=dpi, frameon=False) >> canvas = FigureCanvas(fig) >> ax = fig.add_axes([0, 0, 1, 1]) >> >> x = np.arange(0, 10, 0.1) >> y = np.arange(10, 20, 0.2) >> X, Y = np.meshgrid(x, y) >> D = np.ones((X.shape[0]-1, X.shape[1]-1)) >> V = np.linspace(0.0, 1.0, 10) >> ax.pcolor(X, Y, D, antialiased=False) >> ax.axis( [x[0], x[-1], y[0], y[-1]] ) >> ax.axis('off') >> filename = 'testfile.png' >> fig.savefig(filename, dpi=128) >> >> # Test image >> from PIL import Image >> im = Image.open(filename) >> print im.getcolors() >> >> >> >> ------------------------------------------------------------------------------ >> 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/13534_NeoTech >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> >> > |