Man*_*kla 5 python for-loop linegraph dataframe plotly
我正在尝试使用plotly为单个图中的多个数据帧绘制折线图。我的代码是:
import plotly.express as px
labels=category_names[:10]
for category in category_names[:10]:
df_b=df1[df1['Country/Region']==category]
fig=px.line(df_b, x="Date", y="Confirmed",labels="Country/Region")
print(category)
fig.show()
Run Code Online (Sandbox Code Playgroud)
但是,通过使用上面的代码,我只能获取 for 循环最后一次迭代的线图。
电流输出:
期望的输出:
请帮助我的代码!
使用plotly.expresswith ,只要您的数据集是某种格式,px.line()您就不必使用 a来在单个图中输出多行。您可能会混淆这种使用 a和 的方法,这可以说更适合将国家/地区作为列名称、时间作为索引以及数据框中单个类别的值的数据格式。for looplongfor loopfig.add_figure()wide
如果没有适当的数据样本,就很难 100% 确定您的问题是什么。但在我看来,你的数据结构与结构相匹配px.data.gapminder()
country continent year lifeExp pop gdpPercap iso_alpha iso_num
0 Afghanistan Asia 1952 28.801 8425333 779.445314 AFG 4
1 Afghanistan Asia 1957 30.332 9240934 820.853030 AFG 4
2 Afghanistan Asia 1962 31.997 10267083 853.100710 AFG 4
3 Afghanistan Asia 1967 34.020 11537966 836.197138 AFG 4
4 Afghanistan Asia 1972 36.088 13079460 739.981106 AFG 4
Run Code Online (Sandbox Code Playgroud)
因此,我将在此基础上提供一个答案,您可以尝试从那里进行整理。当然,除非您愿意分享完整的数据示例和代码片段。
阴谋:
完整代码:
import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
# sample dataset from plotly express
df = px.data.gapminder()
# Filter and pivot dataset for each country,
# and add lines for each country
fig = go.Figure()
for c in df['country'].unique()[:3]:
dfp = df[df['country']==c].pivot(index='year', columns='country', values='pop')
fig.add_traces(go.Scatter(x=dfp.index, y=dfp[c], mode='lines', name = c))
fig.show()
Run Code Online (Sandbox Code Playgroud)
此代码片段的作用是将源子集划分为每个独特的类别,例如:
country continent year lifeExp pop gdpPercap iso_alpha iso_num
564 Germany Europe 1952 67.5 69145952 7144.114393 DEU 276
565 Germany Europe 1957 69.1 71019069 10187.826650 DEU 276
566 Germany Europe 1962 70.3 73739117 12902.462910 DEU 276
567 Germany Europe 1967 70.8 76368453 14745.625610 DEU 276
568 Germany Europe 1972 71.0 78717088 18016.180270 DEU 276
Run Code Online (Sandbox Code Playgroud)
...并使用该数据集进行旋转df[df['country']=='Germany'].pivot(index='year', columns='country', values='pop')以获得:
country Germany
year
1952 69145952
1957 71019069
1962 73739117
1967 76368453
1972 78717088
1977 78160773
1982 78335266
1987 77718298
1992 80597764
1997 82011073
2002 82350671
2007 82400996
Run Code Online (Sandbox Code Playgroud)
...然后使用将该数据添加到绘图中fig.add_traces()。