在matplotlib中交替刻度标签

4 投票
1 回答
2916 浏览
提问于 2025-04-18 17:58

我想找到一种方法,让我的x轴刻度标签在两个层次之间交替显示。现在我的标签是:

A B C D

我想要的效果是:

A   C
  B   D

但是我在谷歌、文档和StackOverflow上找不到相关的信息。

非常感谢!

1 个回答

3

你可以使用小刻度(通过 set_minor_locatorset_minor_formatter 来定义)。然后你可以通过 tick_params 来移动所有的大刻度,比如说:

import pylab as pl
from matplotlib.ticker import FixedLocator, FormatStrFormatter

pl.plot(range(100))

pl.axes().xaxis.set_major_locator(FixedLocator(range(0, 100, 10)))
pl.axes().xaxis.set_minor_locator(FixedLocator(range(5, 100, 10)))
pl.axes().xaxis.set_minor_formatter(FormatStrFormatter("%d"))
pl.axes().tick_params(which='major', pad=20, axis='x')

在这里输入图片描述

不过要小心 FixedLocator:为了避免大刻度被生成两次(一次作为大刻度,一次作为小刻度),我选择了固定的刻度位置,而不是使用 MultipleLocator。你需要根据你的数据和窗口大小来调整这些刻度位置。

(这个想法是借鉴自 这里。)

撰写回答