让我写下我到目前为止所做的:
import matplotlib.pyplot as plt
import pandas_datareader.data as web
import pandas as pd
import datetime
start = datetime.datetime(2020, 8, 19)
end = datetime.datetime(2021, 3, 15)
KE = web.DataReader("BEKE", "yahoo", start, end)
ma5 = KE['Adj Close'].rolling(window=5).mean()
ma20 = KE['Adj Close'].rolling(window=20).mean()
ma60 = KE['Adj Close'].rolling(window=60).mean()
ma120 = KE['Adj Close'].rolling(window=120).mean()
plt.style.use('classic')
KE.insert(len(KE.columns), "MA5", ma5)
KE.insert(len(KE.columns), "MA20", ma20)
KE.insert(len(KE.columns), "MA60", ma60)
KE.insert(len(KE.columns), "MA120", ma120)
plt.plot(KE.index, KE['Adj Close'], label="Adj Close",)
plt.plot(KE.index, KE['MA5'], label="MA5")
plt.plot(KE.index, KE['MA20'], label="MA20")
plt.plot(KE.index, KE['MA60'], label="MA60")
plt.plot(KE.index, KE['MA120'], label="MA120")
plt.legend(loc='best')
plt.grid()
plt.show()
我只需要绘制 2021 年 2 月 1 日至 2021 年 3 月 15 日的数据。
我不想删除 2 月份之前的数据系列,因为无法绘制 MA60 和 MA120 线。
答案 0 :(得分:0)
您可以像这样使用 .loc
获取 DataFrame 的子集:
# KE.insert(len(KE.columns), "MA5", ma5)
# KE.insert(len(KE.columns), "MA20", ma20)
# KE.insert(len(KE.columns), "MA60", ma60)
# KE.insert(len(KE.columns), "MA120", ma120)
# above lines shown to indicate where to add the following line:
KE_subset = KE.loc[datetime.date(2021,2,1):datetime.date(2021,3,15)]
然后您只需绘制该子集而不是完整的 DataFrame:
plt.plot(KE_subset.index, KE_subset['Adj Close'], label="Adj Close",)
plt.plot(KE_subset.index, KE_subset['MA5'], label="MA5")
plt.plot(KE_subset.index, KE_subset['MA20'], label="MA20")
plt.plot(KE_subset.index, KE_subset['MA60'], label="MA60")
plt.plot(KE_subset.index, KE_subset['MA120'], label="MA120")
# I also rotated the x-axis labels to fit better with:
plt.xticks(rotation=45)