zoukankan      html  css  js  c++  java
  • Python实现matplotlib显示中文的方法详解

    文实例讲述了Python实现matplotlib显示中文的方法。分享给大家供大家参考,具体如下:

    【注意】

    可能与本文主题无关,不过我还是想指出来:使用matplotlib库时,下面两种导入方式是等价的(我指的是等效,当然这个说法可以商榷:)

    1
    import matplotlib.pyplot as plt
    1
    import pylab as plt

    【效果图】

    【方式一】FontProperties

    1
    2
    3
    4
    5
    6
    7
    8
    import matplotlib.pyplot as plt
    from matplotlib.font_manager import FontProperties # 步骤一
    # ...
    font = FontProperties(fname=r"c:windowsfontssimsun.ttc", size=14) # 步骤二
    plt.xlabel("x轴", fontproperties=font) # 步骤三
    plt.ylabel("y轴", fontproperties=font)
    plt.title("标题", fontproperties=font)
    plt.show()

    总的来说,很丑陋。

    【方式二】 fontproperties

    1
    2
    3
    4
    5
    6
    import matplotlib.pyplot as plt
    # ...
    plt.xlabel("x轴")
    plt.ylabel("y轴", fontproperties="SimSun") # 步骤一  (宋体)
    plt.title("标题", fontproperties="SimHei") #     (黑体)
    plt.show()

    灵活,另一个优点:不污染全局字体设置

    【方式三】rcParams

    1
    2
    3
    4
    5
    6
    7
    8
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
    plt.rcParams['axes.unicode_minus'] = False  # 步骤二(解决坐标轴负数的负号显示问题)
    #...
    plt.xlabel("x轴")
    plt.ylabel("y轴")
    plt.title("标题")
    plt.show()

    简洁的用法。缺点:污染全局字体设置。(所以需要第二步骤)

    【方式四】rc

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import matplotlib.pyplot as plt
    font = {'family' : 'SimHei',
        'weight' : 'bold',
        'size'  : '16'}
    plt.rc('font', **font)        # 步骤一(设置字体的更多属性)
    plt.rc('axes', unicode_minus=False) # 步骤二(解决坐标轴负数的负号显示问题)
    #...
    plt.xlabel("x轴")
    plt.ylabel("y轴")
    plt.title("标题")
    plt.show()

    灵活的用法。缺点:影响全局字体(所以需要第二步骤)

    【总结】

    方式二用时才设置,且不会污染全局字体设置,更灵活
    方式三、方式四不需要对字体路径硬编码,而且一次设置,多次使用,更方便。

    【测试代码】

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import numpy as np
    import matplotlib.pyplot as plt
    font = {'family' : 'DFKai-SB',
        'weight' : 'bold',
        'size'  : '16'}
    plt.rc('font', **font) # pass in the font dict as kwargs
    plt.rc('axes',unicode_minus=False)
    x = np.linspace(0, 10, 1000)
    y = np.sin(x)
    z = np.cos(x**2)
    plt.figure(figsize=(8,4))
    plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
    plt.plot(x,z,"b--",label="$cos(x^2)$")
    plt.xlabel("x轴")
    plt.ylabel("y轴")
    plt.title("标题")
    plt.ylim(-1.2,1.2)
    plt.legend()
    plt.show()

    运行结果:

    【附录】

    一些中文字体的英文名

    宋体 SimSun
    黑体 SimHei
    微软雅黑 Microsoft YaHei
    微软正黑体 Microsoft JhengHei
    新宋体 NSimSun
    新细明体 PMingLiU
    细明体 MingLiU
    标楷体 DFKai-SB
    仿宋 FangSong
    楷体 KaiTi
    隶书 LiSu
    幼圆 YouYuan
    华文细黑 STXihei
    华文楷体 STKaiti
    华文宋体 STSong
    华文中宋 STZhongsong
    华文仿宋 STFangsong
    方正舒体 FZShuTi
    方正姚体 FZYaoti
    华文彩云 STCaiyun
    华文琥珀 STHupo
    华文隶书 STLiti
    华文行楷 STXingkai
    华文新魏 STXinwei
  • 相关阅读:
    git_02_git常用操作命令
    git_01_上传第一个项目至git
    Jenkins持续集成_04_解决HTML测试报告样式丢失问题
    Jenkins持续集成_03_添加测试报告
    Jenkins持续集成_02_添加python项目&设置定时任务
    Jenkins持续集成_01_Mac安装配置
    Mac获取Jenkins管理员初始密码
    (appium+python)UI自动化_10_adb常用命令
    安卓monkey自动化测试,软硬回车
    冒烟测试
  • 原文地址:https://www.cnblogs.com/HGNET/p/15087194.html
Copyright © 2011-2022 走看看