我想用底图创建一个密度图.我拥有的数据是无人值守的,重复的或彼此非常接近的.我已尝试对数据进行网格化,然后使用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) 我对颜色条的文本位置有疑问.我正在使用matplotlib Basemap制作一些图,我使用的是colorbar()函数.
现在我需要将我的颜色条放在我的图的左侧.所以我使用了location='left',但是在颜色条的右侧给出了刻度和标签的文本,它覆盖了图片的一部分.
有没有办法改变栏左侧的文字?
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) 参考这篇文章:我一直在尝试运行以下代码来绘制和实时更新图形。但是,每次尝试运行该函数时,都会出现以下错误: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)
虽然此代码起源于sebastian和Jake French我没有成功实现它。我做错了什么吗?是什么导致了这个错误,我该如何解决?
这仅用于示例,不会复制到我的代码中。我只是将它用作参考材料,并认为这将是与社区交流我的问题的最简单方法。我不相信以前的代码。
我有一张德国地图,以及几个城市的坐标.
plot正确显示点.我想改为使用scatter,以便能够针对其他变量为市场着色,然后显示一个colorbar.该代码在控制台上运行,但是当我更换点不会显现map.plot有map.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) 我在导入底图时遇到问题,即使我刚刚安装了它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操作系统.
我有 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) 当我绘制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?
我有这个代码:
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
我试图将 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 ×8
matplotlib ×7
python-2.7 ×3
python-3.x ×3
colorbar ×2
numpy ×2
colormap ×1
plot ×1
pyqt ×1
scatter ×1
ubuntu ×1