如何将熊猫系列绘制为水平线?

时间:2019-06-03 22:17:41

标签: python pandas matplotlib plot

我有以下代码:

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

我想知道如何代替一幅线图,而是一堆水平线(其基于short_run的值与y轴相交)。换句话说,如何将上一张图转换成这张图:

desired output

(PS:我不需要红线,我只是添加了它以便于理解)

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您未能提供Minimal, Complete, and Verifiable example。由于我没有您的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()