python - 仅显示主要刻度标签的次要刻度

标签 python matplotlib label

我想在轴上有小刻度但只显示主要刻度标签。例如,次要刻度是 [19, 20, 21, ... 40, 41],主要刻度标签是 [20, 25, 30, 35, 40]。我该怎么做?下面的代码没有完成这项工作。我知道可以使用 MultipleLocator、FormatStrFormatter,如 this example .但是,我在轴上的值有点“奇怪”,起始值为 19(不是 20),结束值为 41,这在使用 MultipleLocator 时造成困难。

import numpy as np
from matplotlib import pylab as plt

fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(19.,41,23)
y = x**2
ax.plot(x,y)
ax.set_xticks(x)
ax.set_xticklabels(x, minor=False)
plt.show()

它给了我下面的情节: enter image description here

ax.set_xticklabels([20, 25, 30, 35, 40], minor=False) 给我另一个情节: enter image description here 我怎样才能更改我的代码以获得我需要的东西。非常感谢您的帮助!

最佳答案

我真的不明白为什么在你的例子中很难使用 MultipleLocator

通过在您的代码中添加这些行

from matplotlib.ticker import MultipleLocator, FormatStrFormatter

majorLocator   = MultipleLocator(5)
majorFormatter = FormatStrFormatter('%d')
minorLocator   = MultipleLocator(1)

ax.xaxis.set_major_locator(majorLocator)
ax.xaxis.set_major_formatter(majorFormatter)
ax.xaxis.set_minor_locator(minorLocator)

你会得到这张图片,我知道这是你想要的(不是吗?): enter image description here


如果您不希望刻度显示在您的数据范围下方,请使用 FixedLocator 手动定义您的刻度:

from matplotlib.ticker import FixedLocator

majorLocator   = FixedLocator(np.linspace(20,40,5))
minorLocator   = FixedLocator(np.linspace(19,41,23))

你会得到这张图片: enter image description here

关于python - 仅显示主要刻度标签的次要刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18467864/

相关文章:

html - 在触摸移动设备上激活单选标签

python - 抓取网页时调用javascript函数

.net - 有没有关于如何命名变量的教程?

python - 如何在同一张图中绘制两个列表,但颜色不同?

python - matplotlib 在绘制记录的数据和设置其 x/y 边界时出现问题

python - Matplotlib 的 get_ticklabels 不适用于自定义字符串标签

python - Altair 图表轴对于像 matplotlib 这样的小 float 字不能很好地缩放

python - 使用 IFTTT 检查 JSON 内容并发送电子邮件或文本消息

arrays - 如何将列添加到预先存在的 uipickerview

java - 扩展 GWT 的小部件类