Pandas и Matplotlib: добавление всплывающей подсказки для интерактивности - PullRequest
0 голосов
/ 05 мая 2020

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

import matplotlib.pyplot as plt
import pandas as pd
import pandas as pd
from numpy import nan
from matplotlib import dates as mpl_dates


df = dataset

df["Date"] = pd.to_datetime(df["Date"]).dt.strftime('%m/%d/%Y')
#df["Date"] = pd.to_datetime(df["Date"]).apply(lambda x: x.strftime('%B-%Y'))

df.loc[df['Actuals'] == 0, ['Actuals']] = nan
df.loc[df['Actuals'] > 0, ['Predicted_Lower']] = nan
df.loc[df['Actuals'] > 0, ['Predicted_Upper']] = nan
# gca stands for 'get current axis'
ax = plt.gca()
y1 = df['Predicted_Lower']
y2 = df['Predicted_Upper']
x = df['Date']


ax.fill_between(x,y1, y2, facecolor="blue", alpha=0.7)
df.plot(kind='line',x='Date',y='Predicted', color='black', ax=ax)
df.plot(kind='line',x='Date',y='Actuals', color='green', ax=ax)
df.plot(kind='line',x='Date',y='Predicted_Lower',color='white',ax=ax)
df.plot(kind='line',x='Date',y='Predicted_Upper',color='white', ax=ax)

date_format = mpl_dates.DateFormatter('%Y-%m-%d')
plt.gca().xaxis.set_major_formatter(date_format)

locs, labels = plt.xticks()
plt.xticks(locs[::3], labels[::3], rotation=45)
plt.show()
plt.xticks(rotation=45)
plt.legend(['Predicted','Actuals'])
plt.xlabel('Date')
df.head(30)
plt.show()

с помощью pandas, matplotlib, я получаю данные с сервера sql, который подключен к Power BI, и пишу сценарии для отображения графиков .

enter image description here

1 Ответ

0 голосов
/ 05 мая 2020

Возможно использование matplotlib, как описано здесь .

Однако вы можете изучить другие пакеты построения графиков, такие как plotly, где он встроен, поведение по умолчанию.

import plotly.express as px

df = pd.DataFrame(np.arange(20), columns=['x'])
df['y'] = df['x']**2
px.line(df, x='x', y='y')

enter image description here

В вашем примере вы можете попробовать что-то вроде

px.line(df, x='Date', y=Predicted, ...)
...