在子地块的第三行添加第二个散点

2024-09-27 19:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码呈现: 第一排是一张桌子。在第二行-2个条形图。那很好。我要展示的第三件事是一个条形图,它是由第二行的两个条形图组合而成的。我正在用fig.add_traces(...)合并两个条形图。但它出现在pdf的表格下面。我试过用specs但是什么都没有。我也试着把row=3, col=1添加到fig.add_traces中,但它不允许我这样做。我的代码:

from plotly import graph_objs as go
import numpy as np
import os
from plotly.subplots import make_subplots

fig = make_subplots(rows=3, cols=2)

website_fig = go.Bar(
        x=[
            "01/09/2019 - 07/09/2019",
            "08/09/2019 - 14/09/2019", 
            "15/09/2019 - 21/09/2019",
            "22/09/2019 - 28/09/2019"
            ],
        y=[15, 25, 35, 32],
        name= "Website statistic"
    )

linkedin_fig = go.Bar(
        x=[
            "01/09/2019 - 07/09/2019",
            "08/09/2019 - 14/09/2019", 
            "15/09/2019 - 21/09/2019",
            "22/09/2019 - 28/09/2019"
            ],
        y=[153, 102, 187, 200],
        name= "LinkedIn statistic"
    )

# Chart product views
fig.add_trace(  
    website_fig,
    row=2,
    col=1
)

# Chart product views LinkedIn
fig.add_trace(  
    linkedin_fig,
    row=2,
    col=2
)

wesbite_views = [15, 25, 35, 32]
wesbite_views.append(sum(wesbite_views))
linkedin_views = [153, 102, 187, 200]
linkedin_views.append(sum(linkedin_views))
total_views  = [x + y for x, y in zip(wesbite_views, linkedin_views)]

# Product views table
fig.add_trace(
    go.Table(
        header=dict(values=["Period", "Website views", "LinkedIn views", "Total views"]),
        cells=dict(values=[
            [
                "01/09/2019 - 07/09/2019",
                "08/09/2019 - 14/09/2019", 
                "15/09/2019 - 21/09/2019",
                "22/09/2019 - 28/09/2019",
                "01/09/2019 - 28/09/2019",
            ],
            wesbite_views,
            linkedin_views,
            total_views
        ])
    )
)

fig.add_traces([
        go.Scatter(
            x=[
                "01/09/2019 - 07/09/2019",
                "08/09/2019 - 14/09/2019", 
                "15/09/2019 - 21/09/2019",
                "22/09/2019 - 28/09/2019"
                ],
            y=[15, 25, 35, 32],
        ),
        go.Scatter(
            x=[
                "01/09/2019 - 07/09/2019",
                "08/09/2019 - 14/09/2019", 
                "15/09/2019 - 21/09/2019",
                "22/09/2019 - 28/09/2019"
                ],
            y=[153, 102, 187, 200],
        ),
    ]
)

if not os.path.exists("files"):
    os.mkdir("files")

fig.update_yaxes(title_text="Product views", range=[0, 40], row=2, col=1)
fig.update_layout(height=700, width=1000, title_text="<b>Library Shelving</b> statistic")
fig.write_image("files/statistic.pdf")

Tags: importaddgoosfigcolstatisticviews
1条回答
网友
1楼 · 发布于 2024-09-27 19:27:12

如果我用rowcol运行add_traces,我得到

TypeError: add_traces() got an unexpected keyword argument 'row'

看看these examples of subplots,参数应该是rowscols

fig.add_traces([
        go.Scatter(
            x=[
                "01/09/2019 - 07/09/2019",
                "08/09/2019 - 14/09/2019",
                "15/09/2019 - 21/09/2019",
                "22/09/2019 - 28/09/2019"
                ],
            y=[15, 25, 35, 32],
        ),
        go.Scatter(
            x=[
                "01/09/2019 - 07/09/2019",
                "08/09/2019 - 14/09/2019",
                "15/09/2019 - 21/09/2019",
                "22/09/2019 - 28/09/2019"
                ],
            y=[153, 102, 187, 200],
        ),
    ],
    rows=[3, 3], cols=[1, 1]
)

我还将原来的调用make_subplots改为

fig = make_subplots(rows=3, cols=2, specs=[
    [{"colspan": 2}, None], [{}, {}], [{"colspan":2}, None]])

我没有更改代码中的任何其他内容(这些是散点图而不是直线图)

相关问题 更多 >

    热门问题