我正在尝试根据“日期列”更改折线图的颜色。但我遇到了错误
我尝试了以下代码:
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'), '', '', '', '', '')
答案 0 :(得分:1)
color
中的 px.line
并不接受Timestamp
作为参数。如果以某种方式做到了,我不确定结果会是什么样。也许是一种指示时间流逝的颜色?我不确定,真的。但是我想您正在这里寻找的是按月份或年份的不同来区分数据点,并像一个因子或类别来说明它。我将使用plotly的示例和SO帖子Generating random dates within a given range in pandas的建议来说明如何实现后者。
情节:
下面的代码段生成了一堆随机日期,将月份数字提取为整数,将其添加到虹膜数据集中,然后让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"
请让我知道这对您有何帮助。