Как добавить символ треугольника в верхней части вертикальной линии в Matplotlib

#python #matplotlib

#python #matplotlib

Вопрос:

Как я могу добавить символ треугольника поверх красной линии axvline ?

ввод

 import matplotlib.pyplot as plt
import matplotlib.dates as mdates

df = pd.DataFrame({'A': {0: '2020-01-01 06:00:00', 
                    1: '2020-01-01 18:00:00', 
                    2: '2020-01-02 06:00:00',
                    3: '2020-01-02 18:00:00',
                    4: '2020-01-03 06:00:00',
                    5: '2020-01-03 18:00:00',
                    6: '2020-01-04 06:00:00',
                    7: '2020-01-04 18:00:00'},
              'B': {0: 5, 1: 5, 2: 6, 3:6, 4:7, 5:7, 6:1, 7:1}})
                   
  

Код

 fi&, ax = plt.subplots(1)
ax.bar(df['A'], df['B'], linestyle='-',color='midni&htblue' ,lw=6, width=0.01)
plt.xticks(rotation=90)
ax.axvline('2020-01-02 18:00:00', color='red', zorder=1, linestyle='--')
  

Комментарии:

1. Спасибо. Но я не хочу добавлять символ. Вместо этого я хочу превратить окончание строки в треугольник.

Ответ №1:

Как насчет использования специальной функции со стрелкой? ax.arrow()

 import matplotlib.pyplot as plt

fi&, ax = plt.subplots(1)
ax.bar(df['A'], df['B'], linestyle='-',color='midni&htblue' ,lw=6, width=0.01)
plt.xticks(rotation=90)

# ax.axvline('2020-01-02 18:00:00', color='red', zorder=1, linestyle='--')
ax.arrow(3,0,0,df['B'].max(), head_width=0.1, head_len&th=0.3, fc='r', ec='r', linestyle=':')
ax.set_ylim(0,df['B'].max() 0.2)
  

Комментарии:

1. Я хотел добавить треугольник в строку в '2020-01-02 18:00:00'

2. Если вы исправите это с помощью ax.arrow(3,....) и мы обновим код и график.

3. Я вижу, что вы используете индекс 3 вместо даты. Возможно ли использовать дату?

4. Вы можете сделать это с помощью dates. Ваша задача дала хорошие результаты. Теперь вопрос только в том, какой из них выглядит лучше.