• pyplot文本显示


    pyplot文本显示

    pyplot中文字符显示

    pyplot默认不支持中文字符,因为默认字体是sans-serif,英文字体不能显示中文

    方法1,修改需要输出中文字符的地方

    在有中文输出的地方,添加属性:fontproperties

    • 优点,使用方便,影响范围可控
    • 缺点:不是所有输出中文的方法都有fontProperties属性,例如图例中文,没有的时候,仍需使用方法2
    import matplotlib.pyplot as plt
    
    plt.plot([3,1,5,4,2])
    plt.xlabel('X轴值')
    plt.ylabel('Y轴值',fontproperties='SimHei')
    
    plt.show()

    方法2,修改全局默认字体

    • 优点:适用于所有中文乱码情况
    • 缺点:修改后影响本工作空间内所有代码,本次运行中删除代码也不会恢复默认,如想恢复默认可将字体名改回系统默认的sans-serif

    例子:

    import matplotlib.pyplot as plt
    
    import matplotlib #载入matplotlib完整库
    matplotlib.rcParams['font.family']='Microsoft Yahei' #字体,改为微软雅黑,默认 sans-serif
    matplotlib.rcParams['font.size']=32 #字体大小,整数字号,默认10
    
    plt.plot([3,1,5,4,2])
    plt.xlabel('X axis')
    plt.ylabel('Y轴值')
    
    plt.show()

    一些系统通用中文字体名称(英文名称)

    • Microsoft Yahei 微软雅黑,推荐
    • SimHei 黑体(某些符号可能会出问题,例如负号)
    • Kaiti 楷体
    • FangSong 仿宋

    pyplot常用文本显示函数

    • plt.xlabel() X轴文本标签
    • plt.ylabel() Y轴文本标签
    • plt.title() 图表标题
    • plt.text() 任意位置增加文本
    • plt.annotate() 任意位置增加带箭头的注释文本
      • plt.annotate(string,xy=arrow_crd,xytext=text_crd,arrowprops=dict)
      • string:要显示的字符串
      • xy:箭头所在的位置
      • xytext:文本显示的位置
      • arrowprops:字典类型,定义了整个元素显示的一些属性

    注:当字符串里有反斜杠等转义特殊字符时,字符串前加r,表示显示原始字符串

    例子:

    import matplotlib.pyplot as plt
    
    plt.plot([3,1,5,4,2])
    
    plt.xlabel(r'X axis') #字符串前加r显示原始字符串
    
    plt.ylabel('纵轴值',fontproperties='SimHei',color='#00ff00',fontsize='24')
    
    plt.title('图表标题 $a^{2}+b^{2}=C^{2}$',fontproperties='SimHei') #可以使用$引入一部分latex文本排版语法和公式
    
    plt.text(0.5,3,'任意位置文本',fontproperties='SimHei',fontsize='24',rotation=45) #任意文本的x,y坐标值(可用latex语法),旋转角度
    
    plt.annotate(
        '这里转折', #显示字符串
        fontproperties='SimHei', # 中文字体
        xy=(3,4), # 箭头位置
        xytext=(3.5,4.5), # 文本位置
        arrowprops=dict(facecolor='red',shrink=0.1,width=2) # facecolor:箭头颜色;shrink:箭头的起始和结束位置两侧的空白大小;箭头宽度
    )
    
    plt.show()

  • 相关阅读:
    docker笔记(1)
    解决MySQL8 #1227 – Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this ...
    nginx if判断&&和||写法
    泡泡后台Couchbase缓存使用经验分享
    ARTS-WEEK-007
    ARTS-WEEK-006
    ARTS-WEEK-005
    ARTS-WEEK-004
    ARTS-WEEK-003
    总结httpclient资源释放和连接复用
  • 原文地址:https://www.cnblogs.com/yoyo1216/p/10131637.html
Copyright © 2020-2023  润新知