Python Plot ly使用for loop在子地块中进行方框打印

Python Plot ly使用for loop在子地块中进行方框打印,python,plotly,boxplot,Python,Plotly,Boxplot,我有一个数据帧(df)。我想绘制每个列的方框图,并将它们显示为子图。但是,下面的代码给出了一个错误 from plotly.subplots import make_subplots import plotly.express as px import pandas as pd fig = make_subplots(rows = 5, cols = 2) for i, column in enumerate(df.select_dtypes(include = np.number).colu

我有一个数据帧(df)。我想绘制每个列的方框图,并将它们显示为子图。但是,下面的代码给出了一个错误

from plotly.subplots import make_subplots
import plotly.express as px
import pandas as pd

fig = make_subplots(rows = 5, cols = 2)
for i, column in enumerate(df.select_dtypes(include = np.number).columns.tolist()):
    fig.add_trace(px.box(df, y = [column]), row = i%5, col = i//5)
    fig.update_layout(width = 800, height = 800)
    fig.show()

错误:“--->5 fig.add_trace(px.box(df,y=[列]),row=i%5,col=i//5)”

在我的一端,您的代码片段触发:

“data”属性是跟踪实例的元组,可能是 指定为:

  • 跟踪实例的列表或元组 (例如[散射(…)、条形(…))
  • 单个跟踪实例
这是因为
fig.add_trace
设计用于将
跟踪对象
作为输入,例如,而不是
图形对象
,这是您在此处使用的
px.box
将返回的内容。因此,您可以使用以下内容来代替:

# plotly setup
plot_rows=6
plot_cols=6
fig = make_subplots(rows=plot_rows, cols=plot_cols)

# add traces
x = 0
for i in range(1, plot_rows + 1):
    for j in range(1, plot_cols + 1):
        #print(str(i)+ ', ' + str(j))
        fig.add_trace(go.Box(y=df[df.columns[x]].values,
                                 name = df.columns[x],
                            ),
                     row=i,
                     col=j)

        x=x+1
并获得:

完整代码:
我理解。我试过了,因为我没有在互联网上找到解决方案。如果您有任何关于如何子批px.box的想法,请让我知道,我将不胜感激。谢谢,当然!我将扩展我最初的建议非常感谢,我设法使其适应我的代码!!=)
## imports
from plotly.subplots import make_subplots
import plotly.graph_objs as go
import pandas as pd
import numpy as np

# data
np.random.seed(123)
frame_rows = 10
n_plots = 36
frame_columns = ['B_'+str(e) for e in list(range(n_plots+1))]
df = pd.DataFrame(np.random.uniform(-10,10,size=(frame_rows, len(frame_columns))),
                  index=pd.date_range('1/1/2020', periods=frame_rows),
                    columns=frame_columns)
df=df.cumsum()+100
df.iloc[0]=100

# plotly setup
plot_rows=6
plot_cols=6
fig = make_subplots(rows=plot_rows, cols=plot_cols)

# add traces
x = 0
for i in range(1, plot_rows + 1):
    for j in range(1, plot_cols + 1):
        #print(str(i)+ ', ' + str(j))
        fig.add_trace(go.Box(y=df[df.columns[x]].values,
                                 name = df.columns[x],
                            ),
                     row=i,
                     col=j)

        x=x+1

# Format and show fig
fig.update_layout(height=1200, width=1200)
fig.show()