zoukankan      html  css  js  c++  java
  • matplotlib显示中文

    【注意】

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

    import matplotlib.pyplot as plt
    import pylab as plt

    【效果图】

    【方式一】FontProperties

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

    总的来说,很丑陋。

    【方式二】 fontproperties

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

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

    【方式三】rcParams

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

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

    【方式四】rc

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

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

    【总结】

    方式二用时才设置,且不会污染全局字体设置,更灵活

    方式三、方式四不需要对字体路径硬编码,而且一次设置,多次使用,更方便。

     【测试代码】

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

    【附录】

    一些中文字体的英文名

    宋体     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

     
     
     
  • 相关阅读:
    appium 执行demo
    python自动化框架nose
    python深拷贝和浅拷贝的区别
    python实现拷贝指定文件到指定目录
    sql连接查询INNER JOIN,LEFT JOIN,RIGHT JOIN区别
    常用的算法
    python执行linux和window的命令
    K:java中properties文件的读写
    K:java中的hashCode和equals方法
    Q:记学习枚举过程中的一个小问题
  • 原文地址:https://www.cnblogs.com/ljt1412451704/p/14297149.html
Copyright © 2011-2022 走看看