python - TypeError:在底图中绘制颜色图时,输入类型不支持 ufunc 'sqrt'
问题描述
我想使用颜色图绘制关于房价和地理坐标之间关系的散点图。
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()
控制台给出一个 TypeError:
TypeError Traceback(最近一次调用最后一次)在
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'' 无法安全地将输入强制转换为任何支持的类型
我该如何解决这个问题?此致
解决方案
取出'o'
从plt.scatter
线。
推荐阅读
- python - 如何使用opencv从图像中改进矩形?
- java - 在所有对象的参数上运行 java
- sql - SQL根据ID展开列值
- xml - EmEditor v20.8 和 v20.9 无法打开某些 xml 文件
- typescript - 是否可以将泛型类型作为泛型参数传递?
- sql-server - 实体框架 6 搜索外键表
- android - startIntentSenderForResult 已弃用 Android
- python - 任务最后一次成功运行的 Apache Airflow 日期
- c - 程序不读取 csv 文件
- python - 我可以将第三方 Python 库与适用于 Android 和 iOS 的 Kivy 框架一起使用吗?