gpt4 book ai didi

python - 为什么 x 轴使用日期和 matplotlib 上 x 轴使用数字列表之间的绘图显示不同?

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:18 24 4
gpt4 key购买 nike

我有包含 ohlc 属性的股票数据,我想通过计算收盘价来制作 RSI 指标图。由于股票数据是按日期排序的,因此必须使用date2num将日期更改为数字。但当重叠绘制时,收盘属性的计算结果会变成一个 RSI 值列表。

我认为 RSI 结果的长度与日期长度不同,但在我通过执行 len(rsi) == len(df ['date']) 测试后显示相同的长度。然后我尝试不使用 x 轴日期,而是使用 range(0, len(df['date'])) 生成的数字列表,并按照我的预期显示绘图。

#get data
df = df.tail(1000)

#covert date
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].apply(mdates.date2num)

#make indicator wit TA-Lib
rsi = ta.RSI(df['close'], timeperiod=14)

#plot rsi indicator wit TA-Lib
ax1.plot(df['date'], rsi)
ax2.plot(range(0, len(df['date'])), rsi)

#show chart
plt.show()

我希望使用 x 轴日期的输出与 x 轴数字列表相同

Image that shows the difference

最佳答案

似乎 matplotlib 选择要显示的 x 刻度(自动选择时)以显示“圆形”数字。因此,对于整数,每 200 一个刻度;就你的日期而言,每两个月一次。

您似乎期望日期遵循与整数相同的刻度步骤,但这将导致图表显示月中的任意日期,这不是一个好的默认行为。

如果这是您想要的行为,请尝试以下操作:

rng = range(len(df['date']))
ax2.plot(rng, rsi) # Same as in your example
ax2.set_xlim((rng[0], rng[-1])) # Make sure no ticks outside of range
ax2.set_xticklabels(df['date'].iloc[ax2.get_xticks()]) # Show respective dates in the locations of the integers

如果您希望使用与日期相同的刻度显示数字而不是日期,那么这种行为当然可以逆转,但我会将其留给您。

关于python - 为什么 x 轴使用日期和 matplotlib 上 x 轴使用数字列表之间的绘图显示不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55932016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com