简体   繁体   English

我似乎无法让 plotly 显示多个图表

[英]I can't seem to get plotly to display multiple graphs

I want to create a nice graph in python, so I used plotly to create a graph, but I get an error.我想在 python 中创建一个漂亮的图表,所以我使用 plotly 来创建一个图表,但是我得到了一个错误。

Maybe because I'm new to plotly , I don't understand the error in this code.也许是因为我是plotly的新手,我不明白这段代码中的错误。
The only thing I can tell is that my code is wrong.我唯一能说的是我的代码是错误的。
I want to display multiple graphs in plotly.我想在 plotly 中显示多个图形。

fig = make_subplots(rows=math.ceil(len(file_names)/3),cols=3)

for j in range(len(file_names)):
    df_inst = df_list[j][df_list[j]["species"] == species_list[int(10)]] 

    fig.append_trace(
        px.scatter(
            x=df_inst[" VG"],
            y=df_inst[" ID"],
        ), row=1 + int(j / 3), col=1 + j % 3
    )
    fig.update_xaxes(type='linear' if xaxis_type == 'Linear' else 'log', 
                     row=1 + int(j / 3), col=1 + j % 3)

    fig.update_yaxes(type='linear' if yaxis_type == 'Linear' else 'log',
                     row=1 + int(j / 3), col=1 + j % 3)
    
fig.show()

erorr message.错误消息。

ValueError: 
    Invalid element(s) received for the 'data' property of 
        Invalid elements include: [Figure({
    'data': [{'hovertemplate': 'x=%{x}<br>y=%{y}<extra></extra>',
              'legendgroup': '',
              'marker': {'color': '#636efa', 'symbol': 'circle'},
              'mode': 'markers',
              'name': '',
              'orientation': 'v',
              'showlegend': False,
              'type': 'scatter',
              'x': array([-0.5  , -0.498, -0.496, ...,  0.996,  0.998,  1.   ]),
              'xaxis': 'x',
              'y': array([ 1.8000e-13,  1.0200e-12, -1.6700e-12, ...,  1.5398e-06,  1.5725e-06,
                           1.5883e-06]),
              'yaxis': 'y'}],
    'layout': {'legend': {'tracegroupgap': 0},
               'margin': {'t': 60},
               'template': '...',
               'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'x'}},
               'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'y'}}}
})]

    The 'data' property is a tuple of trace instances
    that may be specified as:
      - A list or tuple of trace instances
        (e.g. [Scatter(...), Bar(...)])
      - A single trace instance
        (e.g. Scatter(...), Bar(...), etc.)
      - A list or tuple of dicts of string/value properties where:
        - The 'type' property specifies the trace type
            One of: ['area', 'bar', 'barpolar', 'box',
                     'candlestick', 'carpet', 'choropleth',
                     'choroplethmapbox', 'cone', 'contour',
                     'contourcarpet', 'densitymapbox', 'funnel',
                     'funnelarea', 'heatmap', 'heatmapgl',
                     'histogram', 'histogram2d',
                     'histogram2dcontour', 'image', 'indicator',
                     'isosurface', 'mesh3d', 'ohlc', 'parcats',
                     'parcoords', 'pie', 'pointcloud', 'sankey',
                     'scatter', 'scatter3d', 'scattercarpet',
                     'scattergeo', 'scattergl', 'scattermapbox',
                     'scatterpolar', 'scatterpolargl',
                     'scatterternary', 'splom', 'streamtube',
                     'sunburst', 'surface', 'table', 'treemap',
                     'violin', 'volume', 'waterfall']

        - All remaining properties are passed to the constructor of
          the specified trace type

        (e.g. [{'type': 'scatter', ...}, {'type': 'bar, ...}])

Thank you for reading.感谢您的阅读。

According to the documentation on adding traces to subplots , the add_trace and append_trace methods only take accept plotly graph_objects .根据关于向子图添加跟踪的文档add_traceappend_trace方法只接受 plotly graph_objects Therefore, your code block:因此,您的代码块:

fig.append_trace(
    px.scatter(
        x=df_inst[" VG"],
        y=df_inst[" ID"],
    ), row=1 + int(j / 3), col=1 + j % 3
)

... should be changed to the following: ...应更改为以下内容:

fig.append_trace(
    go.Scatter(
        x=df_inst[" VG"],
        y=df_inst[" ID"],
    ), row=1 + int(j / 3), col=1 + j % 3
)

Here is an example where we can plot some a randomly generated DataFrame on different subplots adding Scatter graph_objects one at a time with append_trace :这是一个示例,我们可以在 plot 一些随机生成的 DataFrame 在不同的子图上使用append_trace graph_objects

import numpy as np
import pandas as pd
from plotly.subplots import make_subplots
import plotly.express as px
import plotly.graph_objects as go

np.random.seed(42)

df = pd.DataFrame(np.random.randint(0,100,size=(5, 2)), columns=list('AB'))

fig = make_subplots(rows=2,cols=1)
for row_idx, col_name in enumerate(df.columns):

    ## using px.scatter throws the same ValueError: 
    ## Invalid element(s) received for the 'data' property

    fig.append_trace(
        go.Scatter(
            x=list(range(5)),
            y=df[col_name]
        ),
        row=row_idx+1,col=1
    )
fig.show()

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM