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

如何修复Plotly导出图片时数学公式坐标轴字体大小失效问题

解决Plotly+Kaleido导出时数学公式tick字体大小不生效的问题

针对你遇到的Kaleido导出图片时,x轴数学公式标签不响应tickfont尺寸设置的问题,提供以下几种可行解决方案:

1. 统一通过tickformat添加LaTeX尺寸命令

这种方法不需要修改原x轴数据,通过配置tickformat给所有数学公式标签统一套上LaTeX字体尺寸命令:

import plotly.graph_objects as go

fig = go.Figure()
# x轴数据仅保留LaTeX符号,去掉外层$
fig.add_trace(go.Box(x = [r"\mu", r"\sigma"], y=[10, 14]))
fig.update_layout(
    xaxis=dict(
        tickfont=dict(size=24),
        # 用%s占位符替换原tick内容,添加\LARGE尺寸命令和外层$
        tickformat=r"$\LARGE %s$"
    )
)
fig.show()
fig.write_image("this_image.png")

原理:Kaleido对嵌入在tickformat中的LaTeX尺寸命令解析优先级更高,能正确渲染出指定大小的数学符号。

2. 升级Kaleido到最新稳定版

Kaleido 1.0.0存在LaTeX渲染的兼容性bug,升级到1.0.3及以上版本后,原生tickfont设置即可同时作用于普通文本和数学公式:

pip install --upgrade kaleido

升级后无需修改原有代码,直接运行你提供的示例代码,数学公式的字体大小就会跟随tickfont的设置生效。

3. 手动指定tick文本并嵌入LaTeX字体大小命令

如果上述两种方法不适用,可以通过tickvals和ticktext手动定义每个刻度的内容,直接在LaTeX命令中指定字体大小:

import plotly.graph_objects as go

fig = go.Figure()
# 用数字作为x轴原始值,方便后续映射自定义tick
fig.add_trace(go.Box(x = [0, 1], y=[10, 14]))
fig.update_layout(
    xaxis=dict(
        tickvals=[0, 1],
        # 使用LaTeX原生\fontsize命令指定大小,24pt为字体尺寸,28pt为行高
        ticktext=[r"$\fontsize{24pt}{28pt}\selectfont \mu$", r"$\fontsize{24pt}{28pt}\selectfont \sigma$"],
        tickfont=dict(size=24) # 对普通文本标签依然有效
    )
)
fig.show()
fig.write_image("this_image.png")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:37:05