У меня есть pyplot диаграмма, которая выглядит немного как это:Конец участка в последней точке данных временных рядов pyplot
Как получить красные и синие линии, чтобы остановить в их последней точке данных (13 мая и 19 мая, соответственно) вместо продолжения горизонтальной линии вправо?
Каждая строка состоит из точек с увеличением значения x
в каждый последующий момент времени t
. Данные берутся из моментальных снимков в прошлом, поэтому они останавливаются в разное время.
Я пробовал свой лучший google-fu, но на самом деле не нашел ничего полезного, если не вручную рисовать все биты строки.
Вот код, который генерирует таблицу, если она помогает:
import sys
import json
from datetime import datetime
import itertools
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
if __name__ == '__main__':
colours = itertools.cycle(['r', 'b', 'g', 'm', 'c', 'y', 'k'])
# A bit of faff for clean printing with globbed arguments:
filenames = [name.split('.')[0] for name in sys.argv[1:]]
fig = plt.figure()
axes = plt.axes()
axes.set_ylabel('Events')
for file in filenames:
data = json.loads(open(file + '.json').read())['results']['data']
# Unzip to a tuple of lists ([x], [y])
x, y = zip(*[(datetime.utcfromtimestamp(int(d['t']/1000)), d['x']) for d in data])
axes.plot(x, y, colours.next(), label=file)
fig.autofmt_xdate()
plt.savefig('plot_{0}.png'.format('_'.join(filenames)))
Привет, большое спасибо за это. Оказывается, я просто массивный идиот, и источником моих данных было добавление дополнительной точки в конец, которая всегда «сейчас», – Jacob