为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕慕森 2021-08-05 17:41:45
我的数据如下所示:      time             distance color1   2017-10-10 14:04:14 0.006   yellow2   2017-10-10 14:04:15 0.011   green3   2017-10-10 14:04:46 0.051   green4   2017-10-10 14:04:56 0.063   red5   2017-10-10 14:05:06 0.073   red6   2017-10-10 14:05:16 0.081   green7   2017-10-10 14:05:26 0.095   green8   2017-10-10 14:05:36 0.103   green9   2017-10-10 14:05:46 0.113   green10  2017-10-10 14:05:56 0.124   green11  2017-10-10 14:06:06 0.134   green12  2017-10-10 14:06:16 0.149   yellow13  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我想根据列为每个点分配不同的颜色df['color']。如果我将代码更改为,则会出错。ax1.plot_date(df['time'], df['distance'], marker='o',color=df['color'])  错误:ValueError: Invalid RGBA argument: 0      yellow1       yellow2       green3       green4       red5       red6       green如果有人知道如何使用第三列为不同类别标签设置颜色,我将不胜感激plt.plot_date()。注意:我使用plt.plot_date()而不是plt.scatter()因为它允许我选择在特定图形上显示的时间范围并更轻松地设置 timeTickers。
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您可以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) 

...


查看完整回答
反对 回复 2021-08-05
  • 1 回答
  • 0 关注
  • 357 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信