如何根据日期列更改线条图的颜色?

时间:2019-10-10 08:58:17

标签: python pandas plotly

我正在尝试根据“日期列”更改折线图的颜色。但我遇到了错误

我尝试了以下代码:

fig = px.line(df_1, x='Time_ist', y='AccelerationG', color = 'Date')
# # fig.update_layout(title_text='Acceleration on ' + str(i))
fig.show()

The error i am getting is:

KeyError: (Timestamp('2019-09-26 00:00:00'), '', '', '', '', '')

1 个答案:

答案 0 :(得分:1)

color中的

px.line并不接受Timestamp作为参数。如果以某种方式做到了,我不确定结果会是什么样。也许是一种指示时间流逝的颜色?我不确定,真的。但是我想您正在这里寻找的是按月份或年份的不同来区分数据点,并像一个因子或类别来说明它。我将使用plotly的示例和SO帖子Generating random dates within a given range in pandas的建议来说明如何实现后者。

情节:

enter image description here

下面的代码段生成了一堆随机日期,将月份数字提取为整数,将其添加到虹膜数据集中,然后让px.Scatter()将其用作着色的输入。

代码:

# Load example from https://plot.ly/python/creating-and-updating-figures/
import plotly.express as px
import pandas as pd
import numpy as np

iris = px.data.iris()

# Add random dates using a suggestion from https://stackoverflow.com/questions/50559078/generating-random-dates-within-a-given-range-in-pandas
def random_dates(start, end, n, seed=1, replace=True):
    dates = pd.date_range(start, end).to_series()
    return dates.sample(n, replace=replace, random_state=seed)

dates=random_dates("20190101","20191212", len(iris), seed=1)
months=[m.month for m in dates]
iris['month']=months

fig = px.scatter(iris, x="sepal_width", y="sepal_length", color="month")
fig.show()

如果要使用月份中的某天,只需将months=[m.month for m in dates]更改为days=[m.day for d in dates],然后将px.Scatter中的引用从color="month"更改为color="days"

请让我知道这对您有何帮助。