我有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次这个图。 什么是最好的方法?
你可以考虑读取所有的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")