matplotlib: изменить оси

1

У меня есть массив измерений m, принимаемый каждую минуту. Я рисую эти измерения во времени, просто говоря

import pylab as pl
pl.plot(range(len(m)), m)

это дает мне минуты на оси x (просто потому, что у меня есть измерения в минутах и диапазоне (len (m)) дает мне целые числа). Как быстро изменить маркировку оси х в часах? Мне в основном нужно взять маркировку mod 60, но я хотел бы иметь только целые значения часа.

Короче говоря, я хочу перемаркировать каждое кратное 60 по оси x.

  • 0
    Я не уверен, что понимаю, о чем вы просите. Вы хотите только галочку каждые 60 минут? или вы хотите, чтобы каждый кратный 60 был помечен по-разному?
  • 0
    Я уточню!
Теги:
matplotlib

2 ответа

3
Лучший ответ

Извините, а не 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))])

Любой из этих методов будет работать, первый может быть проще, если вам нужно более сложное форматирование.

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")
  • 0
    Я думаю, что вы хотите range(len(data)/60+1) для второго аргумента xticks. Кроме этого, это очень простое, чистое объяснение.
  • 0
    @eryksun, можешь ли ты объяснить свой комментарий немного подробнее? Если длина данных равна 100, то диапазон (len (data) / 60) равен [0], но для графика он должен быть [0,1].
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню