【发布时间】:2022-01-23 18:53:28
【问题描述】:
资助日期与学科的相同数据集使用 plotly.express (px) 线和 plotly.graph_objects (go) 散点轨迹以不同方式绘制。地块的形状看起来相同,但运行轨迹中的日期是错误的。关于这里可能有什么问题的任何建议?谢谢。
使用 px.line:
fig = px.line(df_fig, x='date_list', y='monthly_avg', color='main_discipline')
使用 go.Figure
plot = go.Figure()
plot.add_trace(go.Scatter(
name = 'Data 1',
x = df_fig.date_list,
y = df_fig[df_fig.main_discipline==1].monthly_avg,
stackgroup='one'
))
plot.add_trace(go.Scatter(
name = 'Data 2',
x = df_fig.date_list,
y = df_fig[df_fig.main_discipline==2].monthly_avg,
stackgroup='one'
))
plot.add_trace(go.Scatter(
name = 'Data 3',
x = df_fig.date_list,
y = df_fig[df_fig.main_discipline==3].monthly_avg,
stackgroup='one'
))
plot.add_trace(go.Scatter(
name = 'Data 5',
x = df_fig.date_list,
y = df_fig[df_fig.main_discipline==5].monthly_avg,
stackgroup='one'
))
date_list 的类型为 datetime64:
df_fig.date_list
0 1975-06-01
1 1975-06-01
2 1975-06-01
3 1975-06-01
4 1975-07-01
...
2455 2026-07-01
2456 2026-08-01
2457 2026-08-01
2458 2026-08-01
2459 2026-08-01
Name: date_list, Length: 2460, dtype: datetime64[ns]
删除 stackgroup 生成了相同形状的图,但错误的结束日期仍然是 1988 年 3 月而不是 2026 年 7 月。
这是前20行的数据框,日期问题持续存在
df_fig[['date_list', 'main_discipline', 'monthly_avg']]
date_list main_discipline monthly_avg
0 1975-06-01 1 0.000000
1 1975-06-01 2 15494.000000
2 1975-06-01 3 0.000000
3 1975-06-01 5 0.000000
4 1975-07-01 1 0.000000
5 1975-07-01 2 16827.333333
6 1975-07-01 3 0.000000
7 1975-07-01 5 0.000000
8 1975-08-01 1 3880.252381
9 1975-08-01 2 16827.333333
10 1975-08-01 3 0.000000
11 1975-08-01 5 0.000000
12 1975-09-01 1 3880.252381
13 1975-09-01 2 16827.333333
14 1975-09-01 3 0.000000
15 1975-09-01 5 0.000000
16 1975-10-01 1 201134.985609
17 1975-10-01 2 986805.179029
18 1975-10-01 3 590159.728836
19 1975-10-01 5 0.000000
使用 px.line
fig = px.line(df_fig[df_fig.main_discipline==1], x='date_list', y='monthly_avg')
fig.show()
使用 go.Scatter
plot = go.Figure()
plot.add_trace(go.Scatter(
name = 'Data 1',
x = df_fig.date_list,
y = df_fig[df_fig.main_discipline==1].monthly_avg,
))
plot.show()
【问题讨论】:
-
如果您不使用填充区域图并从跟踪中删除参数
stackgroup='one',会发生什么情况?这可以帮助您更好地直接比较图 -
@DerekO 我删除了 stackgroup='one',图的形状或多或少相同,但错误的结束日期仍然是 1988 年而不是 2026 年。
-
这很奇怪。我注意到
df_fig中有 4 个重复的日期。当你第二次下降时会是什么样子?如果您绘制,例如您的 df_fig 的一半,这个问题是否仍然存在?如果只绘制前 100 个点怎么办?如果您的 df 的一小部分仍然存在相同的问题,那么您可以将其粘贴到问题中,我们可以直接帮助您调试导致此问题的任何原因 -
4 个重复的日期对应于 4 个 main_disciplines。我提取了头部 20 行(在描述中添加)。感谢您的帮助。
标签: python date plotly line scatter