matplotlib 3d график

У меня есть список дат в формате 15/10/2017

Я попробовал следующее

 from matplotlib import pyplot import pandas as pd dates = ['15/10/2016', '16/10/2016', "17/10/2015", "15/10/2014"] dates_formatted = [pd.to_datetime(d) for d in dates ] x = [1,2,3,4] z = [5,6,7,8] pyplot.scatter(x, dates_formatted, z) pyplot.show() 

Он выдает ошибку TypeError: ufunc 'sqrt' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

Он показывает, является ли это 2D. например pyplot.scatter(x, dates_formatted)

Я также попробовал следующее

 ax = Axes3D(fig) ax = fig.add_subplot(111,projection='3d') ax.scatter(x, dates_formatted, y) pyplot.show() 

Он выдает ошибку. Float() argument must be a string or number

2 Solutions collect form web for “matplotlib 3d график”

Не всегда тривиально говорить matplotlib как переводить строки в систему координат. Почему бы просто не установить пользовательские метки меток для осей?

 import pandas as pd from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt fig = plt.figure('scatter dates') ax = fig.add_subplot(111, projection='3d') dates = ['15/10/2016', '16/10/2016', "17/10/2015", "15/10/2014"] dates_formatted = [pd.to_datetime(d) for d in dates ] x = [1,2,3,4] y = [9,10,11,12] z = [5,6,7,8] ax.scatter(x, y, z) ax.xaxis.set_ticks(x) ax.xaxis.set_ticklabels(dates_formatted) plt.show() 

введите описание изображения здесь

Scatter ожидает число. Таким образом, вы можете конвертировать свои даты в номер следующим образом:

 y = [ (d-min(dates_formatted)).days for d in dates_formatted] 

Теперь вы можете построить данные как

 pyplot.scatter(x, y) 

Для 3D-сюжета вы можете попробовать что-то вроде этого …

 import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D plt.ion() x = [1,2,3,4] z = [5,6,7,8] dates = ['15/10/2016', '16/10/2016', "17/10/2015", "15/10/2014"] dates_formatted = [pd.to_datetime(d) for d in dates] y = [ (d-min(dates_formatted)).days for d in dates_formatted] fig = plt.figure() ax = fig.add_subplot(111, projection='3d') plt.scatter(x, y, z) 

Ось y теперь в днях. Вы можете изменить это, найдя строку даты и изменив ее обратно …

 dt = [ pd.Timedelta(d) + min(dates_formatted) for d in ax.get_yticks()] 

Преобразуйте их в строки …

 dtStr = [d.isoformat() for d in dt] 

И верните их обратно

 ax.set_yticklabels(dtStr) 
  • Построение графика по времени (Python)
  • Как вы строите вертикальную линию на графике временного ряда в Пандах?
  • Построение нескольких строк с помощью блока данных pandas
  • Как избавиться от линий сетки при планировании с помощью Seaborn + Pandas с secondary_y
  • Графики Python не откроются
  • Аннотации участка временного ряда Bokeh отключены на 1 час
  • Как обрабатывать время с часовым поясом в Matplotlib?
  • colobar label matplotlib в ImageGrid
  •  
    Interesting Posts for Van-Lav

    Получить расширение python-markdown для вывода html-тегов с определенным атрибутом класса в Django?

    Раскладка клавиатуры Pygame перепутана

    Что делает команда `as` в Python 3.x?

    wtforms Подкласс класса класса и упорядочение полей

    Разделение большого текстового файла на более мелкие текстовые файлы по номерам строк с использованием Python

    Установка значения во вложенном словаре python с учетом списка индексов и значений

    Комбинируйте шаблон и `ConfigParser`

    В каких файлах я должен указывать VCS игнорировать при использовании Sphinx для документации?

    Matplotlib: укажите формат поплавков для тиков

    python: удалить непустой каталог

    Каковы URL-адреса по умолчанию для системы проверки подлинности пользователя Django?

    Как получить узел в дереве по его метке в nltk python?

    Matplotlib: отображение значений массива с помощью imshow

    Метакласса Python и базовый класс объекта

    Python – почему я могу вызвать метод класса с экземпляром?

    Python - лучший язык программирования в мире.