如何修复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
相关产品推荐
相关产品推荐

