如何在matplotlib中的刻度位置设置标记?

时间:2016-08-06 20:44:16

标签: matplotlib

我知道markevery选项只允许在每个第n个点放置一个标记。但是,我使用MaxNLocator来定义刻度位置,并且只想在这些刻度位置显示标记。如何仅在刻度位置显示标记,使用选项还是手动放置?

1 个答案:

答案 0 :(得分:2)

您可以使用ax.get_xticks()获取标记,找到与每个xtick对应的closest point,然后获取x值的索引。使用索引可以很容易地绘制xtick值。

#!/usr/bin/env python
# a bar plot with errorbars
import numpy as np
import matplotlib.pyplot as plt
plt.close('all')

def find_nearest(array,value):
    idx = (np.abs(array-value)).argmin()
    return idx

x = np.linspace(-1, 1, 100)
y = x**2

fig, ax = plt.subplots(1, 1)

ax.plot(x, y, '--')

xtick = ax.get_xticks()

idx = [find_nearest(x, tick) for tick in xtick]

ax.plot(x[idx], y[idx], 'ro')

plt.show()