我有一系列测量m,每分钟拍摄一次。我通过简单地说
来绘制这些测量值import pylab as pl
pl.plot(range(len(m)), m)
这给了我x轴上的分钟(因为我有分钟和范围(len(m))的测量值给出了整数)。如何快速将x轴的标签更改为小时?我基本上需要采用标签mod 60,但我想只有整数小时值。
所以简而言之,我想在x轴上重新标记60的每个倍数。
答案 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")