标签: matplotlib-basemap

为什么我的colorbar中有线条?

编辑:由于这似乎是一个受欢迎的帖子,这里的解决方案似乎对我有用.谢谢@gazzar和@mfra.

cbar.solids.set_rasterized(True)
cbar.solids.set_edgecolor("face")
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么我的colorbar看起来像是哪条线?或者更确切地说为什么颜色过渡不平滑?显然,我正在使用底图,但这并不重要,因为它是引擎盖AFAICT下的所有matplotlib调用.我创建地图做类似的事情

grays = plt.cm.get_cmap("Grays")
sc = mymap.scatter(xpoints, ypoints, s=sizes, c=color_values, cmap=grays, alpha=.75,
                   marker="o", zorder=10, vmin=0, vmax=1)
cbar = mymap.colorbar(sc, drawedges=True, location="bottom")
Run Code Online (Sandbox Code Playgroud)

我试过没有和没有alpha,结果是一样的.也许是因为我的color_values数组不够好?我可以在某处设置映射到颜色条的基础值吗?我不知道怎么样,我在其他地方看不到这个问题.也就是说,我可以复制matplotlib show_colorbars示例而不会出现此问题.

坏颜色栏示例

python matplotlib matplotlib-basemap

41
推荐指数
4
解决办法
7717
查看次数

Python Matplotlib底图在地图上覆盖小图像

我正在绘制地图上的飞机数据,我想在绘图上最新数据点的坐标处插入这个75px乘29px的飞机PNG图像.

飞机http://i45.tinypic.com/mslr86.jpg

据我所知并已阅读,pyplot.imshow()是实现这一目标的最佳方式.但是,我在第1步被挂起,让图像均匀显示.使用普通图而不是Basemap,使用imshow很容易让图像显示,但是当使用Basemap时,我根本无法显示它.请参阅示例代码.

如果我可以将图像显示在地图上,我假设我可以通过反复试验,使用extent属性为其设置其位置和一些适当的尺寸imshow(),其中绘图坐标从地图坐标转换而来x,y = m(lons,lats).

这是示例代码(尝试它可能需要下载上面的飞机图像).

from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap
import Image
from numpy import arange

lats = arange(26,29,0.5)
lons = arange(-90,-87,0.5)

m = Basemap(projection='cyl',llcrnrlon=min(lons)-2,llcrnrlat=min(lats)-2,
            urcrnrlon=max(lons)+2,urcrnrlat=max(lats)+2,resolution='i')

x,y = m(lons,lats)
u,v, = arange(0,51,10),arange(0,51,10)
barbs = m.barbs(x,y,u,v)
m.drawcoastlines(); m.drawcountries(); m.drawstates()

img = Image.open('c130j_75px.png')
im = plt.imshow(img, extent=(x[-1],x[-1]+50000,y[-1],y[-1]+50000))
plt.show()
Run Code Online (Sandbox Code Playgroud)

这是生成的图像,不包含飞机的痕迹.我尝试了几种不同的尺寸extent,以为我可能只是把它做得太小,但没有成功.我也尝试过设置zorder=10,但也没有运气.任何帮助,将不胜感激.

结果http://i45.tinypic.com/35mgnev.jpg

更新:我现在可以通过使用m.imshow代替来显示图像plt.imshow,因为前者在地图的轴实例中传递,但extent参数似乎对图像的尺寸没有影响,因为它总是填满整个图无论我的extent尺寸有多小,即使我将它们设置为零.如何适当缩放飞机图像并将其定位在最后一个数据点附近?

im = m.imshow(img, extent=(x[-1],x[-1]+5,y[-1],y[-1]+2)) …

python overlay image matplotlib matplotlib-basemap

27
推荐指数
2
解决办法
1万
查看次数

在Windows上使用Python 3.5 Anaconda的底图

我在Windows(64位)上使用Python 3.5和最新版本的Anaconda.我想使用安装Basemap conda install basemap.显然Python 3和底图之间存在冲突.经过一些谷歌搜索后,我发现Python 3 for Windows用户不支持底图(例如:https://groups.google.com/a/continuum.io/forum/#!topic / anaconda/TjAwi3ilQaU).

出于显而易见的原因,我不想降级到Python 2.那么最简单的替代解决方案是什么?

  • 是否有类似于底图的替代包用于绘制地图等?
  • 我应该使用第二个使用Python 2和底图的环境吗?我从来没有这样做但似乎有可能(http://conda.pydata.org/docs/py2or3.html).它"安全"吗?我应该在第二个环境中再次安装所有其他软件包(matplotlib,numpy等)吗?

在此先感谢您的帮助和建议.

python matplotlib matplotlib-basemap anaconda

24
推荐指数
3
解决办法
4万
查看次数

使用matplotlib更有效地绘制多边形

我有一个大约60000个形状的日期集(每个角的纬度/经度坐标),我想用matplotlib和底图在地图上绘制.

这就是我现在这样做的方式:

for ii in range(len(data)):
    lons = np.array([data['lon1'][ii],data['lon3'][ii],data['lon4'][ii],data['lon2'][ii]],'f2')
    lats = np.array([data['lat1'][ii],data['lat3'][ii],data['lat4'][ii],data['lat2'][ii]],'f2')
    x,y = m(lons,lats)
    poly = Polygon(zip(x,y),facecolor=colorval[ii],edgecolor='none')
    plt.gca().add_patch(poly)
Run Code Online (Sandbox Code Playgroud)

但是,我的机器需要大约1.5分钟,我在想是否有可能加快速度.有没有更有效的方法来绘制多边形并将它们添加到地图中?

python numpy matplotlib scipy matplotlib-basemap

22
推荐指数
1
解决办法
3万
查看次数

没有河流的世界地图有matplotlib/Basemap?

有没有办法用Basemap绘制大陆的边界(或者没有底图,如果有其他方式),没有那些令人讨厌的河流出现?尤其是那条甚至没有到达海洋的孔戈河,令人不安.

编辑:我打算在地图上进一步绘制数据,比如在地图库中(并且仍然将大陆的边界线绘制为数据上的黑线,以提供世界地图的结构),所以虽然下面的Hooked解决方案很好,甚至是熟练的,它不适用于此目的.

世界地图

图片制作者:

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8, 4.5))
plt.subplots_adjust(left=0.02, right=0.98, top=0.98, bottom=0.00)
m = Basemap(projection='robin',lon_0=0,resolution='c')
m.fillcontinents(color='gray',lake_color='white')
m.drawcoastlines()
plt.savefig('world.png',dpi=75)
Run Code Online (Sandbox Code Playgroud)

python maps geography matplotlib matplotlib-basemap

20
推荐指数
3
解决办法
1万
查看次数

Python底图模块无法导入

我在python中导入mpl_toolkits的底图模块时遇到麻烦.这是我从模块目录运行test.py脚本时得到的结果:

/usr/lib/python2.7/dist-packages/mpl_toolkits/basemap$ python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
from mpl_toolkits.basemap import Basemap, shiftgrid
ImportError: No module named basemap
Run Code Online (Sandbox Code Playgroud)

我无法得到它,因为sys.path在"mpl_toolkits"目录中提供了我确定目录"basemap"的路径列表.没问题import mpl_toolkits.这是我尝试过的事情,手动添加路径,结果:

>>> import sys
>>> sys.path.append('/usr/lib/python2.7/dist-packages/mpl_toolkits/basemap')
>>> import basemap
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "basemap/__init__.py", line 30, in <module>
from mpl_toolkits.basemap import pyproj
ImportError: No module named basemap
Run Code Online (Sandbox Code Playgroud)

我尝试从apt-get,从conda 卸载重新安装底图(仔细按照这些说明),但它没有改变任何东西:我无法导入底图.

谢谢您的帮助

python import matplotlib matplotlib-basemap

19
推荐指数
5
解决办法
4万
查看次数

填写python底图中的国家/地区

嗨,我正在尝试使用pythons底图绘制地图,其中一些国家填充了某种颜色.

那里有一个快速简便的解决方案吗?

python matplotlib matplotlib-basemap

18
推荐指数
3
解决办法
2万
查看次数

是否可以控制matplotlib标记方向?

我想知道我是否有三角形标记,是否可以控制其方向?我有一系列的facets及其相应的顶点,我想绘制它们的底图.我知道使用Mayavi和tvtk.PolyData时它是直接的脚本.但是因为我正在处理地图而不是3D对象,所以事情变得有点复杂.

ps:对于地图我正在使用底图工具.

我感谢你的帮助.

python matplotlib matplotlib-basemap

18
推荐指数
4
解决办法
5709
查看次数

安装Shapely时找不到OSError geos_c

我是使用python在地图上制作/绘图的新手,一直试图按照这个博文来生成世界地图(http://sciblogs.co.nz/seeing-data/2011/08/12/plotting-geographic-数据上-A-世界地图与 - 蟒/).在这里遇到了一些问题:

  1. 安装底图(用于绘制地理投影数据的Matplotlib扩展).

    from mpl_toolkits.basemap import Basemap
    Traceback (most recent call last):
    File "geos_demo.py", line 1, in <module>
    from mpl_toolkits.basemap import Basemap
    ImportError: No module named mpl_toolkits.basemap
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装Shapely,但发生以下错误[1]:

  3. 然后我进入了geos.py文件并将geos.dll的所有引用更改为geos_c.dll,如下所示:http://osgeo-org.1560.n6.nabble.com/osgeo4w-258- 问题与-蟒蛇,身材匀称的Python-2-7-2-td4336816.html

  4. 但是,会出现相同的错误[1].

我正在使用Python 2.7.1和M​​ac OS 10.7.4.如果我能提供更多信息,请告诉我,非常感谢社区的任何指导!谢谢!

[1]

    from shapely.geometry import Point
    Traceback (most recent call last): File "<stdin>", line 1, in <module>
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geometry/__init__.py", line 4, in <module>
    from geo import box, shape, asShape, mapping
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geometry/geo.py", line 5, in <module>
    from point import Point, asPoint
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geometry/point.py", …
Run Code Online (Sandbox Code Playgroud)

python geos matplotlib-basemap shapely

17
推荐指数
4
解决办法
1万
查看次数

PyCharm中的底图导入错误 - KeyError:'PROJ_LIB'

我尝试使用Basemap包来绘制PyCharm的地图,但是我遇到了问题

from mpl_toolkits.basemap import Basemap`
Run Code Online (Sandbox Code Playgroud)

跟踪追溯如下:

Traceback (most recent call last):
File "/Users/yupeipei/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2963, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-4-0a24a3a77efd>", line 7, in <module>
    from mpl_toolkits.basemap import Basemap
  File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 20, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/Users/yupeipei/anaconda3/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py", line 146, in <module>
    pyproj_datadir = os.environ['PROJ_LIB']
  File "/Users/yupeipei/anaconda3/lib/python3.6/os.py", line 669, in __ getitem__
    raise KeyError(key) from None
KeyError: 'PROJ_LIB'
Run Code Online (Sandbox Code Playgroud)

我对PyCharm上的这个错误感到困惑,因为相同的脚本在Jupyter或Spyder上运行正常!PyCharm的环境是../anaconda3/lib/python3.6,其中与anaconda相同.

有没有人遇到过这个错误?

任何人都可以帮我解决这个错误吗?

python pycharm python-3.x matplotlib-basemap

17
推荐指数
5
解决办法
1万
查看次数