Добавить текстовую аннотацию к графику из кадра данных панд - PullRequest
0 голосов
/ 11 февраля 2019

Мой код:

import matplotlib.pyplot as plt
import pandas as pd
import os, glob

path = r'C:/Users/New folder'
all_files = glob.glob(os.path.join(path, "*.txt"))
df = pd.DataFrame()
for file_ in all_files:
    file_df = pd.read_csv(file_,sep=',', parse_dates=[0], infer_datetime_format=True,header=None, usecols=[0,1,2,3,4,5,6], names=['Date','Time','open', 'high', 'low', 'close','volume','tradingsymbol'])

df = df[['Date','Time','close','volume','tradingsymbol']]
df["Time"] = pd.to_datetime(df['Time'])
df.set_index('Time', inplace=True)
print(df)

fig, axes = plt.subplots(nrows=2, ncols=1)
################### Volume ###########################
df.groupby('tradingsymbol')['volume'].plot(legend=True, rot=0, grid=True, ax=axes[0])
################### PRICE ###########################
df.groupby('tradingsymbol')['close'].plot(legend=True, rot=0, grid=True, ax=axes[1])

plt.show()

Мой текущий вывод выглядит так: Output

Мне нужно добавить текстовую аннотацию к графику matplotlib.Мой желаемый вывод похож на изображение ниже Desired:

1 Ответ

0 голосов
/ 11 февраля 2019

Трудно ответить на этот вопрос без доступа к вашему набору данных или более простого примера.Тем не менее, я буду стараться изо всех сил.

Давайте начнем с настройки фрейма данных, который может или может напоминать ваши данные:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 3)),
                    columns=['a', 'b', 'c'])

С набором данных мы теперь перейдем к его построениюс

fig, ax = plt.subplots(1, 1)
df.plot(legend=True, ax=ax)

Наконец, мы зациклим столбцы и аннотируем каждую точку данных как

for col in df.columns:
    for id, val in enumerate(df[col]):
        ax.text(id, val, str(val))

Это дало мне график, следующий за графиком, который напоминает желаемую фигуру.enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...