在Python中由Plotly express绘制的意外附加线

在Python中由Plotly express绘制的意外附加线,python,jupyter-notebook,plotly,plotly-python,plotly-express,Python,Jupyter Notebook,Plotly,Plotly Python,Plotly Express,从原始线形图的起点到终点,绘出一条额外的对角线 其他数据、其他图表都可以正常工作 只有此数据才能添加行 为什么会发生这种情况 我怎样才能解决这个问题 下面是代码 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.plo

从原始线形图的起点到终点,绘出一条额外的对角线

其他数据、其他图表都可以正常工作

只有此数据才能添加行

为什么会发生这种情况

我怎样才能解决这个问题

下面是代码

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”)
图2(图3)
这创建了以下绘图:

我意识到这是因为在某些年份中,我的一些日期周数与前几年的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),我似乎已经摆脱了这种现象:


注:由于数据集的流动性,图表之间可能存在一些其他差异。

在帖子中也提出并回答了类似的问题,但对于您的情况,我非常确定问题在于
temp.melt(id\u vars=“date”)、x='date',y='value',color='variable'
。看起来您正在将数据从宽格式转换为长格式。您使用的是
color='variable'
而没有在
temp.melt(id\u vars=“date”)
中指定它。当颜色规范与数据集的结构不正确对应时,可能会出现像您这样的额外行。看看这个:

命令1:

fig = px.line(data_frame=df_long, x='Timestamp', y='value', color='stacked_values')
fig = px.line(data_frame=df_long, x='Timestamp', y='value')
绘图1:

fig = px.line(data_frame=df_long, x='Timestamp', y='value', color='stacked_values')
fig = px.line(data_frame=df_long, x='Timestamp', y='value')

命令2:

fig = px.line(data_frame=df_long, x='Timestamp', y='value', color='stacked_values')
fig = px.line(data_frame=df_long, x='Timestamp', y='value')
绘图2:

fig = px.line(data_frame=df_long, x='Timestamp', y='value', color='stacked_values')
fig = px.line(data_frame=df_long, x='Timestamp', y='value')

看到区别了吗?这就是为什么我认为您的
fig=px.行(temp.melt(id_vars=“date”)、x='date',y='value',color='variable')
中存在错误规范的原因

因此,请分享您的数据,或您的数据样本,再现问题,我将有更好的机会验证您的问题