Plotly express 在 Python 中绘制的意外附加线
Unintended Additional line drawn by Plotly express in Python
Plotly 从原始折线图的起点到终点绘制一条额外的对角线。
其他数据,其他图表工作正常。
仅此数据添加行。
为什么会这样?
我该如何解决这个问题?
下面是代码
temp = pd.DataFrame(df[{KEY_WORD}])
temp['date'] = temp.index
fig=px.line(temp.melt(id_vars="date"), x='date', y='value', color='variable')
fig.show()
plotly.offline.plot(fig,filename='Fig_en1')
刚遇到同样的问题 -- 尝试检查 X 轴上的重复值。我正在使用以下代码:
fig = px.line(df, x="weekofyear", y="interest", color="year")
fig.show()
创建了以下情节:
我意识到这是因为在某些年份,某些日期的周数与前几年的 52/53 周有关,因此创建了重复项,例如下面的索引 93 和 145:
date interest query year weekofyear
39 2015-12-20 44 home insurance 2015 51
40 2015-12-27 55 home insurance 2015 52
41 2016-01-03 69 home insurance 2016 53
92 2016-12-25 46 home insurance 2016 51
93 2017-01-01 64 home insurance 2017 52
144 2017-12-24 51 home insurance 2017 51
145 2017-12-31 79 home insurance 2017 52
196 2018-12-23 46 home insurance 2018 51
197 2018-12-30 64 home insurance 2018 52
248 2019-12-22 57 home insurance 2019 51
249 2019-12-29 73 home insurance 2019 52
通过修改这些(对于 1 月份日期高的周数,我从年份列中减去 1)我似乎已经摆脱了这种现象:
注意:由于数据集有些不稳定,图表之间可能存在一些其他差异。
在 post How to disable trendline in plotly.express.line? 中已经提出并回答了类似的问题,但对于您的情况,我很确定问题出在 temp.melt(id_vars="date"), x='date', y='value', color='variable'
中。看来您正在将数据从宽格式转换为长格式。您正在使用 color='variable'
,但未在 temp.melt(id_vars="date")
中指定。当颜色规范与数据集的结构不正确对应时,可能会出现像您这样的额外行。看看这个:
命令 1:
fig = px.line(data_frame=df_long, x='Timestamp', y='value', color='stacked_values')
地块 1:
命令 2:
fig = px.line(data_frame=df_long, x='Timestamp', y='value')
情节 2:
看出区别了吗?这就是为什么我认为您的 fig=px.line(temp.melt(id_vars="date"), x='date', y='value', color='variable')
.
中的规格有误
所以请分享您的数据,或重现问题的数据样本,我将有更好的机会验证您的问题。
Plotly 从原始折线图的起点到终点绘制一条额外的对角线。
其他数据,其他图表工作正常。
仅此数据添加行。
为什么会这样?
我该如何解决这个问题?
下面是代码
temp = pd.DataFrame(df[{KEY_WORD}])
temp['date'] = temp.index
fig=px.line(temp.melt(id_vars="date"), x='date', y='value', color='variable')
fig.show()
plotly.offline.plot(fig,filename='Fig_en1')
刚遇到同样的问题 -- 尝试检查 X 轴上的重复值。我正在使用以下代码:
fig = px.line(df, x="weekofyear", y="interest", color="year")
fig.show()
创建了以下情节:
我意识到这是因为在某些年份,某些日期的周数与前几年的 52/53 周有关,因此创建了重复项,例如下面的索引 93 和 145:
date interest query year weekofyear
39 2015-12-20 44 home insurance 2015 51
40 2015-12-27 55 home insurance 2015 52
41 2016-01-03 69 home insurance 2016 53
92 2016-12-25 46 home insurance 2016 51
93 2017-01-01 64 home insurance 2017 52
144 2017-12-24 51 home insurance 2017 51
145 2017-12-31 79 home insurance 2017 52
196 2018-12-23 46 home insurance 2018 51
197 2018-12-30 64 home insurance 2018 52
248 2019-12-22 57 home insurance 2019 51
249 2019-12-29 73 home insurance 2019 52
通过修改这些(对于 1 月份日期高的周数,我从年份列中减去 1)我似乎已经摆脱了这种现象:
注意:由于数据集有些不稳定,图表之间可能存在一些其他差异。
在 post How to disable trendline in plotly.express.line? 中已经提出并回答了类似的问题,但对于您的情况,我很确定问题出在 temp.melt(id_vars="date"), x='date', y='value', color='variable'
中。看来您正在将数据从宽格式转换为长格式。您正在使用 color='variable'
,但未在 temp.melt(id_vars="date")
中指定。当颜色规范与数据集的结构不正确对应时,可能会出现像您这样的额外行。看看这个:
命令 1:
fig = px.line(data_frame=df_long, x='Timestamp', y='value', color='stacked_values')
地块 1:
命令 2:
fig = px.line(data_frame=df_long, x='Timestamp', y='value')
情节 2:
看出区别了吗?这就是为什么我认为您的 fig=px.line(temp.melt(id_vars="date"), x='date', y='value', color='variable')
.
所以请分享您的数据,或重现问题的数据样本,我将有更好的机会验证您的问题。