zoukankan      html  css  js  c++  java
  • matplotlib 中文乱码的解决方法

    关于报错信息

    Glyph 26426 missing from current font.
    这个错误的原因是:本地没有可支持中文字体显示的配置文件,所以第一步需要先去下载相关的配置文件。
    

    下载链接

    https://www.wfonts.com/font/simhei
    
    我们需要使用里面的 SimHei.ttf 文件
    

    查找 matplotlib 的字体库

    >>> import matplotlib
    >>> print(matplotlib.matplotlib_fname())
    /root/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc
    
    注意:
    	这里路径的指向是 matplotlib 的配置文件,字体库在同级目录 mpl-data 下 fonts/ttf 文件夹,我们可以将准备好的 SimHei.ttf 拷贝到 fonts/ttf/ 目录下。
    

    代码中的使用

    import matplotlib.pyplot as plt
    from matplotlib.font_manager import *
    
    my_font = FontProperties(fname='/root/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf/SimHei.ttf')   # 目录要更改为自己的
    plt.rcParams['axes.unicode_minus'] = False
    
    # 用数组绘图
    import numpy as np
    
    t = np.arange(0, 5, 0.2)
    # 绘制三条线
    # 线条 1
    x1 = y1 = t
    
    # 线条 2
    x2 = x1
    y2 = t**2
    
    # 线条 3
    x3 = x1
    y3 = t**3
    
    # 绘图
    Linelist = plt.plot(x1, y1, x2, y2, x3, y3)
    
    # 使用 setp 方法可以同时设置多条线条的属性
    plt.setp(Linelist, color='blue')
    plt.xlabel('x轴坐标', fontproperties=my_font)    # 添加 fontproperties 参数,下同
    plt.ylabel('y轴坐标', fontproperties=my_font)
    plt.title('标题', fontproperties=my_font)
    plt.annotate('这里是注释', xy=(3, 27), xytext=(3, 50), arrowprops=dict(facecolor='black', shrink=0.01), fontproperties=my_font)
    plt.show()
    

  • 相关阅读:
    nodejs难点
    react 组件化
    vue router & vuex
    vue源码思考
    cookie & session
    servlet
    Hashmap
    Zookeeper+Kafka+flink+socket
    flink consumer can realize kafka avro with overwriting kafkaDeseriler, and executor multithread and genretic extends
    flink kafka consumer with avro schema. handling null
  • 原文地址:https://www.cnblogs.com/Earth-SmaThing/p/15449089.html
Copyright © 2011-2022 走看看