Как построить серию панд в виде горизонтальных линий? - PullRequest
2 голосов
/ 04 июня 2019

У меня есть следующий код:

import pandas as pd
import matplotlib.pyplot as plt


df = pd.read_csv("data.csv")

short_run = df["High"][df["Volume"] >= df["Volume"].quantile(0.999)][1:22]

short_run.plot()
plt.show()

Вывод short_run:

1012     0.000189
1013     0.000167
11696    0.000096
25019    0.000075
25020    0.000076
25071    0.000077
25072    0.000078
25073    0.000081
25079    0.000085
25080    0.000089
25081    0.000090
25083    0.000095
25084    0.000099
25085    0.000117
25086    0.000106
25087    0.000103
25088    0.000100
25089    0.000090
25090    0.000092
25092    0.000089
25093    0.000086

, который выводит следующую диаграмму:

output

Мне было интересно, как вместо получения линейного графика я мог бы вместо этого получить группу горизонтальных линий (которые пересекают ось Y на основе значений short_run).Другими словами, как я могу превратить предыдущую диаграмму в эту:

desired output

(PS: мне не нужна красная линия,Я просто включил, чтобы было легче понять)

Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 04 июня 2019

Вы не предоставили Минимальный, Полный и Проверяемый пример . Поскольку у меня нет вашего DataFrame, я могу сказать вам косвенное решение.

Идея состоит в том, чтобы получить экземпляр оси, возвращаемый df.plot, а затем получить y-данные. Затем обведите значения и нарисуйте горизонтальную линию на каждом из них. Чтобы скрыть вашу настоящую красную линию, мне проще всего снова использовать белый цвет , поскольку вы не предоставили никакого воспроизводимого кода

ax = df.plot(color='white')
line = ax.lines[0]
for y in line.get_ydata():
    plt.axhline(y)

В качестве альтернативы, предполагая, что ваши значения y находятся в переменной y_val, вам не нужно сначала отображать DataFrame. Вы можете напрямую использовать matplotlib как

import matplotlib.pyplot as plt

for y in y_val:
    plt.axhline(y)

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