matplotlib大写刻度标签

时间:2018-03-21 03:03:18

标签: python matplotlib strftime

我正在尝试将matplotlib(2.1.0)(Python 3.6.3 | Windows 10)中的x轴刻度标签设置为大写,方法是添加带有%^b标志的模式({{ 3}}):

ax.xaxis.set_minor_formatter(mdates.DateFormatter('%^b'))

但是我收到了错误

ValueError: Invalid format string

使用%b我得到的情节没有任何错误:

plot code

此外,我想删除第一个和最后一个刻度标签以避免重复。

我想知道你是否知道我的问题的任何解决方法。

1 个答案:

答案 0 :(得分:2)

在python中,字符串通过str.upper()转换为大写。您可以通过matplotlib.ticker.FuncFormatter将此格式应用于通过DateFormatter

生成的标签
fmt= lambda x,pos: mdates.DateFormatter('%b')(x,pos).upper()
ax.xaxis.set_major_formatter(ticker.FuncFormatter(fmt))

enter image description here

完整示例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as ticker

x = pd.date_range("2001-01-01", "2001-12-31", freq="5D")
y = np.random.rand(len(x))

fig, ax=plt.subplots()
ax.plot(x,y)

ax.xaxis.set_major_locator(mdates.MonthLocator())
fmt= lambda x,pos: mdates.DateFormatter('%b')(x,pos).upper()
ax.xaxis.set_major_formatter(ticker.FuncFormatter(fmt))

plt.show()