python用plotly画多子图,子图同时包括表格和图形

解决办法如下,是从官方文档找到的:

import plotly.graph_objects as go
from plotly.subplots import make_subplots

import pandas as pd
import re

df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/Mining-BTC-180.csv")

for i, row in enumerate(df["Date"]):
    p = re.compile(" 00:00:00")
    datetime = p.split(df["Date"][i])[0]
    df.iloc[i, 1] = datetime

fig = make_subplots(
    rows=3, cols=1,
    shared_xaxes=True,
    vertical_spacing=0.03,
    specs=[[{"type": "table"}],
           [{"type": "scatter"}],
           [{"type": "scatter"}]]
)

fig.add_trace(
    go.Scatter(
        x=df["Date"],
        y=df["Mining-revenue-USD"],
        mode="lines",
        name="mining revenue"
    ),
    row=3, col=1
)

fig.add_trace(
    go.Scatter(
        x=df["Date"],
        y=df["Hash-rate"],
        mode="lines",
        name="hash-rate-TH/s"
    ),
    row=2, col=1
)

fig.add_trace(
    go.Table(
        header=dict(
            values=["Date", "Number<br>Tr
<think>我们正在使用Plotly库来创建表。根据用户的问题,他想知道如何在主中添加。根据引用内容,Plotly提供了种方式来实现,其中主要的方法是使用`make_subplots`函数(来自`plotly.subplots`模块)来创建布局,然后使用`add_trace`方法将各个表添加到的指定位置。步骤:1.导入必要的模块:`make_subplots``plotly.graph_objects`(通常作为go导入)。2.使用`make_subplots`函数创建布局,指定行数列数。3.使用`add_trace`方法添加每个子的轨迹(trace),并指定该轨迹所在的行列。4.可选的:设置整个图形的布局(如标题、尺寸等)。5.显示图形。另外,引用中提供了几种不同的示例,包括基本的创建、3D、双Y轴设置等。但用户的问题集中在如何添加,所以我们重点介绍基本方法。下面是一个具体的示例代码,展示如何创建一个包含两个子(一个散点一个条形)的主:</think>### Plotly 如何在主中添加Plotly 中,通过 `make_subplots()` 函数可以实现在主中创建布局。以下是具体实现步骤: #### 1. **导入必要模块** ```python from plotly.subplots import make_subplots import plotly.graph_objects as go ``` #### 2. **创建布局** 使用 `make_subplots()` 定义的行列结构: ```python fig = make_subplots( rows=2, # 2行 cols=2, # 2列 subplot_titles=["1", "2", "3", "4"] # 标题 ) ``` #### 3. **添加数据到指定** 通过 `add_trace()` 将图形对象添加到特定位置,用 `row` `col` 参数定位: ```python # 左上角(第1行第1列) fig.add_trace( go.Scatter(x=[1,2,3], y=[4,5,6]), row=1, col=1 ) # 右下角(第2行第2列) fig.add_trace( go.Bar(x=["A","B"], y=[10,20]), row=2, col=2 ) ``` #### 4. **调整整体布局** 统一设置主尺寸标题: ```python fig.update_layout( height=600, width=800, title_text="多子图示例", showlegend=True # 显示共享例 ) ``` #### 5. **高级功能** - **共享坐标轴**: 在 `make_subplots()` 中添加 `shared_xaxes=True` 或 `shared_yaxes=True` - **双Y轴**: 使用 `specs` 参数定义次级坐标轴[^4]: ```python fig = make_subplots( specs=[[{"secondary_y": True}, {}]] # 第1个子启用双Y轴 ) ``` - **混合表类型**: 可在同一叠加图形(如折线+柱状) #### 完整示例 ```python from plotly.subplots import make_subplots import plotly.graph_objects as go # 创建2x2布局 fig = make_subplots(rows=2, cols=2, subplot_titles=["散点", "柱状", "折线", "混合"]) # 添加数据 fig.add_trace(go.Scatter(x=[1,2,3], y=[4,1,2]), row=1, col=1) fig.add_trace(go.Bar(x=["A","B","C"], y=[3,2,1]), row=1, col=2) fig.add_trace(go.Scatter(x=[1,2,3], y=[2,3,1]), row=2, col=1) fig.add_trace(go.Scatter(x=[1,2,3], y=[10,11,12]), row=2, col=2) fig.add_trace(go.Bar(x=["A","B","C"], y=[12,11,10]), row=2, col=2) # 与折线叠加 # 设置主布局 fig.update_layout(height=700, width=900, title_text="复合示例") fig.show() ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值