标签: matplotlib-basemap

消除Matplotlib/Basemap pcolor图中的白边

我正在使用以下代码在地图上绘制数据:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Polygon
from scipy.io import netcdf

ncfile = netcdf.netcdf_file(myfile.nc,'r')
lon = ncfile.variables['longitude'][:]
lat = ncfile.variables['latitude'][:]
data = ncfile.variables['mydata'][:]
ncfile.close()

m = Basemap(projection='nplaea', boundinglat=40, lon_0=270)
m.drawcoastlines(linewidth=.6, zorder=2)
m.drawparallels(np.arange(-80.,81.,20.), zorder=1)
m.drawmeridians(np.arange(-180.,181.,20.), zorder=1)
cNorm = mpl.colors.Normalize(vmin=0, vmax=np.nanmax(data))
cmap = plt.get_cmap('jet')
lons, lats = np.meshgrid(lon, lat)
x, y = m(lons, lats)
datamap = m.pcolor(x, y, data, zorder=0)
datamap.set_norm(cNorm) 
plt.colorbar(datamap, cmap=cmap, norm=cNorm, …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib matplotlib-basemap

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

在Mac/Python上安装底图

我无法让我的Mac中的底图在Python中运行.

我一直收到:

    from mpl_toolkits.basemap import basemap
ImportError: No module named basemap
Run Code Online (Sandbox Code Playgroud)

我做了什么:

brew install gdal
brew install gets
export GEOS_DIR=/usr/local/Cellar/geos/3.4.2/
basemap-1.0.7 $ python setup.py install
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

basemap-1.0.7 $ cd geos-3.3.3
basemap-1.0.7/geos-3.3.3 $ export GEOS_DIR=~/
basemap-1.0.7/geos-3.3.3 $ ./configure --prefix=$GEOS_DIR
basemap-1.0.7/geos-3.3.3 $ make
basemap-1.0.7/geos-3.3.3 $ make install
basemap-1.0.7/geos-3.3.3 $ cd ..
basemap-1.0.7 $ python setup.py install
Run Code Online (Sandbox Code Playgroud)

他们都没有为我工作.如何让这个软件包在MacOS Sierra上运行?

python macos matplotlib-basemap

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

如何在Basemap上绘制矩形

我正在寻找一种在Basemap上绘制填充矩形的方法.我可以使用该drawgreatcircle方法轻松绘制矩形的边缘,但我找不到实际填充这些矩形的方法(指定颜色和alpha).

matplotlib matplotlib-basemap

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

在Basemap上使用NetworkX绘制图形

我想在地图上绘制一个图形,其中节点将由坐标(纬度,长度)定义并且具有一些值相关联.

我已经能够将点绘制为底图上的散点图,但似乎无法找到如何在地图上绘制图形.

谢谢.

编辑:我添加了关于如何在底图上绘制点的代码.它的大部分是改编自代码在这个文章.

from mpl_toolkits.basemap import Basemap
from shapely.geometry import Point, MultiPoint
import pandas as pd
import matplotlib.pyplot as plt

m = Basemap(
        projection='merc',
        ellps = 'WGS84',
        llcrnrlon=-130,
        llcrnrlat=25,
        urcrnrlon=-60,
        urcrnrlat=50,
        lat_ts=0,
        resolution='i',
        suppress_ticks=True)

# Create Point objects in map coordinates from dataframe lon
# and lat values
# I have a dataframe of coordinates
map_points = pd.Series(
                [Point(m(mapped_x, mapped_y)) 
                 for mapped_x, mapped_y in zip(df['lon'],
                                               df['lat'])])
amre_points = MultiPoint(list(map_points.values)) 

plt.clf()
fig = plt.figure()
ax = fig.add_subplot(111, …
Run Code Online (Sandbox Code Playgroud)

python networkx matplotlib-basemap

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

使用matplotlib Basemap绘制GDAL栅格

我想使用matplotlib Basemap 绘制光栅tiff (下载 -723Kb).我的栅格投影坐标以米为单位:

In  [2]:
path = r'albers_5km.tif'
raster = gdal.Open(path, gdal.GA_ReadOnly)
array = raster.GetRasterBand(20).ReadAsArray()

print ('Raster Projection:\n', raster.GetProjection())
print ('Raster GeoTransform:\n', raster.GetGeoTransform())

Out [2]:
Raster Projection:
 PROJCS["unnamed",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]],PROJECTION["Albers_Conic_Equal_Area"],PARAMETER["standard_parallel_1",15],PARAMETER["standard_parallel_2",65],PARAMETER["latitude_of_center",30],PARAMETER["longitude_of_center",95],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]]]
Raster GeoTransform:
 (190425.8243, 5000.0, 0.0, 1500257.0112, 0.0, -5000.0)
Run Code Online (Sandbox Code Playgroud)

如果我试图用这个用罗宾投影绘制contourflatlon=False比X和Y被认为是地图投影坐标(见文档,我想这就是我).

但如果我看一下情节,我会注意到它的左下角非常小:

左下方

使用此代码:

In  [3]:
xy = raster.GetGeoTransform() 
x = raster.RasterXSize 
y = raster.RasterYSize    
lon_start = xy[0] 
lon_stop = x*xy[1]+xy[0] 
lon_step = xy[1]    
lat_start = xy[3] 
lat_stop = y*xy[5]+xy[3] 
lat_step = xy[5] …
Run Code Online (Sandbox Code Playgroud)

python matplotlib gdal matplotlib-basemap

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

如何在matplotlib中的地图中插入比例尺

关于如何在matplotlib中的地图中插入比例尺以显示长度比例的任何想法?就像我附上的那样.

或者也许是自动测量和显示距离的任何想法(不是手动绘制箭头和书写距离!)?

谢谢 :)在此输入图像描述

python matplotlib scale matplotlib-basemap

15
推荐指数
2
解决办法
8712
查看次数

使用pcolormesh时如何通过插值平滑?

我有一个世界的底图,它使用pcolormesh填充数据(lintrends_mean).因为数据有相对较大的网格框,我想平滑情节.但是,我无法弄清楚如何做到这一点.在绘图功能中设置着色='gouraud'会模糊网格框的边缘,但我想要一些比这更好看的东西,因为数据仍然显得斑点.

这里有一个类似的问题给出了答案,但我不明白答案,特别是"newdepth"的来源.由于我的声誉不足,我无法对其进行澄清澄清. 使用matplotlib pcolor进行插值

#Set cmap properties
bounds = np.array([0.1,0.2,0.5,1,2,3,4,6,9,13,20,35,50])
norm = colors.LogNorm(vmin=0.01,vmax=55) #creates logarithmic scale
#cmap.set_under('#000099') # I want to use this- edit in Paint
cmap.set_over('#660000')  # everything above range of colormap

fig = plt.figure(figsize=(15.,10.))                     #create figure & size
m = Basemap(projection='cyl',llcrnrlat=-90,urcrnrlat=90,llcrnrlon=0,urcrnrlon=360.,lon_0=180.,resolution='c') #create basemap & specify data area & res
m.drawcoastlines(linewidth=1)
m.drawcountries(linewidth=1)
m.drawparallels(np.arange(-90,90,30.),linewidth=0.3)
m.drawmeridians(np.arange(-180.,180.,90.),linewidth=0.3)            
meshlon,meshlat = np.meshgrid(lon,lat)                           #meshgrid turns lats & lons into 2D arrays
x,y = m(meshlon,meshlat)                                         #assign 2D arrays to new variables
trend = m.pcolormesh(x,y,lintrends_mean,cmap=plt.get_cmap('jet'),norm=norm) #plot the …
Run Code Online (Sandbox Code Playgroud)

python interpolation matplotlib matplotlib-basemap

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

如何使用WinPython(或任何Python堆栈安装)在Windows 7上安装Matplotlib底图模块?

我发现当作为堆栈安装的一部分安装Python时,Windows的底图(用于matplotlib和Python的模块)二进制安装程序无法检测系统上的Python,如Anaconda或WinPython.安装程序退出,而不是允许您指向安装目录.

因此我必须通过源安装.但是,我不知道这样做的方法.Readme.txt和安装说明似乎没有帮助.他们只是指示"首先安装geos-3.3.3" - 嗯,究竟是怎么回事?我没有在该目录中看到setup.py.

任何帮助都会很棒.(Python 2.7,Win 7,64b)

python-2.7 matplotlib-basemap

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

在matplotlib中的图像上绘制网格线

如何在tiff图像上绘制规则的网格线?我想在图像上为每个间隔(比如说100 x 100像素)绘制规则的正方形网格,并将其与图纸一起保存.我还需要在每个网格框的中间将每个网格ID覆盖为"1","2",....

matplotlib matplotlib-basemap

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

Python Basemap导入错误

有效的是

import mpl_toolkits
Run Code Online (Sandbox Code Playgroud)

什么不起作用(找不到导入错误底图)

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

我按照这里的说明操作:

http://matplotlib.org/basemap/users/installing.html

下载了最新的底图*.tar.gz

我运行以下命令:

在geos文件夹中

export GEOS_DIR=~/
./configure --prefix=$GEOS_DIR
make
make install
Run Code Online (Sandbox Code Playgroud)

在底图文件夹中

python setup.py install
Run Code Online (Sandbox Code Playgroud)

一切都以sudo模式运行,没有错误.Goes输出没有python绑定但不是错误所以我不确定.

似乎没有正确安装.

Mac Os X 10.10 Yosemiete Python 2.7.6

如果我输入

pip install basemap --allow-external basemap --allow-unverified basemap

Requirement already satisfied (use --upgrade to upgrade): basemap in /Library/Python/2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

所以它存在但不可导入??????????

解决方案

如果你没有安装macports

port install py-matplotlib-basemap
Run Code Online (Sandbox Code Playgroud)

然后它安装了一大堆扩展.

之后你做:

端口选择列表python

然后它应该是:(如果没有尝试列表中的另一个)

sudo port select --set python python27

macos matplotlib python-2.7 matplotlib-basemap

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