我找不到将熊猫时间戳转换为 matplotlib 图的日期的方法
Posted
技术标签:
【中文标题】我找不到将熊猫时间戳转换为 matplotlib 图的日期的方法【英文标题】:I can't find a way to convert a pandas timestamp into a date for a matplotlib graph 【发布时间】:2020-03-12 10:29:27 【问题描述】:过去几天我尝试了无数次,但似乎找不到解决方案。
这是我的当前代码和一些 cmets:
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.dates as mdates
import datetime
import pandas_datareader.data as web
import matplotlib.ticker as ticker
from mpl_finance import candlestick2_ohlc
from matplotlib.dates import (MONDAY, DateFormatter, MonthLocator,
WeekdayLocator, date2num)
# Define start and end date
end = datetime.datetime.now()
start = end - datetime.timedelta(days=63)
# Load data for the specific stock
quotes = web.DataReader('AAPL', 'yahoo', start, end)
quotes['Date'] = quotes.index
# Order the dataframe
quotes = quotes[['Date','Open', 'High', 'Low', 'Close']]
# 2019-09-16 217.729996 220.130005 217.559998 219.899994
fig, ax = plt.subplots()
candlestick2_ohlc( ax,
quotes['Open'],
quotes['High'],
quotes['Low'],
quotes['Close'],
width=0.5,
colorup='g',
colordown='r')
#ax.xaxis.set_major_locator(ticker.MaxNLocator(8))#I was just testing with this
def mydate(x,pos):
try:
a = quotes['Date'][int(x)]
# print(a) --> 2019-11-04 00:00:00
# type(a) --> <class 'pandas._libs.tslibs.timestamps.Timestamp'>
a = pd.to_datetime(a) # doesn't work
return a
except IndexError:
return ''
ax.xaxis.set_major_formatter(ticker.FuncFormatter(mydate))
fig.autofmt_xdate()
fig.tight_layout()
plt.show()
这是输出:
如您所见,它显示的日期如下:2019-11-04 00:00:00
我的目标是这样显示日期:
我已经尽可能地清理了代码,使其更易于阅读和理解。
【问题讨论】:
【参考方案1】:查看 Python 文档的日期:
https://docs.python.org/3.8/library/datetime.html
你正在寻找
return ':%b'.format(a)
【讨论】:
【参考方案2】:to_datetime 已被弃用...
尝试使用:
a = a.date()
或者
to_pydatetime()
【讨论】:
以上是关于我找不到将熊猫时间戳转换为 matplotlib 图的日期的方法的主要内容,如果未能解决你的问题,请参考以下文章