我在python中使用scatter时遇到了一些麻烦。我有2个纬度和经度大小为100的向量,以及1到2之间相应数据的向量100。
我试图在北极立体投影地图上显示这些数据,但图中没有任何内容。这是我的代码:
import numpy as np
import matplotlib as mpl
from matplotlib import pyplot as plt
from matplotlib import colors as mpl_colors
from mpl_toolkits.basemap import Basemap`
lon=np.linspace(-180,180,num=100)
lat=np.linspace(75,75,num=100)
data=1+np.random.rand(100)
cmap = plt.cm.jet
norm_color = mpl_colors.Normalize(vmin=None, vmax=None, clip=False)
fig=plt.figure()
m = Basemap(projection='npstere',boundinglat=65,lon_0=310,resolution='l')
x,y = m(lon,lat)
m.scatter(x, y,marker='+',c=data,cmap=cmap, norm=norm_color,edgecolor='none')
plt.show()
当我只是散布坐标时:m.scatter(x, y,marker='+')
它工作正常(我在相应的坐标处有“+”,即75°纬度投影圆)。但是当我想添加数据时,不会显示任何内容。
我在哪里不使用散点图?
答案 0 :(得分:1)
我发现了什么问题。
同时使用选项marker='+'
和edgecolor='None'
。
后者允许更改标记边缘的颜色。标记为“+”,边缘是标记本身:这就是它没有显示的原因。
替换行m.scatter(x, y,marker='+',c=data,cmap=cmap, norm=norm_color,edgecolor='none')
以下工作:
m.scatter(x, y,marker='+',c=data,cmap=cmap, norm=norm_color)
或
m.scatter(x, y,marker='o',c=data,cmap=cmap, norm=norm_color,edgecolor='none')