Python 是否有一种使用Plotly express显示多个子地块的方法
我很想知道是否有一个相当于:Python 是否有一种使用Plotly express显示多个子地块的方法,python,pandas,plotly,plotly-python,plotly-express,Python,Pandas,Plotly,Plotly Python,Plotly Express,我很想知道是否有一个相当于: import pandas as pd import numpy as np data = pd.DataFrame({'Day':range(10), 'Temperature': np.random.rand(10), 'Wind': np.random.rand(10), 'Humidity': np.random.rand(10)
import pandas as pd
import numpy as np
data = 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)})
data.set_index('Day').plot(subplots=True, layout=(2,2), figsize=(10,5))
plt.tight_layout()
与matplotlib图表相反,它生成绘图图形。- 根据文档,它支持,而且还支持
- 这演示了如何使用较低级别的
模块和它公开的plotly.subplot
函数来构造具有任意子图的图形make_subplot
导入plotly.graph\u对象
从plotly.subplot导入make_子地块
#使用示例数据
图=生成子批次(行=2,列=2,起始单元格=“左下”)
图添加轨迹(go.Scatter(x=data.index,y=data.Temperature,name='Temp'),
行=1,列=1,)
图添加轨迹(go.Scatter(x=data.index,y=data.Wind,name='Wind'),
行=1,列=2)
图添加轨迹(go.Scatter(x=data.index,y=data.湿度,name='湿度'),
行=2,列=1)
图添加轨迹(go.Scatter(x=data.index,y=data.Pressure,name='Pressure'),
行=2,列=2)
图2(图3)
对于plotly express解决方案:
您可以使用
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'])
您的数据帧现在看起来是这样的,变量名位于名为“variable”的列中,值位于名为“value”的列中:
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()
与参数facet\u 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)
有关刻面图的更多信息可在此处找到: