ValueError в базовой карте Python?

Итак, недавно я впервые использовал базовую карту Python, и только вчера у меня был скрипт, который работал с большим набором данных, состоящим примерно из 30 000 точек. Когда я вернулся сегодня, он перестал работать и начал выдавать мне ошибки значений, когда я добавлял новый набор данных. Я не знаю, что может быть причиной этого, но я получаю ошибку значения?

    ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-16fa79cd74a5> in <module>()
     12     longitude = np.array(df[(df['FLOAT'] == x)]['LONGITUDE'])
     13     latitude = np.array(df[df['FLOAT'] == x]['LATITUDE'])
---> 14     m.plot(longitude,latitude, latlon=True)
     15 parallels = np.arange(-90.,90.,10.)
     16 

C:\Anaconda\lib\site-packages\mpl_toolkits\basemap\__init__.pyc in with_transform(self, x, y, *args, **kwargs)
    534             if self.projection in _cylproj or self.projection in _pseudocyl:
    535                 if x.ndim == 1:
--> 536                     x = self.shiftdata(x)
    537                 elif x.ndim == 0:
    538                     if x > 180:

C:\Anaconda\lib\site-packages\mpl_toolkits\basemap\__init__.pyc in shiftdata(self, lonsin, datain, lon_0)
   4775             thresh = 360.-londiff_sort[-2]
   4776             itemindex = len(lonsin)-np.where(londiff>=thresh)[0]
-> 4777             if itemindex:
   4778                 # check to see if cyclic (wraparound) point included
   4779                 # if so, remove it.

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Кто-нибудь знает? Может быть, в массиве есть значение данных, которое не работает правильно?


person Raishin    schedule 05.08.2015    source источник
comment
Насколько я могу судить, np.where в строке 4776 возвращает массив, в котором должно быть одно значение. Каковы формы ваших массивов longitude и latitude?   -  person Alyssa Haroldsen    schedule 05.08.2015
comment
(2140L,) для них обоих, когда я печатаю значение формы.   -  person Raishin    schedule 05.08.2015
comment
То есть, если вы имеете в виду массивы долготы и широты, которые я передаю. Я не знаю, что на самом деле делает с ними базовая карта после этого очень хорошо. Это работает, когда я переключаюсь обратно на старый файл csv, поэтому я думаю, что что-то не так с вводом данных или двумя... Я просто не знаю, почему это может вызвать проблемы с базовой картой, пока это правильное сопряжение. Диапазон данных в новом файле простирается по долготе от -179,829 до 179,796. Широты довольно далеки от максимума.   -  person Raishin    schedule 05.08.2015
comment
Если это так, то кажется, что недостаточно информации для решения проблемы без данных о проблеме и самого кода. Похожи ли новый и старый CSV-файлы? Если это так, выполните diff и посмотрите, какие значения вызывают проблемы.   -  person Alyssa Haroldsen    schedule 05.08.2015
comment
Ну, это более 300 000 записей данных... Я могу только представить, что это как-то связано с попыткой нарисовать линию, которая проходит по одному из краев карты. Кажется, он работает нормально, пока линия, которую я прошу, не делает этого.   -  person Raishin    schedule 05.08.2015
comment
Я смог построить данные, когда они были разделены на несмежные участки. Каждая линия разделена на несколько небольших линий, построенных в своем собственном диапазоне широты/долготы. Это не вызвало проблем.   -  person Raishin    schedule 05.08.2015


Ответы (1)


Это вызвано ошибкой базовой карты № 214.

На момент написания статьи (17 марта 2016 г.) эта ошибка все еще оставалась открытой, поэтому вам нужно будет найти обходной путь:

  • Отсортируйте данные перед построением графика. Конечно, это может быть нежелательно, если вам нужно нарисовать настоящие сегменты линий.
  • Разделите данные на подразделы, как вы сделали.
person gerrit    schedule 17.03.2016