如何在plotly中创建一个有6条线的子图?

问题描述 投票:0回答:1

我有6个不同的数据框架,我想制作1张图,显示6个图表,X轴为年份,Y轴为每10万的事故案例。 我一直在使用下面的代码来创建一个我所希望的单一图形,但现在我被如何将它们全部放入1个图中卡住了。

px.line(gyeEUR, x="year", y="incident cases per 100k", color="country", title="Incident Cases per 100k in Europe")

我只是想用6个不同的数据框架(即gyeEUR,gyeEMR......)来绘制6次这个图。 什么是最好的方法?

python plotly
1个回答
2
投票

你可以考虑读取所有的6个数据框,添加一列到他们身上 df_i["fn"]= "filename"并最终将它们连接到一个更大的数据框架中。df 并使用

px.line(df,
        x="year",
        y="incident cases per 100k",
        color="country",
        title="Incident Cases per 100k in Europe",
        facet_row="fn")

更新:完整的例子

生成数据

在这里,我们只是简单地读取了gapminder内置的数据 plotly.express 并拆分在几个文件中的大陆。鉴于文件名中包含了大陆,我们在每组文件中都放下了这一列。

import os
import plotly.express as px
os.makedirs("data", exist_ok=True)

df = px.data.gapminder()

df.groupby("continent")\
  .apply(lambda x: 
         x.drop("continent", axis=1)\
          .to_csv("data/{}.csv".format(x.name),
                  index=False))

读取数据并合并

# list all csv in data/
files = os.listdir("data/")
files = list(filter(lambda f: f.endswith('.csv'), files))

# read, add continent and concat

out = []
for file in files:
    df = pd.read_csv(f"data/{file}")
    df["continent"] = file[:-4]
    out.append(df)
df = pd.concat(out)

情节

这看起来不是很好,但它只是一个例子。

px.line(df,
        x="year",
        y="pop",
        color="country",
        facet_row="continent")
© www.soinside.com 2019 - 2024. All rights reserved.