Python matplotlib:更改轴

Python matplotlib:更改轴,python,matplotlib,Python,Matplotlib,我有一系列的测量,每分钟测量一次。我简单地说 import pylab as pl pl.plot(range(len(m)), m) 这给了我x轴上的分钟数(因为我有以分钟为单位的测量值,而范围(len(m))给了我整数)。如何将x轴的标签快速更改为小时?我基本上需要使用标签mod 60,但我希望只有整小时值 因此,简而言之,我想在x轴上重新标记60的每一个倍数。对不起,您需要创建轴和us ax。Setxticklables: from matplotlib.pyplot import fi

我有一系列的测量,每分钟测量一次。我简单地说

import pylab as pl
pl.plot(range(len(m)), m)
这给了我x轴上的分钟数(因为我有以分钟为单位的测量值,而范围(len(m))给了我整数)。如何将x轴的标签快速更改为小时?我基本上需要使用标签mod 60,但我希望只有整小时值


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

对不起,您需要创建轴和us ax。Setxticklables:

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))])

这两种方法都可以。如果您需要更复杂的格式,第一种可能更容易。

我不确定我是否理解您的要求。你只想每60分钟打一个勾吗?或者您希望60的每一个倍数都有不同的标签吗?我想您希望xticks的第二个参数
range(len(data)/60+1)
。除此之外,这是一个非常简单、清晰的解释。@eryksun您能再解释一下您的评论吗?如果数据长度为100,则范围(len(data)/60)为[0],但对于绘图,它应为[0,1]。@eryskun我现在知道了。我还认为
范围((len(data)+59)/60)
产生了正确的标签。
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")