首页 > 解决方案 > matplotlib 以自定义日期格式和间隔显示 x 轴

问题描述

使用 matplotlib 和 mpl_finance 绘制烛台。数据在 csv AAPL中。

在此处输入图像描述

我只想将 x 轴显示为年和月,即“yyyy-mmm”,所以:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ohlc
import matplotlib.dates as mdates

data = pd.read_csv('C:\\AAPL.csv', delimiter = "\t")

data = data.sort_values(['Date'], ascending=True)
data = data.tail(100)

fig = plt.figure(figsize=(6,4))
plt.ylim(60, 200)
ax1 = fig.add_subplot(111)

cl =candlestick2_ohlc(ax=ax1,opens=data['Open'],highs=data['High'],lows=data['Low'],closes=data['Close'],width=0.6)

ax1.set_xticks(np.arange(len(data)))
ax1.set_xticklabels(data['Date'], fontsize=10, rotation=90)

# every month of the year like 2008-Jan, 2008-Feb...
locator = mdates.MonthLocator()  
fmt = mdates.DateFormatter('%Y-%b')

X = plt.gca().xaxis
X.set_major_locator(locator)
X.set_major_formatter(fmt)

plt.show()

它没有显示任何东西。

也在下面尝试过,但也不起作用:

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())

在此处输入图像描述

如何让 x 轴只显示年份和月份?

谢谢你。

标签: pythonmatplotlibplot

解决方案


尝试以下解决方案,

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick_ohlc
import matplotlib.dates as mdates

data = pd.read_csv('C:\AAPL.csv')

data = data.sort_values(['Date'], ascending=True)
data = data.tail(100)

from matplotlib.dates import date2num, DayLocator, DateFormatter
data['Date'] = date2num(pd.to_datetime(data['Date']).tolist())

fig, ax=plt.subplots(figsize=(10, 10))
candlestick_ohlc(ax, data.as_matrix(),width=0.6)
ax.set(xlabel='AAPL')
ax.xaxis.set_major_locator(DayLocator())
ax.xaxis.set_major_formatter(DateFormatter('%Y-%b'))
ax.xaxis.set_major_locator(mdates.WeekdayLocator(interval=4))
plt.show()

注意:我使用的是烛台_ohlc 而不是烛台2_ohlc。

输出 :

在此处输入图像描述


推荐阅读