以下最小示例显示的并非所有次要标签。显示哪些次要标签似乎取决于主要标签。
import numpy as np
import pandas as pd
import matplotlib.dates as mdates
dates = pd.date_range(start="2020-01-01", end="2023-01-01", freq="MS")
data = pd.Series(np.random.randint(5, 30, size=len(dates)), index=dates)
plt.plot(data.index, data.values)
ax = plt.gca()
ax.xaxis.set_minor_locator(mdates.MonthLocator())
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%b"))
ax.set_xticks(
ax.get_xticks(minor=True),
ax.get_xticklabels(minor=True),
rotation=90,
fontsize=8,
minor=True,
)
ax.xaxis.set_major_locator(mdates.YearLocator(month=6))
ax.xaxis.set_major_formatter(mdates.DateFormatter("\n%Y"))
plt.show()
下面是图:
如何显示所有次要标签(月)?
2条答案
按热度按时间vsaztqbk1#
要做你正在寻找的,有几件事你需要做。
1.将
ax.remove_overlapping_locs
设置为false。这是关键,因为它不会删除存在主要刻度的次要刻度。更多信息here1.将大刻度线和小刻度线的刻度线设置为相同的大小,以便月份整齐地显示在同一行中。
1.旋转次要刻度。更新了下面的代码。
请注意,我使用了figsize,这样图形就更长了,尽管这不是必要的。你可以把它拿走。
wpx232ag2#
月份不一定是小刻度,它们也可以是大刻度。等你找到了
您正在将所有刻度替换为次要刻度。如果您只想对月份应用转换,我建议将上面的代码块替换为一个简单的
如果您想保留您的方法,只需按如下方式更改代码的顺序。