Ошибка переполнения возникает из-за того, что DateFormatter Matplotlib не может отобразить данные np.datetime64
напрямую, что должно быть в случае с вашими данными. Вам необходимо явно преобразовать ваши даты в datetime.date
объекты.
Пожалуйста, посмотрите на это: https://matplotlib.org/3.1.1/gallery/recipes/common_date_problems.html
Ошибка переполнения возникает из-за того, что DateFormatter Matplotlib не может напрямую отобразить данные np.datetime64
, что должно быть в случае с ваши данные. Вам необходимо явно преобразовать ваши даты в datetime.date
объекты.
Пожалуйста, посмотрите на это: https://matplotlib.org/3.1.1/gallery/recipes/common_date_problems.html
Редактировать: Это может быть полезно для вас.
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.dates import date2num, DateFormatter
import numpy as np
import pandas as pd
from mpl_toolkits.mplot3d import Axes3D
from datetime import datetime, timedelta
# a test dataframe
df = pd.DataFrame({
'date': np.array([str(datetime(2020,3,30).date()+timedelta(x+1))+' 00:00:00' for x in range(200)], dtype='object'),
'sales': np.random.randint(low=1, high=200, size=200),
'%sales in US' : 30 * np.random.random_sample(size=200) + 20
})
# appropriate type conversions
df['date']= pd.to_datetime(df['date'])
df['date'] = df['date'].apply(date2num)
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.scatter3D(df['sales'], df['%sales in US'], df['date'], c=df['date'], cmap="jet_r")
ax.zaxis.set_major_formatter(matplotlib.dates.DateFormatter('%Y-%M'))
plt.xlabel('sales', fontsize=20)
plt.ylabel('%sales in US', fontsize=16)
ax.set_zlabel('date', fontsize=16)
plt.show()
Вывод: https://imgur.com/a/WXM07it.jpg