Matplotlib不能显示中文 — Font family [‘sans-serif’] not found警告

Matplotlib不能显示中文和正负号的问题 这两天被这个中文正负号的问题困扰了很久,网上的方法试了好多,然后并没有什么卵用 老规矩开发环境 操作系统:Ubuntu19.10 开发IDE: Pycharm20.1 开发工具:Anaconda python3.7 确定下面的问题前 请确定你的Python代码中有这两句话: Very 重要 plt.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False 遇到的报错(其实是警告) findfont: Font famil 在使用Matplotlib进行数据可视化时,可能会遇到一个问题,即无法正常显示中文字符和正负号,这通常会导致图表中的标签和轴标题显示为方框。这个问题的根源在于Matplotlib默认的字体库不包含中文字体,因此在尝试渲染中文字符时会抛出“Font family ['sans-serif'] not found”警告,并回退到可用的替代字体,如DejaVu Sans。 我们需要理解Matplotlib的字体管理机制。Matplotlib依赖于系统字体或自定义字体来呈现文本。在Python代码中,可以通过设置`matplotlib.rcParams`来指定使用特定的字体。例如,对于支持中文的字体,可以添加以下两行代码: ```python plt.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False ``` 这里,`font.sans-serif`参数指定了一个字体列表,当需要无衬线字体(sans-serif)时,Matplotlib会尝试使用列表中的字体。`SimHei`是支持中文的字体之一。`axes.unicode_minus`设置为`False`是为了确保负号能正确显示,而不是显示为方框。 然而,即使设置了这些参数,仍然可能遇到“Font family ['sans-serif'] not found”的警告,因为Matplotlib无法在系统或其配置路径中找到指定的字体文件。解决这个问题的一种方法是手动将中文字体文件添加到Matplotlib的字体目录,并更新配置文件。 以下是尝试解决此问题的一种方法,但可能不适用于所有情况: 1. 下载支持中文的字体文件,如`simhei.ttf`。 2. 找到Matplotlib的字体目录,通常位于Python安装路径下的`site-packages/matplotlib/mpl-data/fonts`。 3. 将下载的`simhei.ttf`文件复制到该字体目录中。 4. 编辑matplotlib的配置文件`matplotlibrc`,通常位于`site-packages/matplotlib/mpl-data`的上一级目录。取消注释`font.family`行,将其设置为`sans-serif`,并添加`SimHei`到`font.sans-serif`的列表中。 5. 同时,确保`axes.unicode_minus`设置为`False`。 6. 清除Matplotlib的缓存,通常在用户的`.cache/matplotlib`目录下,删除`matplotlib`子目录。 7. 重新运行程序,理论上应该能够正确显示中文和负号了。 然而,有时候这种方法可能不起作用。另一种解决方法是通过修改字体缓存文件`fontlist-v310.json`来避免查找字体的过程。在`~/.cache/matplotlib`目录下,找到这个文件,然后更新其内容,确保其中包含了你的中文字体。这通常涉及更新`ttflist`数组,使其包含`simhei.ttf`或其他支持中文的字体文件路径。 请注意,这些步骤可能因个人的系统配置、Python环境(如Anaconda)和字体库而略有不同。如果你在Ubuntu桌面版本上工作,可以使用图形界面的文本编辑器(如gedit)编辑配置文件;而在服务器版本中,可能需要使用命令行编辑器(如vim)。 要解决Matplotlib在Ubuntu环境下不能显示中文的问题,关键在于正确配置字体路径、更新配置文件,并确保清除缓存。在尝试各种解决方案时,记得每次更改后都要重新运行程序,甚至可能需要重启环境以使更改生效。如果上述方法均无效,你可能需要检查系统的字体设置,或者考虑安装额外的中文字体库以支持Matplotlib。


























- qq_434628032023-03-18是Linux版本的

- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源


