标签: matplotlib-basemap

底图和密度图

我想用底图创建一个密度图.我拥有的数据是无人值守的,重复的或彼此非常接近的.我已尝试对数据进行网格化,然后使用pcolor绘制bin的数量,但即使所有数据集的长度相等,我仍然会收到缓冲区大小错误.我最初的想法是使用下面的底图脚本,但我只能分散工作,虽然这不会给我一个密度图.

m = Basemap(resolution='f',projection='merc',                                        
            lon_0=160,                                                               
            llcrnrlat=-30.0,                                                         
            urcrnrlat=30.0,                                                          
            llcrnrlon=100.,                                                          
            urcrnrlon=270.0,                                                         
            lat_ts=0.0) 

m.drawmapboundary(fill_color='white')                                                
m.fillcontinents(color='#F5DEB3',lake_color='#85A6D9')                               
m.drawcoastlines(color='black', linewidth=.4)                                        
m.drawcountries(color='#6D5F47', linewidth=.4)                                       
m.drawmeridians(np.arange(0, 360, 20),                                               
                labels=[0,0,0,1],                                                    
                color='black',                                                       
                dashes=[1,0],                                                        
                labelstyle='+/-',                                                    
                linewidth=0.2)         
m.drawparallels(np.arange(-90, 90, 10),                                              
                labels=[1,0,0,0],                                                    
                color='black',                                                       
                dashes=[1,0],                                                        
                labelstyle='+/-',                                                    
                linewidth=0.2) 
lats = 
array([ 14.375,  14.125,  14.125,   9.375,  13.625,  14.375,   5.625,
    13.875,  14.625,   5.875,   8.875,   5.625,   8.875,  13.375,
    11.125,   8.375,  12.375,   6.125,   5.375,   8.375,   7.375,
     7.875,  14.375,  14.875,   9.875,  11.125,  14.875,   7.875,
     9.125,  11.625,   5.125,  10.875,   5.125,  12.125,  12.625,
     8.625,   5.125,   8.375,  11.625,  11.375,  12.875,  14.375,
     8.875,   8.375,   6.375, …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib python-2.7 matplotlib-basemap

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

matplotlib底图colorbar文本位置

我对颜色条的文本位置有疑问.我正在使用matplotlib Basemap制作一些图,我使用的是colorbar()函数.

现在我需要将我的颜色条放在我的图的左侧.所以我使用了location='left',但是在颜色条的右侧给出了刻度和标签的文本,它覆盖了图片的一部分.

有没有办法改变栏左侧的文字?

matplotlib colorbar matplotlib-basemap

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

使用底图在地图上绘制轨迹

import numpy as np
data = np.loadtxt('path-tracks.csv',dtype=np.str,delimiter=',',skiprows=1)
print data

[['19.70' '-95.20' '2/5/04 6:45 AM' '1' '-38' 'CCM']
['19.70' '-94.70' '2/5/04 7:45 AM' '1' '-48' 'CCM']
['19.30' '-93.90' '2/5/04 8:45 AM' '1' '-60' 'CCM']
['19.00' '-93.50' '2/5/04 9:45 AM' '1' '-58' 'CCM']
['19.00' '-92.80' '2/5/04 10:45 AM' '1' '-50' 'CCM']
['19.20' '-92.60' '2/5/04 11:45 AM' '1' '-40' 'CCM']
['19.90' '-93.00' '2/5/04 12:45 PM' '1' '-43' 'CCM']
['20.00' '-92.80' '2/5/04 1:15 PM' '1' '-32' 'CCM']
['23.10' '-100.20' '30/5/04 4:45 AM' '2' '-45' …
Run Code Online (Sandbox Code Playgroud)

matplotlib python-2.7 matplotlib-basemap

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

Matplotlib 无法识别属性 set_xdata。

参考这篇文章:我一直在尝试运行以下代码来绘制和实时更新图形。但是,每次尝试运行该函数时,都会出现以下错误:AttributeError: 'list' object has no attribute 'set_xdata'

该函数的其余部分如下所示:

def getData(self):
    self.data = random.gauss(10,0.1)
    self.ValueTotal.append(self.data)
    #With value total being a list instantiated as ValueTotal = []
    self.updateData()

def updateData(self):

    if not hasattr(self, 'line'):
        # this should only be executed on the first call to updateData
        self.widget.canvas.ax.clear()
        self.widget.canvas.ax.hold(True)
        self.line = self.widget.canvas.ax.plot(self.ValueTotal,'r-')
        self.widget.canvas.ax.grid()
    else:
        # now we only modify the plotted line
        self.line.set_xdata(np.arange(len(self.ValueTotal)))
        self.line.set_ydata(self.ValueTotal)

    self.widget.canvas.draw()   
Run Code Online (Sandbox Code Playgroud)

虽然此代码起源于sebastianJake French我没有成功实现它。我做错了什么吗?是什么导致了这个错误,我该如何解决?

这仅用于示例,不会复制到我的代码中。我只是将它用作参考材料,并认为这将是与社区交流我的问题的最简单方法。我不相信以前的代码。

python pyqt matplotlib matplotlib-basemap

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

底图上的`map.scatter`不显示标记

我有一张德国地图,以及几个城市的坐标. plot正确显示点.我想改为使用scatter,以便能够针对其他变量为市场着色,然后显示一个colorbar.该代码在控制台上运行,但是当我更换点不会显现map.plotmap.scatter.

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


plt.figure(1)
map = Basemap(projection='merc',
              resolution='l',
              llcrnrlat=44.0,
              llcrnrlon=5.0,
              urcrnrlat=57.0,
              urcrnrlon=17)
map.drawcoastlines()
map.drawcountries()
map.fillcontinents(color='lightgray')
map.drawmapboundary()

long = np.array([ 13.404954,  11.581981,   9.993682,   8.682127,   6.960279,
         6.773456,   9.182932,  12.373075,  13.737262,  11.07675 ,
         7.465298,   7.011555,  12.099147,   9.73201 ,   7.628279,
         8.801694,  10.52677 ,   8.466039,   8.239761,  10.89779 ,
         8.403653,   8.532471,   7.098207,   7.216236,   9.987608,
         7.626135,  11.627624,   6.852038,  10.686559,   8.047179,
         8.247253,   6.083887,   7.588996,   9.953355,  10.122765])

lat = …
Run Code Online (Sandbox Code Playgroud)

python scatter colorbar matplotlib-basemap

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

导入Basemap时导入ImportError

我在导入底图时遇到问题,即使我刚刚安装了它pip install basemap.我已经尝试过python2.7和python3:

python3
>>> from mpl_toolkits.basemap import Basemap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'mpl_toolkits'

python2.7
>>> from mpl_toolkits.basemap import Basemap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.py", line 37, in <module>
    import _geoslib
ImportError: libgeos_c.so.1: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我在使用ubuntu操作系统.

python ubuntu python-2.7 python-3.x matplotlib-basemap

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

在 Basemap 上绘制文本字符串代替 Python 中的点

我有 79 个纬度和经度,我有数据可以在 Python 中的底图上绘制。我有一个由 79 个数字组成的数组,我想绘制它而不是普通点(即我想要显示“1”或“2”而不是通常的点)。我尝试了该plt.annotate功能,但没有用。

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

locs = np.genfromtxt('/Volumes/NO_NAME/Classwork/OK_vic_grid.txt')
lat = locs[:,1] # 79 values
lon = locs[:,2] # 79 values

m = Basemap(projection='stere',lon_0=-95,lat_0=35.,lat_ts=40,\
        llcrnrlat=33,urcrnrlat=38,\
        llcrnrlon=-103.8,urcrnrlon=-94) 

X,Y = m(lon,lat)    
m.drawcoastlines()
m.drawstates()
m.drawcountries()
m.drawmapboundary(fill_color='lightblue')
m.drawparallels(np.arange(0.,40.,2.),color='gray',dashes=[1,3],labels=[1,0,0,0])
m.drawmeridians(np.arange(0.,360.,2.),color='gray',dashes=[1,3],labels=[0,0,0,1])

m.scatter(X,Y)
????? (Want to plot an array "maxpc" which has 79 numbers that I want to plot the string of)
Run Code Online (Sandbox Code Playgroud)

OK_vic_grid.txt:

1   33.75   -97.75
2   33.75   -97.25
3   33.75   -96.75 …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib-basemap

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

如何使用mpl_toolkits.basemap.cm中的colormap创建离散颜色条?

当我绘制pcolormesh情节使用颜色表from matplotlib.cm(如"jet","Set2"等),我可以使用:

 cMap = plt.cm.get_cmap("jet",lut=6)    
Run Code Online (Sandbox Code Playgroud)

colorbar显示如下:

在此输入图像描述

但是,如果我要拨打的颜色表从Basemap包装(如GMT_drywet,GMT_no_green等).我无法使用plt.cm,get_cmap这些色彩图并将它们分开.

是否mpl_toolkits.basemap.cm有这样一个类似的功能lut

python numpy matplotlib matplotlib-basemap colormap

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

在plt.cm.get_cmap中可以使用什么名称?

我有这个代码:

plt.scatter(data_projected[:,0],data_projected[:,1],c=digits.target
        ,edgecolors='none',alpha=0.5,cmap=plt.cm.get_cmap('nipy_spectral',10));    
Run Code Online (Sandbox Code Playgroud)

我的困惑来自plt.cm.get_cmap('nipy_spectral',10)。有时会有plt.cm.get_cmap('RdYlBu')代替。

就是'RdYlBu''nipy_spectral'一个颜色的名称?还有其他名称可以代替吗?

是否有所有可用颜色的清单?

我已经阅读了该文档,但是它似乎无济于事,或者我听不懂。

python matplotlib data-analysis python-3.x matplotlib-basemap

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

在 Matplotlib 3.1 中不推荐使用 dedent 函数并将在 3.3 中删除

我试图将 Goes-16 Netcdf 文件投影到底图中,但我每次都遇到相同的错误。我试过将 python 从 3.7.3 降级到 3.6,更新和降级底图,但在我能找到的任何地方都没有这方面的文献。

我在网上读到,也许 python 3.7.3 可能不再与底图兼容,但我之前用 python 3.7.1 运行过代码并且它工作正常。我试图寻找代码中提到的替代方案,即“inspect.cleandoc”,但我不知道如何正确使用这个库。

我的代码是:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap 
import numpy as np
from remap import remap 
from cpt_convert import loadCPT 
from matplotlib.colors import LinearSegmentedColormap
from netCDF4 import Dataset
from matplotlib.patches import Rectangle
from osgeo import gdal



# Load the Data
# Path to the GOES-16 image file
channel_8 = 'C08/OR_ABI-L2-CMIPF-M3C08_G16_s20180391900384_e20180391911151_c20180391911220.nc'
path_30 = '/Volumes/Anthonys_backup/Masters_Thesis/Satellite_Data/new/'
path = path_30 …
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-3.x matplotlib-basemap

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