Matplotlib plt.plot_date() 如何根据第三列设置点的颜色

我的数据如下所示:


      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

http://img1.mukewang.com/610bb2a50001e72a21500710.jpg

我想根据列为每个点分配不同的颜色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。


慕慕森
浏览 358回答 1
1回答

繁星淼淼

您可以groupby为每种颜色分别绘制它们:import matplotlib.pyplot as pltfig, 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) ...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python