rcParams['date.autoformatter.month'] = "%b\n%Y"
Run Code Online (Sandbox Code Playgroud)
我正在使用 matpltolib 绘制时间序列,如果我按照上面的方式设置 rcParams,则生成的图会在每个刻度处标记月份名称和年份。我如何设置它以便仅在每年的 1 月绘制该年份。我尝试这样做,但它不起作用:
rcParams['date.autoformatter.month'] = "%b"
rcParams['date.autoformatter.year'] = "%Y"
Run Code Online (Sandbox Code Playgroud)
格式化程序不允许对它们指定条件。根据系列的跨度,AutoDateFormatter 将落入date.autoformatter.month范围或date.autoformatter.year范围内。
此外,AutoDateLocator可能不一定决定实际勾选 1 月 1 日。
因此,我建议将代码直接指定为所需的格式和位置。您可以使用大刻度来显示年份,使用小刻度来显示月份。主要刻度的格式然后可以换行,以免与次要刻度标签重叠。
import matplotlib.pyplot as plt
import matplotlib.dates
from datetime import datetime
t = [datetime(2016,1,1), datetime(2017,12,31)]
x = [0,1]
fig, ax = plt.subplots()
ax.plot(t,x)
ax.xaxis.set_major_locator(matplotlib.dates.YearLocator())
ax.xaxis.set_minor_locator(matplotlib.dates.MonthLocator((1,4,7,10)))
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter("\n%Y"))
ax.xaxis.set_minor_formatter(matplotlib.dates.DateFormatter("%b"))
plt.setp(ax.get_xticklabels(), rotation=0, ha="center")
plt.show()
Run Code Online (Sandbox Code Playgroud)
然后,如果需要,您还可以调整次要刻度的长度以匹配主要刻度的长度,
ax.tick_params(axis="x", which="both", length=4)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6663 次 |
| 最近记录: |