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

在PaaS环境下如何用Plotly(Python)指定本地TTF文件为布局字体?

解决Plotly(Python)在PaaS环境使用本地TTF字体的方法

首先要明确:font_family参数需要的是字体名称(比如"微软雅黑"、"Roboto"),而非字体文件路径,这是你之前代码无效的核心原因。在无法手动安装字体的PaaS环境中,可通过代码临时加载本地TTF字体到系统字体缓存,再在Plotly中指定对应字体名称。

方法一:用matplotlib临时注册字体

借助matplotlib无需系统安装即可临时加载字体,步骤如下:

import pandas as pd
import plotly.express as px
from matplotlib.font_manager import FontProperties

# 加载本地TTF字体文件
font_path = "assets/your_font.ttf"
font_prop = FontProperties(fname=font_path)
# 获取字体的正式名称
font_name = font_prop.get_name()

# 生成图表
df = pd.DataFrame({"date": date, "data": data})
fig = px.area(df, x='date', y="data")

# 全局设置字体,也可单独指定标题、轴标签的字体
fig.update_layout(
    font_family=font_name,
    title_font_family=font_name,
    xaxis_title_font_family=font_name,
    yaxis_title_font_family=font_name
)

# 导出图片
fig.write_image(f"images/{file_name}.png")

方法二:用fontTools轻量注册字体

若不想依赖matplotlib,可使用fontTools库直接解析字体并注册:

  1. 先安装依赖:pip install fonttools
  2. 示例代码:
import pandas as pd
import plotly.express as px
from fontTools.ttLib import TTFont
import matplotlib.font_manager as fm

font_path = "assets/your_font.ttf"
# 解析TTF文件获取字体正式名称
ttf = TTFont(font_path)
font_name = ttf['name'].getDebugName(4)

# 将字体注册到系统字体缓存
fm.fontManager.addfont(font_path)

# 生成并配置图表
df = pd.DataFrame({"date": date, "data": data})
fig = px.area(df, x='date', y="data")
fig.update_layout(font_family=font_name)

fig.write_image(f"images/{file_name}.png")

注意事项

  • 确保TTF文件路径正确,PaaS环境中优先使用绝对路径,或确认相对路径指向的文件已被正确加载
  • 部分特殊字体需额外指定font-weight或font-style参数才能正常显示,可在update_layout中补充配置
  • 使用write_image时,需确保Plotly的渲染依赖(如kaleido)已正确安装,部分PaaS环境可能需要额外配置依赖环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:07:16