【问题标题】:How to plot a pandas series as horizontal lines?如何将熊猫系列绘制为水平线?
【发布时间】:2019-10-19 11:17:42
【问题描述】:

我有以下代码:

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

输出如下图:

我想知道如何不获取线图,而是获取一堆水平线(根据short_run 的值与 y 轴相交)。换句话说,我怎样才能把以前的图表变成这个:

(PS:我不需要红线,我只是为了更容易理解而包含)

非常感谢您的帮助

【问题讨论】:

  • @roganjosh 哎呀,感谢您指出。是的,我正在寻找的是水平线。 (我更新了我的问题)
  • 只有22个数字,你可以在问题中包含short_run吗?
  • @QuangHoang 谢谢你的回复,我刚刚用 short_run 的值更新了我的问题

标签: python pandas matplotlib plot


【解决方案1】:

您未能提供Minimal, Complete, and Verifiable example。由于我没有你的 DataFrame,我可以告诉你一个 indirect 解决方案。

想法是获取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()

【讨论】:

  • 非常感谢您的回答,它似乎不起作用(我没有收到任何错误,但图表加载了几个小时,实际上没有加载)
  • 我已经用short_run 的值更新了我的问题。
猜你喜欢
  • 1970-01-01
  • 2017-09-20
  • 2020-01-14
  • 2013-11-25
  • 2018-08-28
  • 2021-12-20
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
相关资源
最近更新 更多