标签: matplotlib-basemap

当我使用不同的绘图类型设置“vmin”和“vmax”时的不同结果

背景

用于绘制某些属性的二维空间分布,contourfpcolormesh都是可视化形式的不错选择。

由于绘图数据的实际含义,我想将零附近的值设置为白色(例如,[-0.2,0.2]);零值应该是中点

从问题 [ Defining the midpoint of a colormap in matplotlib,我尝试设置vminvmax调整颜色图。

数据导入

import pygrib
grib='fnl_20141110_12_00.grib2';
grbs=pygrib.open(grib)
grb = grbs.select(name='Vertical velocity')[8]#Vertical velocity
data=grb.values
lat,lon = grb.latlons()
Run Code Online (Sandbox Code Playgroud)

1. 等值线图

m = Basemap(llcrnrlon=110,llcrnrlat=34,urcrnrlon=122,urcrnrlat=44,projection='mill')
fig=plt.figure(figsize=(8,4))
ax1 = plt.subplot(121)
x, y = m(lon, lat)
cs = m.contourf(x,y,data,cmap=plt.cm.RdBu)

cb = m.colorbar(cs,"bottom", size="5%", pad="8%")
ax1.set_title("Original",fontsize = 15)

ax2 = plt.subplot(122)
cs = m.contourf(x,y,data,cmap=plt.cm.RdBu,vmin = -1.8,vmax =1.8)
cb = m.colorbar(cs,"bottom", size="5%", pad="8%")
ax2.set_title("symmetrical vmin & vmax",fontsize …
Run Code Online (Sandbox Code Playgroud)

python matplotlib grib matplotlib-basemap colormap

5
推荐指数
0
解决办法
1757
查看次数

如何使用 Python 底图更快地绘制地理定位的 RGB 数据

我在使用带有纬度和经度数据的 Python 底图模块绘制 RGB 图像时遇到问题。现在,我可以制作我想要的绘图,但问题是它有多慢,因为它能够比 RGB 数据更快地绘制单通道数据,并且一般来说,单独绘制 RGB 图像也是如此快速地。由于我有纬度/经度数据,这就是事情变得复杂的地方。我已经检查了这个问题的解决方案:

如何使用 python 和底图绘制不规则间隔的 RGB 图像?

这就是我如何到达现在的位置。它本质上归结为以下问题。当在底图中使用该pcolormesh方法时,要绘制 RGB 数据,您必须定义一个 colorTuple 参数,它将逐点映射 RGB 数据。由于数组大小约为 2000x1000,因此这需要一些时间才能完成。下面是我正在谈论的内容的片段(完整的工作代码在下面):

if one_channel:
    m.pcolormesh(lons, lats, img[:,:,0], latlon=True)
else:
    # This is the part that is slow, but I don't know how to
    # accurately plot the data otherwise.

    mesh_rgb = img[:, :-1, :]
    colorTuple = mesh_rgb.reshape((mesh_rgb.shape[0] * mesh_rgb.shape[1]), 3)

    # What you put in for the image doesn't matter because of the color mapping
    m.pcolormesh(lons, lats, img[:,:,0], …
Run Code Online (Sandbox Code Playgroud)

python rgb geolocation matplotlib-basemap

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

在底图中使用 pcolormesh 填充区域

我尝试只孵化具有统计显着结果的区域。如何使用底图和 pcolormesh 来做到这一点?

plt.figure(figsize=(12,12))

lons = iris_cube.coord('longitude').points
lats = iris_cube.coord('latitude').points

m = Basemap(llcrnrlon=lons[0], llcrnrlat=lats[0], urcrnrlon=lons[-1], urcrnrlat=lats[-1], resolution='l')

lon, lat = np.meshgrid(lons, lats)

plt.subplot(111)

cs = m.pcolormesh(lon, lat, significant_data, cmap=cmap, norm=norm, hatch='/')
Run Code Online (Sandbox Code Playgroud)

python matplotlib significance hatchstyle matplotlib-basemap

5
推荐指数
2
解决办法
6265
查看次数

向 matplotlib 图和轴实例添加自定义属性:不明智?

我注意到我可以将自己的属性添加到matplotlib.axes.Axes()实例中matplotlib.figure.Figure()。例如,

import matplotlib as mpl
fig = mpl.figure.Figure()
ax = fig.add_subplot()
ax.foo = 'bar'
Run Code Online (Sandbox Code Playgroud)

实际上,我可能想使用类似的方法将底图实例添加到坐标区对象

import mpl_toolkits.basemap as basemap    
ax.basemap = basemap.Basemap('mollweide', ax=ax)
Run Code Online (Sandbox Code Playgroud)

这样我就可以以更加面向对象、直观的方式添加地理特征。这是这些对象的记录/可靠特征,还是偶然?换句话说,我可以“安全”地使用它吗?

python matplotlib python-3.x matplotlib-basemap

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

带有彩色箭袋的色彩图

我正在绘制一张地图,上面有箭头。这些箭头代表风向、平均风速(每个方向)和发生情况(每个方向)。

方向由箭头的方向指示。箭头的长度表示该方向的平均风速。箭头的颜色表示该方向有风。

这一切都可以与下面的脚本配合使用:

windData = pd.read_csv(src+'.txt'), sep='\t', names=['lat', 'lon', 'wind_dir_start', 'wind_dir_end', 'total_num_data_points','num_data_points', 'avg_windspeed']).dropna()

# plot map
m = Basemap(llcrnrlon=minLon, llcrnrlat=minLat, urcrnrlon=maxLon, urcrnrlat=maxLat, resolution='i')
Left, Bottom = m(minLon, minLat)
Right, Top = m(maxLon, maxLat)

# get x y
x, y = m(windData['lon'], windData['lat'])

# angles
angleStart = -windData['wind_start']+90
angleStart[angleStart<0] = np.radians(angleStart[angleStart<0]+360.)

angleEnd = -windData['wind_end']+90
angleEnd[angleEnd<0] = np.radians(angleEnd[angleEnd<0]+360.)

angle = angleStart + math.radians(binSize/2.)

xux = np.cos(angle) * windData['avg_windspeed']
yuy = np.sin(angle) * windData['avg_windspeed']

# occurence
occurence = (windData['num_data_points']/windData['total_num_data_points'])

xi = np.linspace(minLon, maxLon, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib matplotlib-basemap

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

python和Basemap并从视图中删除墨西哥/加拿大

我在Matplotlib中使用Basemap来绘制美国地图.但是,我似乎无法移除墨西哥或加拿大只是让美国显示.我也需要绘制状态.目前,我的代码是:

self.map = Basemap(llcrnrlon=-119, llcrnrlat=22, urcrnrlon=-64,
                               urcrnrlat=49, projection='lcc', lat_1=33, lat_2=45,
                               lon_0=-95, resolution='i', area_thresh=10000,ax=self.axes)

self.map.drawcoastlines()
self.map.drawcountries()
self.map.drawstates()
self.figure.canvas.draw()
Run Code Online (Sandbox Code Playgroud)

这显示了一些墨西哥和加拿大的美国.如果我发表评论self.map.drawcountries(),那么美国南部和北部的边界将被删除,因此这无济于事.如果我发表评论self.map.drawcoastlines(),这将删除东西边界.我找不到任何其他允许我只绘制美国(带状态)的命令.

有任何想法吗?谢谢!

python plot matplotlib matplotlib-basemap

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

如何在底图上绘制文本,python

我想在我的地图上放一个文字,就像卫星图像一样.

import numpy as np, matplotlib.pyplot as plt    
from mpl_toolkits.basemap import Basemap    

m = Basemap(resolution='l',projection='geos',lon_0=-75.)    
fig = plt.figure(figsize=(10,8))    
m.drawcoastlines(linewidth=1.25)    
x,y = m(-150,80)
plt.text(x,y,'Jul-24-2012')
Run Code Online (Sandbox Code Playgroud)

但是,"7月24日至2012年"的文字没有出现在我的身上.我想这是因为地图不是笛卡尔坐标.

那么,有人可以帮我弄明白怎么做吗?

python matplotlib matplotlib-basemap

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

使用mpl_toolkit.basemap给出属性错误的pcolormesh()动画

我试图在basemap地图上设置一些密度数据的动画.按照[本SO问题] [1]中的方法,我得到以下错误:

/usr/local/lib/python2.7/dist-packages/matplotlib/collections.pyc in update_scalarmappable(self)
    627         if self._A is None:
    628             return
--> 629         if self._A.ndim > 1:
    630             raise ValueError('Collections can only map rank 1 arrays')
    631         if not self.check_update("array"):

AttributeError: 'list' object has no attribute 'ndim'
Run Code Online (Sandbox Code Playgroud)

如果我init()用空值设置数据self.quad.set_array(self.z.ravel()),我最终得到两个绘制的地图,没有数据被动画.

任何人都可以解决我做错的任何亮点都将不胜感激.谢谢!

示例代码:

def plot_pcolor(lons,lats):

    class UpdateQuad(object):

        def __init__(self,ax, map_object, lons, lats):
                self.ax = ax
                self.m  = map_object
                self.lons = lons
                self.lats = lats

                self.ydim, self.xdim = lons.shape

                self.z = np.zeros((self.ydim-1,self.xdim-1))

                x, y = self.m(lons, …
Run Code Online (Sandbox Code Playgroud)

python animation matplotlib-basemap

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

Matplotlib底图沿海坐标

有没有办法查询底图提取所有沿海坐标?如果坐标距离海岸1公里以内,请说用户提供lat/lng并返回功能true/false

python matplotlib matplotlib-basemap

4
推荐指数
2
解决办法
1633
查看次数

在Matplotlib中绘制多个直方图 - 颜色或并排条形图

问题:在Matplotlib中绘制多个直方图时,我无法区分绘图与另一个绘图

图像问题:**问题 **次要问题:部分左侧标签"计数"不在图像范围内.为什么?

描述

我想绘制3个不同组的直方图.每组都是一个0和1的数组.我想要每个的直方图,所以我可以检测数据集上的不平衡.

我让它们分开绘制,但我想要一起绘制它们的图形.

可以并排显示不同的图形,或者我甚至用谷歌搜索将其绘制为3D,但我不知道在图形上"阅读"或"查看"并理解它是多么容易.

现在,我想在同一图形的每一侧绘制[train],[validation]和[test]条形图,如下所示:

我想要这样

PS:我的谷歌搜索没有返回任何可以理解的代码.此外,我想如果有人会检查我是否对我的代码做了任何疯狂.

非常感谢!

代码:

def generate_histogram_from_array_of_labels(Y=[], labels=[], xLabel="Class/Label", yLabel="Count", title="Histogram of Trainset"):
    plt.figure()
    plt.clf()

    colors = ["b", "r", "m", "w", "k", "g", "c", "y"]

    information = []
    for index in xrange(0, len(Y)):
        y = Y[index]

        if index > len(colors):
            color = colors[0]
        else:
            color = colors[index]

        if labels is None:
            label = "?"
        else:
            if index < len(labels):
                label = labels[index]
            else:
                label = "?"

        unique, counts = np.unique(y, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib histogram matplotlib-basemap

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