当数据为 None 时,x 轴刻度会改变位置 - matplotlib

x-axis ticks change location when data is None - matplotlib

我使用以下方法绘制了一个列表:

fig = plt.figure(1)
ax1 = fig.add_subplot(111)
ax1.plot(range(samples_per_ant[0]), new_y[:samples_per_ant[0]], '-o', linewidth=3)

结果是刻度线在正确的位置,同样 spaced 在图的框架之间和距离图的框架(我无法添加图片来分享)。

但是当我想改变我使用的刻度时:

ax1.set_xticks(range(samples_per_ant[0]), case[:samples_per_ant[0]])

因为列表“new_y”的最后几个元素是“None”,例如

new_y = [1, 2, 3, ... , None, None, None]

看起来它稍微“拉伸”了 x 轴并且刻度线到达了框架的右边缘(边缘没有 space,正如预期的那样)。

我如何绘制它并将刻度保持在适当的位置?

当您手动设置 x-tick 标签时,您还应该手动注意 x-axis 限制:

from matplotlib import pyplot as plt

new_y = [1, 5, 3, 7 , None, 8, None, -1]
case = list("ABCDEFGHIJKL")
n = 7

fig = plt.figure(1)
ax1 = fig.add_subplot(111)
ax1.plot(range(n), new_y[:n], '-o', linewidth=3)
ax1.set_xticks(range(n), case[:n])
ax1.set_xlim(-0.3, n-0.7)

plt.show()

示例输出: