编辑:由于这似乎是一个受欢迎的帖子,这里的解决方案似乎对我有用.谢谢@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示例而不会出现此问题.

我正在绘制地图上的飞机数据,我想在绘图上最新数据点的坐标处插入这个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)) …
我在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.那么最简单的替代解决方案是什么?
在此先感谢您的帮助和建议.
我有一个大约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分钟,我在想是否有可能加快速度.有没有更有效的方法来绘制多边形并将它们添加到地图中?
有没有办法用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中导入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 卸载重新安装底图(仔细按照这些说明),但它没有改变任何东西:我无法导入底图.
谢谢您的帮助
嗨,我正在尝试使用pythons底图绘制地图,其中一些国家填充了某种颜色.
那里有一个快速简便的解决方案吗?
我想知道我是否有三角形标记,是否可以控制其方向?我有一系列的facets及其相应的顶点,我想绘制它们的底图.我知道使用Mayavi和tvtk.PolyData时它是直接的脚本.但是因为我正在处理地图而不是3D对象,所以事情变得有点复杂.
ps:对于地图我正在使用底图工具.
我感谢你的帮助.
我是使用python在地图上制作/绘图的新手,一直试图按照这个博文来生成世界地图(http://sciblogs.co.nz/seeing-data/2011/08/12/plotting-geographic-数据上-A-世界地图与 - 蟒/).在这里遇到了一些问题:
安装底图(用于绘制地理投影数据的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)安装Shapely,但发生以下错误[1]:
然后我进入了geos.py文件并将geos.dll的所有引用更改为geos_c.dll,如下所示:http://osgeo-org.1560.n6.nabble.com/osgeo4w-258- 问题与-蟒蛇,身材匀称的Python-2-7-2-td4336816.html
但是,会出现相同的错误[1].
我正在使用Python 2.7.1和Mac 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) 我尝试使用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相同.
有没有人遇到过这个错误?
任何人都可以帮我解决这个错误吗?