You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Plotly在Python 3中制作放大内嵌图?

在Python 3中用Plotly实现放大内嵌图效果

要实现示例中的放大内嵌图,你可以通过Plotly的graph_objects模块,在主图中嵌入子图展示指定区域的放大细节,同时在主图标记出对应区域。以下是完整实现方案:

步骤说明

  1. 准备示例数据:生成带噪声的正弦曲线模拟实际场景
  2. 创建主图:绘制完整数据集
  3. 创建内嵌子图:截取主图特定区域的数据进行放大展示
  4. 标记放大区域:在主图用矩形标注子图对应的原始范围
  5. 布局调整:设置子图的位置、大小,优化整体视觉效果

完整代码示例

import numpy as np
import plotly.graph_objects as go

# 生成示例数据
np.random.seed(42)
x = np.linspace(0, 10, 1000)
y = np.sin(x) + np.random.normal(0, 0.1, size=len(x))

# 定义放大区域范围
zoom_x_start = 2
zoom_x_end = 4
zoom_mask = (x >= zoom_x_start) & (x <= zoom_x_end)
zoom_x = x[zoom_mask]
zoom_y = y[zoom_mask]

# 创建图形对象
fig = go.Figure()

# 添加主图曲线
fig.add_trace(go.Scatter(
    x=x, y=y,
    mode='lines',
    name='完整数据',
    line=dict(color='blue')
))

# 添加内嵌放大图曲线
fig.add_trace(go.Scatter(
    x=zoom_x, y=zoom_y,
    mode='lines',
    name='放大区域',
    line=dict(color='red'),
    xaxis='x2', yaxis='y2'
))

# 在主图添加放大区域标记矩形
fig.add_shape(
    type='rect',
    x0=zoom_x_start, y0=min(zoom_y)-0.2,
    x1=zoom_x_end, y1=max(zoom_y)+0.2,
    line=dict(color='red', width=2, dash='dash'),
    fillcolor='rgba(255,0,0,0.1)'
)

# 配置子图布局(右上角位置)
fig.update_layout(
    xaxis2=dict(
        domain=[0.6, 0.95],
        anchor='y2',
        title='X(放大)'
    ),
    yaxis2=dict(
        domain=[0.6, 0.95],
        anchor='x2',
        title='Y(放大)'
    ),
    title='带内嵌放大图的Plotly可视化',
    xaxis_title='X轴',
    yaxis_title='Y轴',
    showlegend=True
)

# 显示图形
fig.show()

关键细节说明

  • 子图坐标轴配置:通过xaxis2和yaxis2定义子图坐标轴,domain参数控制子图在主图中的相对位置(取值范围0-1)
  • 放大区域标记:用add_shape()添加矩形,通过x0/x1和y0/y1指定范围,半透明填充增强辨识度
  • 数据截取:通过布尔索引zoom_mask筛选目标区域数据,确保子图只展示需要放大的内容

内容的提问来源于stack exchange,提问作者mykahveli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:01:18