Matplotlib plt.plot_date () как установить цвет для точек на основе третьего столбца - PullRequest
0 голосов
/ 02 ноября 2018

Мои данные выглядят так:

      time             distance color
1   2017-10-10 14:04:14 0.006   yellow
2   2017-10-10 14:04:15 0.011   green
3   2017-10-10 14:04:46 0.051   green
4   2017-10-10 14:04:56 0.063   red
5   2017-10-10 14:05:06 0.073   red
6   2017-10-10 14:05:16 0.081   green
7   2017-10-10 14:05:26 0.095   green
8   2017-10-10 14:05:36 0.103   green
9   2017-10-10 14:05:46 0.113   green
10  2017-10-10 14:05:56 0.124   green
11  2017-10-10 14:06:06 0.134   green
12  2017-10-10 14:06:16 0.149   yellow
13  2017-10-10 14:06:26 0.158   yellow

Мой код такой:

fig, ax1 = plt.subplots(figsize=(30,10))
color = 'tab:red'
ax1.plot_date(df['time'], df['distance'], marker='o',color='red')    
ax1.set_xlabel('Time', fontsize=20)
ax1.set_ylabel('distance', color=color, fontsize=20)   
ax1.set_ylim(bottom=0,top=80)
ax1.set_xlim(left=xmin, right=xmax) # I set the boundary for x-axis

enter image description here

Я хотел бы назначить разные цвета для каждой точки на основе столбца df['color']. Если я изменю код на, это выдаст ошибку.

ax1.plot_date(df['time'], df['distance'], marker='o',color=df['color'])  

ошибка:

ValueError: Invalid RGBA argument: 0      yellow
1       yellow
2       green
3       green
4       red
5       red
6       green

Я был бы очень признателен, если бы кто-нибудь, кто знает, как установить цвет для ярлыков различных категорий, используя третий столбец для plt.plot_date().

Примечание: Я использую plt.plot_date() вместо plt.scatter(), потому что это позволяет мне выбирать таймфрейм для отображения на определенной фигуре и более легко устанавливать timeTickers.

1 Ответ

0 голосов
/ 02 ноября 2018

Вы можете groupby и построить их отдельно для каждого цвета:

import matplotlib.pyplot as plt

fig, ax1 = plt.subplots(figsize=(30,10))
color = 'tab:red'
for pcolor, gp in df.groupby('color'):
    ax1.plot_date(gp['time'], gp['distance'], marker='o', color=pcolor) 
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...