如何使用Python将股票图表中已绘制的趋势线向右延长
股票趋势线向右延长实现方案
核心逻辑:你当前的代码仅绘制了两个最低点之间的线段,要延长趋势线只需要先拟合两点对应的线性方程,再计算目标x轴位置对应的y值,将线段终点延伸到该位置即可。
修改后的完整代码如下:
import matplotlib.pyplot as plt import matplotlib.dates as mdates import yfinance as yf df = yf.download('aapl', '2020-01-01', '2021-01-01') df1 = df[df.index > '2020-06-01'] df2 = df[df.index < '2020-06-02'] lowest2 = df1[df1.Close == df1.Close.min()] lowest1 = df2[df2.Close == df2.Close.min()] fig, ax = plt.subplots(figsize= (10, 6)) ax.plot(df.index, df.Close) # 趋势线延长逻辑 # 将日期转为matplotlib内部数值格式用于计算斜率 x1 = mdates.date2num(lowest1.index[0]) x2 = mdates.date2num(lowest2.index[0]) y1 = lowest1.Low[0] y2 = lowest2.Low[0] # 计算线性方程参数 y = kx + b k = (y2 - y1) / (x2 - x1) b = y1 - k * x1 # 取x轴终点(数据集最后一个日期)计算延长后的y值,如需延长到数据集外可替换为自定义日期 x_extend = mdates.date2num(df.index[-1]) y_extend = k * x_extend + b # 绘制包含延长段的趋势线,可自定义color参数调整线条颜色 ax.plot([lowest1.index[0], lowest2.index[0], df.index[-1]], [y1, y2, y_extend], color='orange') ax.set_xlim(df.index[0], df.index[-1]) plt.show()
内容的提问来源于stack exchange,提问作者Raj Nair
相关产品推荐
相关产品推荐

