我试图找到一种方法来格式化日期时间轴,以将年份显示为数字,将月份显示为小写字母。(例如APR)。我需要自己格式化它,但我还没有能够弄清楚如何。因为我只想显示Apr,Jul,Oct.我在ConciseDateFormatter
中使用了MonthLocator
。我尝试了以下方法:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.dates import MonthLocator
from matplotlib.dates import ConciseDateFormatter
from matplotlib.ticker import FuncFormatter
x = pd.date_range('2016-01-01', '2021-12-31', freq='M')
y = np.random.rand(len(x))
fig, ax = plt.subplots(figsize=(10, 8))
locator = MonthLocator((1, 4, 7, 10))
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(
ConciseDateFormatter(
locator, formats=['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f']
)
)
ax.tick_params(axis='x', labelsize=8)
ax.plot(x, y)
但我希望轴是
2016 - APR - JUL - OCT - 2017 - APR - JUL -OCT - 2018 -
我试过a few ways,但都不管用。一旦我使用了用户定义的FuncFormatter
,它就不再尊重我的ConciseDateFormatter
。我想知道什么是最简单的方法来实现我想要的结果。我应该简单地写一个格式化程序函数,包括一个if语句吗?如果年和月都等于1,它应该显示年份数字;否则,它应该显示月份名称。如果是这样的话,我如何才能完成它?
1条答案
按热度按时间nnsrf1az1#
预期结果: