我有以下代碼:
import pandas as pd
from pandas import DataFrame as df
import matplotlib
from pandas_datareader import data as web
import matplotlib.pyplot as plt
import datetime
import warnings
warnings.filterwarnings("ignore")
from matplotlib.dates import date2num
from matplotlib import dates as mdates
from matplotlib.ticker import NullFormatter
from matplotlib.dates import MonthLocator, DateFormatter
start = datetime.date(2021,1,1)
end = datetime.date.today()
stock = 'fb'
data = web.DataReader(stock, 'yahoo', start, end)
data.index = pd.to_datetime(data.index, format ='%Y-%m-%d')
data = data[~data.index.duplicated(keep='first')]
data.reset_index()
data['month'] = data.index.month
data['week'] = data.index.week
data['day'] = data.index.day
data = data.reset_index()
del data['Date']
data.set_index('month',append=True,inplace=True)
data.set_index('week',append=True,inplace=True)
data.set_index('day',append=True,inplace=True)
fig, ax = plt.subplots(dpi=300, figsize =(15,4))
plt.plot(data.index.get_level_values(0), data['Close'])
locator = mdates.MonthLocator()
ax.xaxis.set_major_locator(MonthLocator())
formatter = mdates.ConciseDateFormatter(locator)
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(formatter)
ax.xaxis.set_major_formatter(NullFormatter())
ax.xaxis.set_major_formatter(DateFormatter('%b'))
plt.show()
此代碼生成以下圖:

由于某種原因,它的繪圖不正確。由于這里的資料是到 12 月份為止,但出于某種原因,它只是顯示了到 8 月底的圖表。
uj5u.com熱心網友回復:
在 X 軸中輸入日期時間
data = web.DataReader(stock, 'yahoo', start, end)
# first always do sorting
data = data.sort_index()
# then create x and y axis
x = []
y = []
for index, row in data.iterrows():
x.append(index.date())
y.append(row['Close'])
# then create your plot
fig, ax = plt.subplots(dpi=300, figsize =(15,4))
plt.plot(x, y)
locator = mdates.MonthLocator()
ax.xaxis.set_major_locator(MonthLocator())
formatter = mdates.ConciseDateFormatter(locator)
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(formatter)
ax.xaxis.set_major_formatter(NullFormatter())
ax.xaxis.set_major_formatter(DateFormatter('%b'))
plt.show()
我在我的系統上檢查過它的作業方式如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/380496.html
標籤:Python 熊猫 matplotlib
上一篇:計算單獨串列中的結果數
