matplotlib刻度标签不起作用

时间:2014-11-04 19:16:19

标签: python matplotlib plot

我有两组数据:

Y = [0.8, 0.9, 0.5, 0.4…0.6]
X = [16,17,18,19…..216]
plt.plot(Y)
plt.xticks(np.arange(min(X), max(X)+1, 10))

给出了:

enter image description here

我试图绘制这个,但由于X轴上有> 200个点,我想每隔10个显示X刻度。

但现在不是X轴从16开始,它从0开始,第一个标签出现在16,虽然它不是正确的相应Y值。

如何绘制X,从16开始,从16开始每10个步进一次,每10个进入216个,如16/26/36/46 ......

谢谢

2 个答案:

答案 0 :(得分:2)

使用pyplot界面来解决这个问题非常麻烦/困惑。我会直接与Axes对象进行交互:

import numpy as np
import matplotlib.ticker as mticker
import matplotlib.pyplot as plt
%matplotlib inline

fig, ax = plt.subplots(figsize=(8, 3))
xtickslocs = np.arange(16, 217, step=10)
#ax.plot(x_data, y_data, ...)
ax.xaxis.set_major_locator(mticker.FixedLocator(xtickslocs))
ax.set_xlim(left=-5, right=225) # change this to suite your needs

这给了我:

enter image description here

答案 1 :(得分:0)

问题是,您应该对xticks使用2个数组,第一个是要放置标签的位置,第二个是标签本身。

plt.xticks(np.arange(16, 216, step=10), np.arange(16, 216, step=10))