如何在matplotlib中设置图形的x轴“步长”

30

我有一些代码:

#!/usr/bin/env python

import matplotlib
matplotlib.use("Agg")       
import matplotlib.pyplot as plt

x = [1,2,3,4,5]
y = [1.2,1.9,3.1,4.2,4.8]

plt.plot(x,y)
plt.xlabel('OX')
plt.ylabel('OY')
plt.savefig('figure1.png')
plt.close()

它给了我那个数字:

my figure

正如您所看到的,X轴上的“步长”为0.5,但我想将其设置为1。该怎么做?

当我使用plt.xticks(1)时,它会给我报错:

Traceback (most recent call last):   File "overflow.py", line 13, in <module>
    plt.xticks(1)   File "/usr/lib/pymodules/python2.6/matplotlib/pyplot.py", line 998, in xticks
    locs = ax.set_xticks(args[0])   File "/usr/lib/pymodules/python2.6/matplotlib/axes.py", line 2064, in set_xticks
    return self.xaxis.set_ticks(ticks, minor=minor)   File "/usr/lib/pymodules/python2.6/matplotlib/axis.py", line 1150, in set_ticks
    if len(ticks) > 1: TypeError: object of type 'int' has no len()

我在Ubuntu 10.10上使用Python 2.6.6。

2个回答

48

1
哇,谢谢,它完美地工作了:) 我不知道我怎么会错过这个;) 再次感谢! - mazix
@mgilson:非常感谢您,我刚刚接受了Steve的答案 :) - mazix

0

您可以将每个其他 x-tick 设置为 x-ticks。

import matplotlib.pyplot as plt

x = [1,2,3,4,5]
y = [1.2,1.9,3.1,4.2,4.8]

plt.plot(x, y)
plt.xticks(plt.xticks()[0][1::2]);

另一种方法是使用MultipleLocator(1)在每个整数位置上设置一个刻度。
ax = plt.subplot()
ax.plot(x, y)
ax.xaxis.set_major_locator(plt.MultipleLocator(1))

img


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