【发布时间】:2013-02-05 20:51:29
【问题描述】:
我有一个简单的绘图代码
plt.plot(x,y)
plt.show()
我想在 x 轴上添加一些额外的刻度,而不是当前刻度,比如说在
extraticks=[2.1, 3, 7.6]
如您所见,我没有刻度模式,因此我不想增加整个轴的刻度频率;只保留原来的并添加那些额外的......
有可能吗?
问候
【问题讨论】:
标签: python matplotlib plot
我有一个简单的绘图代码
plt.plot(x,y)
plt.show()
我想在 x 轴上添加一些额外的刻度,而不是当前刻度,比如说在
extraticks=[2.1, 3, 7.6]
如您所见,我没有刻度模式,因此我不想增加整个轴的刻度频率;只保留原来的并添加那些额外的......
有可能吗?
问候
【问题讨论】:
标签: python matplotlib plot
是的,您可以尝试以下方法:
plt.xticks(list(plt.xticks()[0]) + extraticks)
要使用的函数是xticks()。当不带参数调用时,它返回当前刻度。使用参数调用它,您可以设置刻度位置以及可选的标签。
【讨论】:
sorted()。不过显然没什么大不了的。
为了完整起见,我想给出@Lev-Levitsky 的优秀答案的OO 版本:
lines = plt.plot(x,y)
ax = lines[0].axes
ax.set_xticks(list(ax.get_xticks()) + extraticks)
这里我们使用从plot返回的Lines2D序列中提取的Axes对象。通常,如果您使用的是 OO 接口,则您已经在前面引用了 Axes,并且您将调用 plot 而不是 pyplot。
角落警告
如果由于某种原因您修改了轴限制(例如,通过编程方式放大数据的一部分),则需要在此操作后恢复它们:
lim = ax.get_xlim()
ax.set_xticks(list(ax.get_xticks()) + extraticks)
ax.set_xlim(lim)
否则,绘图将使 x 轴显示轴上所有可用的刻度。
【讨论】: