如何在SHAP柱状图中正常显示孟加拉语文字?
解决SHAP柱状图无法显示孟加拉语的问题
SHAP图表无法正常显示孟加拉语,本质是matplotlib默认未加载支持孟加拉语的字体,按以下步骤配置即可解决:
步骤1:确保系统有支持孟加拉语的字体
先确认你的系统中安装了支持孟加拉语的字体,比如:
- Noto Sans Bengali(Google开源字体,兼容性好)
- SolaimanLipi(常用孟加拉语字体)
Windows/macOS用户可直接从系统字体库启用,Linux用户可通过包管理器安装(例如Ubuntu用sudo apt install fonts-noto-sans-bengali)。如果没有现成字体,可从官方渠道下载后安装。
步骤2:在代码中配置matplotlib使用孟加拉语字体
在调用SHAP绘图代码前,添加matplotlib字体配置代码,两种方式任选其一:
方式1:直接指定字体名称
如果系统已安装目标字体,直接设置字体家族:
import matplotlib.pyplot as plt # 设置matplotlib默认字体为支持孟加拉语的字体 plt.rcParams['font.family'] = 'Noto Sans Bengali' # 原SHAP分析及绘图代码 pred = transformers.pipeline("text-classification", model=model, tokenizer=tokenizer, device=0, return_all_scores=True) explainer = shap.Explainer(pred) shap_values = explainer(list(X_val)[:5]) shap.plots.bar(shap_values[:, :, '2'].mean(0))
方式2:指定本地字体文件路径
如果字体未在系统全局注册,可直接指定字体文件路径:
import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties # 替换为你的孟加拉语字体文件路径 bengali_font = FontProperties(fname="/path/to/NotoSansBengali-Regular.ttf") plt.rcParams['font.properties'] = bengali_font # 原SHAP分析及绘图代码 pred = transformers.pipeline("text-classification", model=model, tokenizer=tokenizer, device=0, return_all_scores=True) explainer = shap.Explainer(pred) shap_values = explainer(list(X_val)[:5]) shap.plots.bar(shap_values[:, :, '2'].mean(0))
额外注意事项
- 若图表文字仍显示异常,可尝试调整字号:
plt.rcParams['font.size'] = 12 - 确保使用的matplotlib版本≥3.0,避免旧版本的字体兼容问题
内容的提问来源于stack exchange,提问作者Tanjim Taharat Aurpa
相关产品推荐
相关产品推荐

