Ошибка типа: ufunc 'sqrt' не поддерживается для типов ввода при построении цветовой карты в базовой карте - PullRequest
0 голосов
/ 13 мая 2019

Я хотел бы нарисовать точечный график о взаимосвязи между ценами на жилье и географическими координатами, используя цветовую карту.

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 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 ''

Как я могу решить это? С наилучшими пожеланиями

1 Ответ

0 голосов
/ 22 июня 2019

Извлеките 'o' из строки plt.scatter.

...