Plotly动画:折线图不可见(Python)

Plotly animation: line chart is invisible (Python)

我正在使用 Jupyter Notebook 尝试显示动画折线图。 (看到它是从左到右绘制的。)

但是,图表没有显示,而图表容器和所有控件都显示了。好像线是看不见的。

这是我的代码:

import pandas as pd
import plotly.express as px
import plotly.io as pio


data = [['Year', 'Country', 'Output', 'Investment', 'Depreciation'], ['2020', 'Netherlands', 1, 2, 1], ['2021', 'Netherlands', 2, 2, 1], ['2022', 'Netherlands', 3, 2, 1], ['2023', 'Netherlands', 4, 2, 1]]
df = pd.DataFrame(data[1:], columns=data[0])

pio.renderers.default = 'notebook'
px.line(df, 
        x='Year', 
        y='Output', 
        color='Country',
        title='Macroeconomic variables over time',
        range_x=[df['Year'].iloc[0], df['Year'].iloc[-1]],
        range_y=[0, max(df['Output']) * 1.25],
        animation_frame='Year')

提供以下图表(在 VSCode 和 Jupyter Notebooks 中):

关于为什么会发生这种情况有什么想法吗?

  • 从根本上说,您需要考虑数据的维度。假设每 有一行,并且您使用的是 animation_frame,每条轨迹中只有一个点。这不构成一条线
  • 模拟了一个略有不同的数据帧,它有 Decade 并用作 animation_frame。这意味着有 10 行,因此每条线有 10 个点。
import pandas as pd
import plotly.express as px
import numpy as np

data = [
    ["Year", "Country", "Output", "Investment", "Depreciation"],
    ["2020", "Netherlands", 1, 2, 1],
    ["2021", "Netherlands", 2, 2, 1],
    ["2022", "Netherlands", 3, 2, 1],
    ["2023", "Netherlands", 4, 2, 1],
]
df = pd.DataFrame(data[1:], columns=data[0])
df = pd.DataFrame(
    {
        c: list(range(2000 if i == 0 else 1, 2050 if i == 0 else 51, 1))
        if c in ["Year", "Output"]
        else np.full(50, i if c != "Country" else "Netherlands")
        for i, c in enumerate(data[0])
    }
).assign(Decade=lambda d: d["Year"] // 10 - 200)

px.line(
    df,
    x="Year",
    y="Output",
    color="Country",
    title="Macroeconomic variables over time",
    range_x=[df["Year"].iloc[0], df["Year"].iloc[-1]],
    range_y=[0, max(df["Output"]) * 1.25],
    animation_frame="Decade",
)