matplotlib:改变轴

时间:2011-08-26 14:02:20

标签: python matplotlib

我有一系列测量m,每分钟拍摄一次。我通过简单地说

来绘制这些测量值
import pylab as pl
pl.plot(range(len(m)), m)

这给了我x轴上的分钟(因为我有分钟和范围(len(m))的测量值给出了整数)。如何快速将x轴的标签更改为小时?我基本上需要采用标签mod 60,但我想只有整数小时值。

所以简而言之,我想在x轴上重新标记60的每个倍数。

2 个答案:

答案 0 :(得分:3)

不好意思而不是xlabels你需要创建一个轴和我们ax.set_xticklabels:

from matplotlib.pyplot import figure
fig = figure()
ax = fig.add_subplot(111)


def mk_labels(vals):
    labels = []
    for i in vals:
        if i % 60 == 0:
            labels.append("Some new special label")
        else:
            labels.append(i)


 ax.set_xticklabels(mk_labels(range(len(m))))
 ax.plot(range(len(m)), m)

或简单地说:

 ax.set_xticklabels(["{0}h".format(i) if i % 60 == 0 else i for i in range(len(m))])

如果您需要更复杂的格式化,这些方法中的任何一种都可以工作,第一种方法可能会更容易。

答案 1 :(得分:2)

pylab.plot(data) # pylab will automatically add an x-axis from 0 to len(data) - 1

# first argument is when ticks should appear on the x-axis
# the second argument is what the label for each tick should be
# same as -> pylab.xticks([0, 60, 120...], [0, 1, 2...])
pylab.xticks(range(0, len(data), 60), range(len(data)/60))

# let the reader know the units
pylab.xlabel("hours")