Окрашивание части сюжета временного ряда в морском заливе - PullRequest
0 голосов
/ 22 октября 2019

На основе кадра данных, содержащего два столбца, один с датой и временем и один со значением цены, я получил следующие графики:

import seaborn as sns
# Use seaborn style defaults and set the default figure size
sns.set(rc={'figure.figsize':(20, 7)})
df['value'].plot(linewidth=0.5);

cols_plot = ['value']
axes = df[cols_plot].plot(marker='.', alpha=0.5, linestyle='None', figsize=(20, 7), subplots=True)
for ax in axes:
      ax.set_ylabel('Price')

Я хочу использовать другой цвет для частиграфик (а именно период 7 дней). Сначала я попытался использовать маркер, но атрибут .axvline не работает. Я знаю, что обычно используется что-то вроде plt.plot и внутри него есть параметры, указывающие интервал и цвет, но в моем случае у меня есть массив. не сюжет.

РЕДАКТИРОВАТЬ: Это образец массива данных:

+-----------------------------------+------------+
|               Start                   Value    |
+-----------------------------------+------------+
  08.06.2019 08:00                         33
  08.06.2019 09:00                         65      
  08.07.2019 08:00                         45 
  08.07.2019 09:00                         57 
  08.08.2019 08:00                         52 
+-----------------------------------+------------+

Я хочу только раскрасить график, охватывающий месяц июль.

1 Ответ

1 голос
/ 22 октября 2019

Я не уверен, что понял ваш вопрос, поэтому я приведу пример:

import matplotlib.pyplot as plt

t=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a=[10, 50, 100, 40, 20, 10, 80, 50, 78, 41]

plt.plot(t[0:5], a[0:5], color='red')
plt.plot(t[6:10], a[6:10], color='blue')

Вы хотите сделать что-то подобное?

РЕДАКТИРОВАТЬ:

Привет, извините за ожидание,

Итак, я предполагаю, что у вас есть две переменные, одна из которых содержит valeus, а другая - даты. Персонально, я пошел на что-то вроде этого:

date = ['08.06.2019', '08.06.2019', '08.07.2019', '08.07.2019', '08.08.2019']
value = [33, 65, 45, 57, 52]


t =[]
a=[]

for i in range(len(date)):
    t.append(date[i].split("."))


for i in range(len(t)):
    a.append(int(t[i][1]))


plt.xticks((6, 7, 8), ('08.06.2019', '08.07.2019', '08.08.2019'))
for i in range(len(a)):
    if a[i] == 7 :
        plt.scatter(a[i], value[i], color = "red")
    else : 
        plt.scatter(a[i], value[i], color ="blue")

Это позволяет вам отображать точечный график, если вы хотите график с линиями, вы можете черпать вдохновение из этого! Надеюсь, это поможет!

...