У меня есть массив измерений m, принимаемый каждую минуту. Я рисую эти измерения во времени, просто говоря
import pylab as pl
pl.plot(range(len(m)), m)
это дает мне минуты на оси x (просто потому, что у меня есть измерения в минутах и диапазоне (len (m)) дает мне целые числа). Как быстро изменить маркировку оси х в часах? Мне в основном нужно взять маркировку mod 60, но я хотел бы иметь только целые значения часа.
Короче говоря, я хочу перемаркировать каждое кратное 60 по оси x.
Извините, а не xlabels вам нужно создать ось и us 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))])
Любой из этих методов будет работать, первый может быть проще, если вам нужно более сложное форматирование.
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")
range(len(data)/60+1)
для второго аргумента xticks. Кроме этого, это очень простое, чистое объяснение.