首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么plt.hline()在数据中显示一个较长的X轴而不是日期数?

为什么plt.hline()在数据中显示一个较长的X轴而不是日期数?
EN

Stack Overflow用户
提问于 2022-07-06 03:54:23
回答 1查看 160关注 0票数 2

我试图复制一个绘图示例,但是遇到了x轴和日期范围的问题。当包含plt.hlines()时,范围可以追溯到1970年。删除时,日期范围是正确的。是什么引起了这个问题?

代码语言:javascript
复制
import yfinance as yf
import matplotlib.pyplot as plt

AAPL = yf.download('AAPL', start = '2020-4-5', end = '2021-6-5',)

data = AAPL['Close']
mean = AAPL['Close'].mean()
std = AAPL['Close'].std()
min_value = min(data)
max_value = max(data)

plt.title("AAPL")
plt.ylim(min_value -20, max_value + 20)
plt.scatter(x=AAPL.index, y=AAPL['Close'])
plt.hlines(y=mean, xmin=0, xmax=len(data))  # If this line is Removed, the X axis works with Date Range.
plt.show()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-06 04:04:23

问题是:

代码语言:javascript
复制
plt.hlines(y=mean, xmin=0, xmax=len(data))  # If this line is Removed, the X axis works with Date Range.

您的数据点在start = '2020-4-5', end = '2021-6-5'之间有数据

但是,当您使用hlines (水平线)时,xminxmax函数是参数,而不是假设它们是什么。

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.hlines.html

  • xminxmax指的是每一行的开始和结束。如果提供标量,则所有行都具有相同的长度。

当您设置xmax=len(data)**,时,您要求在x轴上显示** len(data) “单位”。

当您删除代码片段中的plt.hlines时,实际上是要求matplotlib自动确定x轴范围,这就是它工作的原因。

也许你要找的是指定日期范围。

代码语言:javascript
复制
plt.xlim([datetime.date(2020, 4, 5), datetime.date(2021, 6, 5)])

完整的例子:

代码语言:javascript
复制
import datetime
import yfinance as yf
import matplotlib.pyplot as plt

AAPL = yf.download('AAPL', start = '2020-4-5', end = '2021-6-5',)

data = AAPL['Close']
mean = AAPL['Close'].mean()
std = AAPL['Close'].std()
min_value = min(data)
max_value = max(data)

plt.title("AAPL")
plt.ylim(min_value -20, max_value + 20)
plt.xlim([datetime.date(2020, 4, 5), datetime.date(2021, 6, 5)])
plt.scatter(x=AAPL.index, y=AAPL['Close'])
plt.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72877785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档