我有一个通过读取图像获得的二维 numpy 数组。数组的唯一值是 0、1 和 2。我想绘制图像,分别显示值 0、1 和 2 的唯一颜色红色、绿色和蓝色。
plt.imshow(data, cmap=colors.ListedColormap(['red'])
Run Code Online (Sandbox Code Playgroud)
你会怎么做?
我下载了波士顿的形状文件,并想使用下面的代码将其绘制出来。然而它给了我一个错误ValueError: lat_0 must be between -90.000000 and 90.000000 degrees
原来coords是有值的(33869.92130000144, 777617.2998000011, 330800.31099999696, 959741.1853)为什么这么大?
代码
# Import Boston shapefile
shapefilename = 'ZIPCODES_NT_POLY'
shp = fiona.open(shapefilename + '.shp')
coords = shp.bounds
shp.close()
w, h = coords[2] - coords[0], coords[3] - coords[1]
extra = 0.01
m = Basemap(
projection='tmerc', ellps='WGS84',
lon_0 = np.mean([coords[0], coords[2]]),
lat_0 = np.mean([coords[1], coords[3]]),
llcrnrlon = coords[0] - extra * w,
llcrnrlat = coords[1] - extra * h,
urcrnrlon = coords[2] + extra …Run Code Online (Sandbox Code Playgroud) 我有一个锤子投影图,我试图在图的中心添加文本(纬度 = 0,经度 = 0)。由于某种原因,字符串“0”绘制在图的左下角。
我有以下代码。
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
#data points
ra = [25,20,21]
dec = [25,20,21]
fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
# Get the hammer projection map
m = Basemap(projection='hammer',lon_0 = 0, rsphere = 1.0)
m.drawparallels(np.arange(-90.,90.,30.),labels=[1,0,0,0]) # draw parallels
m.drawmeridians(np.arange(-180.,180.,60.)) # draw meridians
m.plot(ra,dec,marker='o',linestyle='None',markersize=1,latlon=True)
ax.annotate('0', xy=(0, 0), xycoords='data',xytext = (0,0),textcoords='data')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我还附上了该图,很明显,字符“0”的位置位于错误的位置。有任何想法吗?
我对 python 很陌生,我正在尝试导入basemap到 Spyder 3.6。我conda install basemap在 Anadonda Prompt 和 Spyder 中使用过import basemap,但出现错误
File "<ipython-input-1-d9467465a3b6>", line 1, in <module>
from mpl_toolkits.basemap import Basemap
File "D:\Anaconda_Python\lib\site-packages\mpl_toolkits\basemap\__init__.py", line 155, in <module>
pyproj_datadir = os.environ['PROJ_LIB']
File "D:\Anaconda_Python\lib\os.py", line 678, in __getitem__
raise KeyError(key) from None
KeyError: 'PROJ_LIB'
Run Code Online (Sandbox Code Playgroud)
我看过类似的问题,但它对我不起作用:
FileNotFoundError: [Errno 2] No such file or directory: 'D:\\Anaconda_Python\\share\\proj\\epsg'我按照以下链接进行设置:http://peak5390.wordpress.com/2012/12/08/matplotlib-basemap-tutorial-installing-matplotlib-and-basemap/
但是,在我完成所有过程之后.尝试导入底图模块时仍然遇到错误.错误消息如下所示:from mpl_toolkits.basemap import Basemap ImportError:没有名为basemap的模块
谢谢!
我有如下图所示的图.目前,该图的colorscheme使用了colormap的整个范围(mpl.cm.Paired).我想做的,并且一直无法弄清楚,是如何限制matplotlib仅使用色图的一个子集.在这种情况下,我试图让起始颜色变成深蓝色.这是我的代码的绘图部分:
Figure = plt.figure(figsize=(22,10))
Map = Basemap(projection='robin', lon_0=0, resolution='l')
x, y = Map(LONS, LATS)
levels = np.arange(0, 4100, 100)
fcp = Map.contourf(x, y, data, levels, interpolation="bicubic", cmap=mpl.cm.Paired)
cb = Map.colorbar(fcp, "bottom", size="5%", pad='5%', extendrect=False)
cb.ax.tick_params(labelsize=18)
cb.solids.set_edgecolor("face")
cb.set_label("metres",fontsize=18)
cb.ax.set_aspect(0.047)
Map.drawcoastlines(linewidth=1)
Map.drawmapboundary(linewidth=1)
Map.drawmeridians([-150,-100,-50,0,50,100, 150],labels=[1,1,1,0],fontsize=18)
Map.drawparallels([-60,-30,0,30,60],labels=[1,1,1,1],fontsize=18)
Run Code Online (Sandbox Code Playgroud)

无法删除问题.请参考问题:根据字典值使用Basemap对国家/地区进行阴影状态
我想在每个墨西哥州绘制数据(特定年份的病人数).我正在使用jupyter笔记本.到目前为止,我已经看到了几个选项和教程,但似乎没有一个似乎明确解释如何绘制一个国家的地图.下面我解释一些我见过的选项/教程以及为什么它们没有工作(我只是认为教程不是很直接):
Bokeh(http://bokeh.pydata.org/en/latest/docs/gallery/texas.html).在教程中,由于us_counties在bokeh.sampledata中,因此绘制了德州州.但是我没有在抽样数据中找到其他国家.
mpl_toolkits.basemap(http://www.geophysique.be/2011/01/27/matplotlib-basemap-tutorial-07-shapefiles-unleached/).虽然我能够导入shapefile,但我无法运行from shapefile import ShapeFile(ImportError:无法导入名称ShapeFile).此外,我无法下载dbflib库.
文森特(为什么Python的文森特地图visuzalization不从数据帧映射数据?在说教程出现没有图像(即使我使用的命令)当我运行从答案的代码vincent.core.initialize_notebook()).
Plotly(https://plot.ly/python/choropleth-maps/).本教程绘制了美国从csv表导入信息的地图(没有其他可用国家的信息).如果想要策划另一个国家,是否可以制作表格?
探索了这四个选项我发现教程不是很清楚或不容易理解.我发现很难相信在python中绘制一个国家的地图很困难.我认为必须有一个比过去教程中解释的更简单的方法.
问题是:用python绘制某个国家(任何)地图的最简单(希望是简单的)方法是什么?
我安装了以下软件包:matplotlib,pyshp,mpl_toolkits.basemap,bokeh,pandas,numpy.我还从http://www.gadm.org/下载了墨西哥的地图
提前致谢.
我想绘制一个以太平洋为中心的南半球地图,并用python matplotlib底图绘制一些东西.
除非我尝试使用底图例程shadedrelief,bluemarble或etopo绘制背景图像,否则一切正常.代码(没有我想要绘制到地图上的东西)看起来像这样:
import numpy as np
from mpl_toolkits.basemap import Basemap
from matplotlib.backends.backend_pdf import PdfPages
latmin = -72.5
latmax = 40.
lonmin = 60.
lonmax = 370.
pp = PdfPages('datamap.pdf')
m = Basemap(projection='merc', llcrnrlat=latmin, urcrnrlat=latmax, llcrnrlon=lonmin, urcrnrlon=lonmax, resolution="c")
m.drawcoastlines(linewidth=0.25)
#m.shadedrelief()
pp.savefig()
pp.close()
Run Code Online (Sandbox Code Playgroud)
当我取消注释m.shadedrelief()时,我得到以下内容:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
/xyz/datamap.py in <module>()
32
---> 33 m.shadedrelief()
34
/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.pyc in shadedrelief(self, ax, scale, **kwargs)
3997 return self.warpimage(image='shadedrelief',ax=ax,scale=scale,**kwargs)
3998 else:
-> 3999 return self.warpimage(image='shadedrelief',scale=scale,**kwargs)
4000
4001 def etopo(self,ax=None,scale=None,**kwargs):
/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.pyc in warpimage(self, …Run Code Online (Sandbox Code Playgroud) 我想知道如何生成此图中显示的黑色线条的标记。(来源:NCEP和NOAA)这是标准天气地图中风暴或飓风的标记。
我可能可以生成标记符号的图像文件。但是,我不知道如何告诉matplotlib将图像用作标记。
我正在尝试从 python2 中的 Basemap 移动到 python3 中的 cartopy。但是,我发现将一些 Basemap 代码块转换为 cartopy 很困难:
底图(python2.7)
from mpl_toolkits.basemap import Basemap
bmap = Basemap(projection='merc', resolution='c', llcrnrlon=-125, llcrnrlat=26, urcrnrlon=-56, urcrnrlat=46)
print bmap.makegrid(4, 4)[0]
[[-125. -102. -79. -56.]
[-125. -102. -79. -56.]
[-125. -102. -79. -56.]
[-125. -102. -79. -56.]]
print bmap.makegrid(4, 4)[1]
[[26. 26. 26. 26. ]
[33.23223798 33.23223798 33.23223798 33.23223798]
[39.91267019 39.91267019 39.91267019 39.91267019]
[46.00000132 46.00000132 46.00000132 46.00000132]]
Run Code Online (Sandbox Code Playgroud)
cartopy (python 3.7)
import cartopy.crs as ccrs
mrc = ccrs.Mercator()
lons = np.array([-125, -56])
lats = …Run Code Online (Sandbox Code Playgroud) 我使用正交投影来绘制地图.我用这个程序:
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
import os, sys
from sys import argv
import pylab
from mpl_toolkits.basemap import Basemap, shiftgrid
from matplotlib import mpl
from matplotlib import rcParams
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import matplotlib.patches as patches
import matplotlib.path as path
import matplotlib.dates as dt
from numpy import linalg
import netCDF4
import time
import datetime as d
import sys
import math
from mpl_toolkits.axes_grid1 import make_axes_locatable
from pylab import *
nc …Run Code Online (Sandbox Code Playgroud) python projection matplotlib orthographic matplotlib-basemap
我正在使用python底图绘制美国大湖区周围的海岸线。当我增加绘制为“ i”(中间)的地图的分辨率时,它会绘制许多小的水景。有没有办法只绘制海洋和大湖周围的海岸线,而不是绘制所有小的水景?
当提供完整或部分地址时,我尝试将Google Maps API与GoogleMaps Python库一起使用来对纬度/经度进行地理编码(在此示例中,我使用的是城市/州,但是我也有仅包含zip的数据集我将需要使用它的代码)。
import googlemaps
gmaps = googlemaps.Client(key=[insert API key here])
geocode_result = gmaps.geocode('Sacramento, CA')
print(geocode_result)
Result:[{u'geometry': {u'location_type': u'APPROXIMATE', u'bounds': {u'northeast': {u'lat': 38.685507, u'lng': -121.325705}, u'southwest': {u'lat': 38.437574, u'lng': -121.56012}}, u'viewport': {u'northeast': {u'lat': 38.685507, u'lng': -121.325705}, u'southwest': {u'lat': 38.437574, u'lng': -121.56012}}, u'location': {u'lat': 38.5815719, u'lng': -121.4943996}}, u'address_components': [{u'long_name': u'Sacramento', u'types': [u'locality', u'political'], u'short_name': u'Sacramento'}, {u'long_name': u'Sacramento County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'Sacramento County'}, {u'long_name': u'California', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'CA'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}], u'place_id': …Run Code Online (Sandbox Code Playgroud) list google-maps-api-2 geocode python-2.7 matplotlib-basemap
python ×10
matplotlib ×7
cartopy ×2
projection ×2
python-2.7 ×2
python-3.x ×2
shapefile ×2
annotate ×1
bokeh ×1
geocode ×1
gis ×1
list ×1
orthographic ×1
vincent ×1