Базовая карта TypeError: входными данными должны быть массив, список, кортеж или скаляр - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь создать визуализацию карты, используя модуль basemap в Python 3.0, но когда я пытаюсь построить эту фигуру, я получаю сообщение об ошибке TypeError:

TypeError: input must be an array, list, tuple or scalar

Мой код выглядит так:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

data = pd.ExcelFile('C:\\Users\\...xlsx')
data_input = pd.read_excel(data, 'Sheet2')

# Extract the data we're interested in
lat = data_input['value1'].values
lon = data_input['value2'].values
capacity = data_input['value3'].values

# 1. Draw the map background
fig = plt.figure(figsize=(8, 8))
m = Basemap(projection='lcc', resolution='h', 
            lat_0=31.1351682, lon_0=-99.3350553,
            width=1.3E6, height=1.25E6)
m.shadedrelief()
m.drawcoastlines(color='gray')
m.drawcountries(color='gray')
m.drawstates(color='gray')

# 2. scatter city data, with color reflecting population
# and size reflecting area
m.scatter(lon, lat, latlon=True,
          c=np.log10(capacity), s=capacity,
          cmap='Reds', alpha=0.5)

Я попытался изменить все входные данные на data_input.values, data_input.to_list(), list(data_input) и просто использовать стандартные панды Series.

The ошибка здесь происходит трассировка:

  File "<ipython-input-6-3a66206674c7>", line 3, in <module>
    cmap='Reds', alpha=0.5)

  File "C:\Users\...Continuum\anaconda3\lib\site-packages\mpl_toolkits\basemap\__init__.py", line 566, in with_transform
    x, y = self(x,y)

  File "C:\Users\...\Continuum\anaconda3\lib\site-packages\mpl_toolkits\basemap\__init__.py", line 1191, in __call__
    xout,yout = self.projtran(x,y,inverse=inverse)

  File "C:\Users\...\Continuum\anaconda3\lib\site-packages\mpl_toolkits\basemap\proj.py", line 288, in __call__
    outx,outy = self._proj4(x, y, inverse=inverse)

  File "C:\Users\...\Continuum\anaconda3\lib\site-packages\pyproj\__init__.py", line 397, in __call__
    inx, xisfloat, xislist, xistuple = _copytobuffer(lon)

  File "C:\Users\...\Continuum\anaconda3\lib\site-packages\pyproj\__init__.py", line 652, in _copytobuffer

    raise TypeError('input must be an array, list, tuple or scalar')

Независимо от того, какую форму он получает, он не работает.Что мне здесь не хватает?

...