56

我有一个简单的情节代码

plt.plot(x,y)
plt.show()

除了当前的刻度外,我还想在 x 轴上添加一些额外的刻度,比如说

extraticks=[2.1, 3, 7.6]

如您所见,我没有刻度模式,因此我不想增加整个轴的刻度频率;只保留原来的并添加那些额外的......

有可能吗?

问候

4

2 回答 2

87

是的,您可以尝试以下方法:

plt.xticks(list(plt.xticks()[0]) + extraticks)

要使用的功能是xticks(). 当不带参数调用时,它返回当前刻度。使用参数调用它,您可以设置刻度位置以及可选的标签。

于 2013-02-05T20:56:42.773 回答
39

为了完整起见,我想给出@Lev-Levitsky 的优秀答案的OO 版本:

lines = plt.plot(x,y)
ax = lines[0].axes
ax.set_xticks(list(ax.get_xticks()) + extraticks)

这里我们使用从返回的序列Axes中提取的对象。通常,如果您使用的是 OO 接口,那么您已经有了对前面的引用,并且您会调用它而不是 on 。Lines2DplotAxesplotpyplot

角落警告

如果由于某种原因您修改了轴限制(例如,通过编程放大数据的一部分),则需要在此操作后恢复它们:

lim = ax.get_xlim()
ax.set_xticks(list(ax.get_xticks()) + extraticks)
ax.set_xlim(lim)

否则,绘图将使 x 轴显示轴上所有可用的刻度。

于 2016-12-07T21:50:17.020 回答