对于一个情节明确的解决方案:
您可以使用pd.melt()
在同一列中获取所有变量:
import pandas as pd
import plotly.express as px
df = pd.DataFrame({
'Day':range(10),
'Temperature': np.random.rand(10),
'Wind': np.random.rand(10),
'Humidity': np.random.rand(10),
'Pressure': np.random.rand(10),})
df_melt = df.melt(
id_vars='Day',
value_vars=['Temperature', 'Wind', 'Humidity', 'Pressure'])
您的数据框现在看起来像这样,变量名称位于名为“变量”的列中,值位于名为“值”的列中:
Day variable value
0 0 Temperature 0.609
1 1 Temperature 0.410
2 2 Temperature 0.194
3 3 Temperature 0.663
4 4 Temperature 0.351
现在您可以使用px.scatter()
with 参数facet_col
来获取多个图:
fig = px.scatter(
df_melt,
x='Day',
y='value',
facet_col='variable',
facet_col_wrap=2,
color='variable',
width=800,
)
这导致以下情节:
现在在您的示例中,所有变量都具有相同的值范围。但如果不是这种情况,那么您可能需要确保每个图在 y 轴上都有自己的范围。这可以按如下方式完成:
fig.update_yaxes(showticklabels=True, matches=None)
可以在此处找到有关刻面图的更多信息:
https ://plotly.com/python/facet-plots/