【发布时间】:2018-11-07 23:16:16
【问题描述】:
我正在尝试制作一个图形,我希望在其中有标签,并且在 x 轴上也有刻度,但在不同的位置。但是,似乎在设置第一个刻度后,在尝试定义新的刻度时,以前的刻度被“遗忘”了。例如:
import matplotlib.pyplot as plt
xs = [1, 4, 7, 11, 14, 17, 20, 23, 26, 29]
ys = [2.0, 1.667, 2.0, 0.333, 1.0, 0.667, 1.667, 1.0, 1.0, 1.0]
# where we want our labels
ticks1 = [5.0, 15.0, 25.0]
labs = ['A', 'B', 'C']
fig, ax = plt.subplots()
ax.plot(xs, ys)
# I think I have to define ticks here to position the labels...
ax.set_xticks(ticks1)
ax.set_xticklabels(labs)
ax.tick_params(axis='x', length=0)
plt.show()
到目前为止还不错,有想要的安排。 ABC 用于标记不同组的数据点,它们或多或少位于每个组的中间(我会在后面添加垂直线以使这种分离更加明显),但刻度应该反映数据,而不是这些人造标签。
但是,如果我现在尝试在同一轴上添加一组不同的刻度,上面绘制的标签会迁移到新的刻度并且不会保留它们的旧位置:
# ...but want to have ticks for this range
ticks2 = [x for x in range(0, 33, 3)]
ax.set_xticks(ticks2)
ax.tick_params(axis='x', length=5)
plt.show()
在matplotlib 中实现所需输出的正确方法是什么?
【问题讨论】:
标签: python-3.x matplotlib