类型错误:在底图中绘制色彩映射表时,输入类型不支持 ufunc 'sqrt'



我想画一个散点图,内容涉及使用colormap的房价和地理坐标之间的关系。

from mpl_toolkits.basemap import Basemap

lats = df['latitude'].as_matrix()
lons = df['longitude'].as_matrix()
zoom_scale = 0
bbox = [np.min(lats)-zoom_scale,np.max(lats)+zoom_scale,
        np.min(lons)-zoom_scale,np.max(lons)+zoom_scale]
plt.figure()
m = Basemap(projection='merc',llcrnrlat=bbox[0],urcrnrlat=bbox[1],
    llcrnrlon=bbox[2],urcrnrlon=bbox[3],resolution='i')
m.drawcoastlines()
m.drawrivers()
x,y = m(lons,lats)
cm = plt.cm.get_cmap('coolwarm')
plot = m.scatter(x,y,'o',c = df['price'],cmap=cm)
plt.colorbar(plot)
plt.title("House Price with Geographic Coordinate")
plt.show()

控制台给出一个类型:


     28 x,y = m(lons,lats)
     29 cm = plt.cm.get_cmap('coolwarm')
---> 30 plot = m.scatter(x,y,'o',c = df['price'],cmap=cm)
     31 plt.colorbar(plot)
     32 plt.title("House Price with Geographic Coordinate")
....
/anaconda3/lib/python3.7/site-packages/matplotlib/collections.py in set_sizes(self, sizes, dpi)
    872             self._sizes = np.asarray(sizes)
    873             self._transforms = np.zeros((len(self._sizes), 3, 3))
--> 874             scale = np.sqrt(self._sizes) * dpi / 72.0 * self._factor
    875             self._transforms[:, 0, 0] = scale
    876             self._transforms[:, 1, 1] = scale

TypeError:不支持输入类型的UFUNC'SQRT',并且根据铸件规则" SAFE"'

,无法将输入安全地胁迫到任何受支持类型

我该如何解决?最好的问候

plt.scatter行中取出'o'

这是scatter图的问题。这可以通过明确提及您提供的参数来解决。

所以,更改

plot = m.scatter(x,y,'o',c = df['price'],cmap=cm)

to

plot = m.scatter(x,y,marker='o',cmap=cm)

免费的一些提示:每当使用散点图时,避免直接命名函数参数,即

plt.scatter(x,y,'blue')

宁愿使用

plt.scatter(x,y,color='blue')

此外,要在日常编程中进行调试,请首先简单地将散布绘制为plot = m.scatter(x,y)。然后,继续增加颜色,形状等属性

NOTE :此错误在线图中不容易发生(plt.plot(x,y,'red')将有效(

相关内容

最新更新