Цветовые маркеры на точечной диаграмме при использовании DataFrame Pandas с сериями времени - PullRequest
0 голосов
/ 11 мая 2018

Я изо всех сил пытаюсь понять, как сделать точечный график, используя Matplotlib, при использовании Pandas DataFrame, который содержит временные ряды.Я хочу использовать дату / время на оси x и построить соответствующие значения другого столбца на оси y.Я могу заставить это работать, но я также хочу раскрасить точки данных в соответствии со значениями третьего столбца.Кажется, все примеры, которые я нашел в Интернете, приводят к одной или другой ошибке.

Воспроизводимый пример выглядит следующим образом:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

mydatetimes=pd.to_datetime(['2015-05-01 18:00:12', '2015-05-01 18:01:12', 
                            '2015-05-01 18:02:12', '2015-05-01 18:03:12',
                            '2015-05-01 18:04:12', '2015-05-01 18:05:11',
                            '2015-05-01 18:06:11', '2015-05-01 18:07:11',
                            '2015-05-01 18:08:12', '2015-05-01 18:09:12',
                            '2015-05-01 18:10:12', '2015-05-01 18:11:12'])

myvalues = np.array([45.0, 34.0, 35.0, 45.0, 23.0, 67.0, 
                    78.0, 23.0, 87.0, 32.0, 58.0, 71.0])

myothervalues = np.array([803, 743, 682, 622, 562, 502, 
                          383, 323, 263, 202, 142, 82])

mydatadf = pd.DataFrame({'mydates': mydatetimes, 'data1': myvalues, 'data2': myothervalues})

plt.plot(mydatadf.mydates, mydatadf.data1, '.', c=cm.viridis(mydatadf.data2))
plt.show()

Кто-нибудь знает простой способ сделать это?это?

1 Ответ

0 голосов
/ 11 мая 2018

Вы должны использовать plt.scatter вместо plt.plot, если хотите, чтобы у каждой точки был свой цвет. Также нанесите значения. Вам нужно всего лишь изменить линию сюжета на:

# Set the plot limit
marg = pd.Timedelta(1, 'm')
_ = plt.xlim(mydatadf.mydates.min()-marg, mydatadf.mydates.max()+marg)

plt.scatter(mydatadf.mydates.values, mydatadf.data1.values,
            c=mydatadf.data2.values)
plt.show()

enter image description here

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