Ubuntu18中,使用Python的matplotlib库设置simhei.ttf中文字体并显示

Ubuntu18中,使用Python的matplotlib库设置simhei.ttf中文字体并显示

  1. 首先,下载中文字体simhei.ttf
  2. 其次,需要知道当前使用的matplotlib库的环境配置
    即使用语句:
    import matplotlib
    print(matplotlib.matplotlib_fname())可得:
    我的目录如图
    可以推测出matplotlib的字体文件就在mpl-data/文件夹下的fonts/ttf/文件夹下。即路径:/home/peter/anaconda3/envs/py3torch1/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf
  3. 然后将字体文件simhei.ttf移动到ttf/文件夹下。
  4. 然后使用代码:
    from matplotlib.font_manager import _rebuild
    _rebuild()
    来重构字体库(执行了一次即可)。
  5. 最后,在Python程序中直接使用语句:
    plt.rcParams[‘font.sans-serif’]=[‘simhei’]
    即可设置中文字体并在使用matplotlib画图时显示中文字体。
### 如何使用Python代码下载安装SimHei.ttf字体 为了在Ubuntu系统上解决Matplotlib绘制图形时中文显示的问题,可以通过Python脚本自动完成SimHei.ttf字体的下载与安装过程。下面介绍一种实现方式。 #### 下载SimHei.ttf字体文件 可以利用`requests`模块来获取网络资源,将其保存至本地磁盘作为第一步操作: ```python import requests url = "https://gitcode.com/open-source-toolkit/c55ef/raw/master/SimHei.ttf" response = requests.get(url) with open("/tmp/SimHei.ttf", 'wb') as file: file.write(response.content) ``` 这段代码从指定链接下载SimHei.ttf字体文件存储于临时目录下[^1]。 #### 安装字体到系统中 接着通过命令行指令将刚才下载好的字体移动到系统的字体位置,这里假设目标路径为`/usr/share/fonts/truetype/noto/`: ```bash sudo mv /tmp/SimHei.ttf /usr/share/fonts/truetype/noto/ ``` 此步可通过调用subprocess.run()函数执行上述shell命令,在Python内部完成整个流程自动化处理: ```python import subprocess subprocess.run(['sudo', 'mv', '/tmp/SimHei.ttf', '/usr/share/fonts/truetype/noto/']) ``` 这一步骤确保了字体被正确放置到了操作系统能够识别的位置以便后续应用调用[^3]。 #### 更新字体缓存以及配置matplotlib参数设置 最后更新字体缓存使得新增加的字体生效;同时调整matplotlib的相关配置项让其支持中文字符渲染: ```python from pathlib import Path import shutil # 清除旧版matplotlib缓存数据 if (Path.home()/'.cache/matplotlib').exists(): shutil.rmtree(Path.home()/'.cache/matplotlib') # 设置matplotlib默认使用的字体样式和支持负号正常显示 import matplotlib matplotlib.rcParams['font.sans-serif']=['SimHei'] matplotlib.rcParams['axes.unicode_minus']=False ``` 以上就是完整的解决方案,它不仅实现了SimHei.ttf字体的在线获取和部署,还解决了matplotlib绘图过程中可能出现的文字编码问题。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值