我找不到将熊猫时间戳转换为 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 图的日期的方法的主要内容,如果未能解决你的问题,请参考以下文章

将UTC时间戳转换为熊猫中的本地时区问题

将熊猫系列时间戳转换为唯一日期列表

熊猫:将时间戳转换为 datetime.date

在熊猫中将时间戳转换为to_date

将matplotlib的时间戳转换为数据可视化

如何将 NumPy 数组转换为应用 matplotlib 颜色图的 PIL 图像