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

如何用Pandas的Plotly后端绘制多图?尺寸与颜色设置方法

Pandas + Plotly 实现多图布局、尺寸调整与颜色设置

问题背景

需要用Pandas结合Plotly后端实现2行1列、共享X轴的多图布局,解决当前代码中figsize无法调整图表尺寸的问题,同时掌握自定义图表颜色的方法。原Matplotlib实现的参考代码如下:

f, (ax1,ax2) = plt.subplots(2, 1, figsize=(8,5), sharex=True)
data.plot(y=['vl', 'bench'], title='Fonds vs Bench', ax=ax1)
data.plot(y='aum', title='AuM du fonds',ax=ax2);

1. 实现共享X轴的2行1列布局

Plotly后端与Matplotlib的布局逻辑不同,无法直接复用plt.subplots的方式,需借助Plotly的make_subplots创建子图框架,再将Pandas生成的图表轨迹添加到对应子图中:

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

# 切换Plotly为Pandas绘图后端
pd.options.plotting.backend = "plotly"

# 创建2行1列子图,开启X轴共享,设置子图标题
fig = make_subplots(
    rows=2, cols=1,
    shared_xaxes=True,
    subplot_titles=("Fonds vs Bench", "AuM du fonds")
)

# 生成第一个图表的轨迹并添加到第一行子图
chart1 = data.plot(y=['vl', 'bench'], title='')  # 关闭自动标题,使用子图统一标题
for trace in chart1.data:
    fig.add_trace(trace, row=1, col=1)

# 生成第二个图表的轨迹并添加到第二行子图
chart2 = data.plot(y='aum', title='')
for trace in chart2.data:
    fig.add_trace(trace, row=2, col=1)

# 统一调整整体布局并展示
fig.update_layout(title_text="组合分析图表")
fig.show()

2. 有效调整图表尺寸

Plotly不支持figsize参数(该参数为Matplotlib专属),需通过update_layout的width和height参数设置,单位为像素:

# 调整为近似8x5英寸的尺寸(按96dpi换算:8*96=768,5*96=480)
fig.update_layout(
    width=768,
    height=480,
    title_text="组合分析图表"
)
fig.show()

你可以根据需求直接修改width和height的数值,灵活调整图表大小。


3. 自定义图表颜色

方法1:在Pandas绘图时直接指定颜色

通过color参数传入颜色列表,与y轴列名一一对应:

chart1 = data.plot(
    y=['vl', 'bench'],
    color=['#E74C3C', '#2ECC71'],  # 自定义颜色(红色、绿色)
    title=''
)

方法2:添加轨迹后批量修改颜色

利用update_traces结合选择器精准修改指定轨迹的颜色:

# 修改'vl'系列为橙色,'bench'系列为蓝色
fig.update_traces(line=dict(color='#F39C12'), selector=dict(name='vl'))
fig.update_traces(line=dict(color='#3498DB'), selector=dict(name='bench'))

方法3:直接用Plotly API绘制(更灵活)

跳过Pandas的plot方法,直接使用Plotly的go.Scatter定义轨迹并设置颜色:

fig.add_trace(
    go.Scatter(
        x=data.index,
        y=data['vl'],
        name='vl',
        line=dict(color='#E74C3C')  # 自定义颜色
    ),
    row=1, col=1
)
fig.add_trace(
    go.Scatter(
        x=data.index,
        y=data['bench'],
        name='bench',
        line=dict(color='#2ECC71')
    ),
    row=1, col=1
)
fig.add_trace(
    go.Scatter(
        x=data.index,
        y=data['aum'],
        name='aum',
        line=dict(color='#9B59B6')
    ),
    row=2, col=1
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:45:34