如何在matplotlib中设置固定位置的刻度?

34

2
那个链接很混乱,缺乏上下文。使用eval生成示例图可能非常聪明,但locator的值非常不清楚。 - tacaswell
2个回答

59

只需使用ax.set_xticks(positions)ax.set_yticks(positions)即可。

例如:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.set_xticks([0.15, 0.68, 0.97])
ax.set_yticks([0.2, 0.55, 0.76])
plt.show()

在这里输入图像描述


3
这种方法会删除我在图表上已有的刻度。如果我想添加这些额外的刻度而不影响现有的呢? - dnth
@dnth:您可以使用twinx()twiny()函数来创建一个新的轴,使刻度位于相反的一侧。 - John Zwinck
@dnth 你可以使用 locs = ax.xaxis.get_ticklocs() 获取位置,修改该列表以添加所需的刻度,然后按照 Joe 的建议执行 ax.set_xticks(locs) - ryanjdillon

15
import numpy as np
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt

name_list = ('Omar', 'Serguey', 'Max', 'Zhou', 'Abidin')
value_list = np.random.randint(0, 99, size = len(name_list))
pos_list = np.arange(len(name_list))

ax = plt.axes()
ax.xaxis.set_major_locator(ticker.FixedLocator((pos_list)))
ax.xaxis.set_major_formatter(ticker.FixedFormatter((name_list)))
plt.bar(pos_list, value_list, color = '.75', align = 'center')

plt.show()

1
详细解释一下吗? - Nissa
那很有帮助。 - ConanG
1
如果可以的话,我会给这个答案五个赞。它真的很有帮助。如果有人需要解释,set_major_locator() 方法根据 pos_list 列表设置图形中刻度的位置,并根据 pos_list 设置刻度标签。现在要恢复旧的刻度标签,就要使用 set_major_formatter() 方法。 - Saswata Mishra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接