Нужно предложение по улучшению производительности сюжета - PullRequest
2 голосов
/ 27 апреля 2020

Я хочу построить золотую кривую с 1980 по сегодняшний день, дневная цена:

gg_gp = getgoldprice()

gold_dates = gg_gp.keys()
gold_values = gg_gp.values()

plt.plot_date(list(gold_dates),list(gold_values),linewidth=1)

gold_dates содержит datetime значений около 11000 чисел.

У меня проблема. Так как gold_dates не содержит сб и вс и дней, когда фондовый рынок закрыт, и мне нужна непрерывная кривая.

Чтобы сделать это непрерывным, я преобразовал список gold_dates в список, содержащий строку даты в формате «гггг-мм-дд». Так что теперь list(gold_dates) будет содержать строки даты, и я буду использовать plt.plot.

Но теперь он сильно замедлен. Так что plt.plot(list(gold_dates),list(gold_values),linewidth=1) теперь просто зависает.

Есть предложения по улучшению? Я новичок в Python так медленно я буду учиться NumPy.

1 Ответ

2 голосов
/ 27 апреля 2020

Самым простым решением может быть использование целочисленной последовательности в качестве переменной x, а затем установка галочек и меток вручную. Вот упрощенный пример:

import matplotlib.pyplot as plt

gold_dates = ['1980-01-01', '1980-01-02', '1980-01-05']
gold_values = [123, 130, 120]

plt.plot(range(len(gold_dates)), gold_values, linewidth=1)
plt.xticks([0, 1, 2], labels=gold_dates)

example plot

Более мощное решение заключается в использовании pandas, что прекрасно обрабатывает временные ряды и имеет собственные функции построения графиков, основанные на matplotlib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...