我正在尝试将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
我得到的情节没有任何错误:
此外,我想删除第一个和最后一个刻度标签以避免重复。
我想知道你是否知道我的问题的任何解决方法。
答案 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))
完整示例:
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()