标签: matplotlib-basemap

展现独特的色彩,展现独特的价值

我有一个通过读取图像获得的二维 numpy 数组。数组的唯一值是 0、1 和 2。我想绘制图像,分别显示值 0、1 和 2 的唯一颜色红色、绿色和蓝色。

plt.imshow(data, cmap=colors.ListedColormap(['red'])
Run Code Online (Sandbox Code Playgroud)

你会怎么做?

matplotlib matplotlib-basemap

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

Python和Shapefile:导入shapefile后坐标非常大

我下载了波士顿的形状文件,并想使用下面的代码将其绘制出来。然而它给了我一个错误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)

python gis shapefile python-2.7 matplotlib-basemap

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

matplotlib 在数据坐标中注释底图

我有一个锤子投影图,我试图在图的中心添加文本(纬度 = 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 annotate matplotlib matplotlib-basemap

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

导入底图时 Spyder 中的 PROJ_LIB 错误

我对 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)

我看过类似的问题,但它对我不起作用:

python matplotlib-basemap

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

错误在mac上安装底图

我按照以下链接进行设置:http://peak5390.wordpress.com/2012/12/08/matplotlib-basemap-tutorial-installing-matplotlib-and-basemap/

但是,在我完成所有过程之后.尝试导入底图模块时仍然遇到错误.错误消息如下所示:from mpl_toolkits.basemap import Basemap ImportError:没有名为basemap的模块

谢谢!

python matplotlib matplotlib-basemap

1
推荐指数
1
解决办法
4703
查看次数

在matplotlib colormap中选择起始颜色

我有如下图所示的图.目前,该图的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)

在此输入图像描述

python matplotlib matplotlib-basemap

1
推荐指数
1
解决办法
2431
查看次数

使用python在国家地图上绘制数据的最简单方法

无法删除问题.请参考问题:根据字典值使用Basemap对国家/地区进行阴影状态

我想在每个墨西哥州绘制数据(特定年份的病人数).我正在使用jupyter笔记本.到目前为止,我已经看到了几个选项和教程,但似乎没有一个似乎明确解释如何绘制一个国家的地图.下面我解释一些我见过的选项/教程以及为什么它们没有工作(我只是认为教程不是很直接):

  1. Bokeh(http://bokeh.pydata.org/en/latest/docs/gallery/texas.html).在教程中,由于us_counties在bokeh.sampledata中,因此绘制了德州州.但是我没有在抽样数据中找到其他国家.

  2. mpl_toolkits.basemap(http://www.geophysique.be/2011/01/27/matplotlib-basemap-tutorial-07-shapefiles-unleached/).虽然我能够导入shapefile,但我无法运行from shapefile import ShapeFile(ImportError:无法导入名称ShapeFile).此外,我无法下载dbflib库.

  3. 文森特(为什么Python的文森特地图visuzalization不从数据帧映射数据?在说教程出现没有图像(即使我使用的命令)当我运行从答案的代码vincent.core.initialize_notebook()).

  4. Plotly(https://plot.ly/python/choropleth-maps/).本教程绘制了美国从csv表导入信息的地图(没有其他可用国家的信息).如果想要策划另一个国家,是否可以制作表格?

探索了这四个选项我发现教程不是很清楚或不容易理解.我发现很难相信在python中绘制一个国家的地图很困难.我认为必须有一个比过去教程中解释的更简单的方法.

问题是:用python绘制某个国家(任何)地图的最简单(希望是简单的)方法是什么?

我安装了以下软件包:matplotlib,pyshp,mpl_toolkits.basemap,bokeh,pandas,numpy.我还从http://www.gadm.org/下载了墨西哥的地图

提前致谢.

python shapefile matplotlib-basemap bokeh vincent

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

Python底图:使用shadedrelief,bluemarble或etopo时出错(错误的经度格式?)

我想绘制一个以太平洋为中心的南半球地图,并用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)

python matplotlib matplotlib-basemap

1
推荐指数
1
解决办法
959
查看次数

使用Python的自定义标记(matplotlib)

我想知道如何生成此图中显示的黑色线条的标记。(来源:NCEP和NOAA)这是标准天气地图中风暴或飓风的标记。

在此处输入图片说明

我可能可以生成标记符号的图像文件。但是,我不知道如何告诉matplotlib将图像用作标记。

python matplotlib python-3.x matplotlib-basemap cartopy

1
推荐指数
1
解决办法
1805
查看次数

从底图移动到 cartopy

我正在尝试从 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)

projection python-3.x matplotlib-basemap cartopy

1
推荐指数
1
解决办法
3648
查看次数

正投影Python

我使用正交投影来绘制地图.我用这个程序:

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

0
推荐指数
1
解决办法
3039
查看次数

Python底图:绘制海岸线,但不绘制小特征

我正在使用python底图绘制美国大湖区周围的海岸线。当我增加绘制为“ i”(中间)的地图的分辨率时,它会绘制许多小的水景。有没有办法只绘制海洋和大湖周围的海岸线,而不是绘制所有小的水景?

我有这个... 在此处输入图片说明

但是我想要这个……没有小湖泊,但是想要更高分辨率绘制的海岸线和州。 在此处输入图片说明

python matplotlib-basemap

0
推荐指数
1
解决办法
1075
查看次数

使用Python(Google Maps API)从地址解析结果列表中提取经纬度

当提供完整或部分地址时,我尝试将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

0
推荐指数
1
解决办法
3799
查看次数