解决python使用matplotlib绘图中文乱码

3,131 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

  • Python编程中,我们常常需要使用matplotlib绘图(科研论文、数据分析等),当我们需要给标题或坐标等设置中文描述时,采用默认的matplotlib设置会遇到显示成方框形的问题,对此,需要通过修改matplotlib配置文件或者直接在代码中设置指定中文字体来解决这个问题,本文将分别介绍两种方法的具体步骤,以及方法的对比!
  • 解决方法有两类:永久生效、临时设置

如果本文对您有帮助,不妨一键三连哟!您的支持和关注是博主创作的动力!

参考资料

www.pianshen.com/article/296…

解决方法(动态设置字体)

  • 永久设置:修改matplotlib配置文件

    • 查看配置文件路径: 注:如果使用conda虚拟环境时,执行时注意进入相应的环境后再执行以下命令,否则修改的配置文件可能不是对应使用的环境!
    import matplotlib
    matplotlib.matplotlib_fname()
    
    • 向ttf文件夹添加中文字体【本文设置simhei字体(点击下载)

    • 修改配置文件:

      ①去掉注释:image.png

      ②去掉注释并添加中文字体名(向ttf文件夹添加的中文字体名): image.png

      ③去掉注释:image.png

  • 临时设置:在代码中指定字体(方便自定义字体,个人推荐)

    import matplotlib
    matplotlib.matplotlib_fname()
    
    • 代码中设置绘图的字体
    import matplotlib
    
    matplotlib.rcParams['font.sans-serif'] = ['SimHei']
    matplotlib.rcParams['font.family']='sans-serif'
    #解决负号'-'显示为方块的问题
    matplotlib.rcParams['axes.unicode_minus'] = False
    
    • 之后即可正常绘图,设置中文信息了
  • 方法对比:

方法临时修改永久修改
灵活性灵活修改字体固定设置字体
便捷性每个py文件均需要设置一次设置,永久生效