Цветная штамповка дат на нескольких точечных графиках в Matplotlib - PullRequest
0 голосов
/ 27 октября 2018

У меня есть 3 кадра данных, которые имеют 3 функции, которые я хотел бы отобразить на точечные диаграммы:

Date  Energy  Cost

Мне нужно создать серию точечных диаграмм, которые отображают энергию и стоимость, но с цветовым кодированием по годув столбце даты.

Даты имеют формат даты и времени и идут в течение 4 лет и выглядят следующим образом:

2015-12-30 00:00:00
2016-20-12 00:00:00
etc...

Я знаю, что могу построить plt.scatter(data[:], data[:].... c=data[:])

Ноне могу понять, как правильно отформатировать его специально для интервалов времени, чтобы каждый цвет отличался для каждого из 4 лет.

1 Ответ

0 голосов
/ 27 октября 2018

Используйте map, чтобы создать серию, которую вы можете передать как цвета.

MCVE

import pandas as pd
import numpy as np

np.random.seed(123)
dates = pd.date_range('2014-01-01', '2017-12-31', freq='12D')
df = pd.DataFrame({'Date': dates,
                   'Energy': np.random.randint(1, 1000, len(dates)),
                   'Cost': np.random.randint(10000, 15000, len(dates))})

Код

color_d = {2014: 'red', 2015: 'blue', 2016: 'orange', 2017: 'black'}
df.plot.scatter(x='Energy', y='Cost', c=df.Date.dt.year.map(color_d))

enter image description here


Или с матплотлибом

import matplotlib.pyplot as plt

plt.scatter(df.Energy.values, df.Cost.values, c=df.Date.dt.year.map(color_d))
_ = plt.xlabel('Energy')
_ = plt.ylabel('Cost')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...