如何绘制含阿拉伯语标题的图表 实现xlabel/ylabel/legend阿拉伯语显示
Matplotlib阿拉伯语文本正常显示方案
- 首先安装所需依赖库:
pip install arabic-reshaper python-bidi
- 实现逻辑:阿拉伯语为从右到左书写的语言,且存在字母连写变形规则,默认matplotlib无法直接正确渲染,需要先对文本做字形变形处理,再调整书写方向后才能正常显示。
- 完整可运行示例代码:
import matplotlib.pyplot as plt import arabic_reshaper from bidi.algorithm import get_display # 阿拉伯语文本预处理函数 def reshape_ar_text(text): # 处理阿拉伯语字母连写变形 reshaped = arabic_reshaper.reshape(text) # 调整为从右到左的书写顺序 return get_display(reshaped) # 配置支持阿拉伯语的字体,可替换为你设备上已有的支持阿拉伯语的字体 plt.rcParams['font.family'] = 'Noto Naskh Arabic' # 演示数据 x = [1, 2, 3, 4, 5] y1 = [2, 4, 1, 5, 3] y2 = [3, 1, 4, 2, 5] # 绘图 plt.plot(x, y1, label=reshape_ar_text('السلسلة الأولى')) plt.plot(x, y2, label=reshape_ar_text('السلسلة الثانية')) # 设置阿拉伯语标签、标题、图例 plt.title(reshape_ar_text('مخطط تجريبي للعلاقة بين المتغيرات')) plt.xlabel(reshape_ar_text('المحور الأفقي')) plt.ylabel(reshape_ar_text('المحور العمودي')) plt.legend() plt.show()
- 注意事项:
- 所有需要显示的阿拉伯语文本都需要先经过预处理函数处理后再传入matplotlib参数,否则会出现顺序颠倒、字母不连写的问题
- 如果文本显示为方块,请确认你设置的字体包含阿拉伯语字符集,也可以手动指定字体路径避免系统找不到字体的问题
内容的提问来源于stack exchange,提问作者man55
相关产品推荐
相关产品推荐

