Python实现matplotlib显示中文的方法详解

作者:罗兵 时间:2021-03-27 18:39:22 

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

【注意】

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


import matplotlib.pyplot as plt


import pylab as plt

【效果图】

Python实现matplotlib显示中文的方法详解

【方式一】FontProperties


import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties # 步骤一
# ...
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14) # 步骤二
plt.xlabel("x轴", fontproperties=font) # 步骤三
plt.ylabel("y轴", fontproperties=font)
plt.title("标题", fontproperties=font)
plt.show()

总的来说,很丑陋。

【方式二】 fontproperties


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

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

【方式三】rcParams


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


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()

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

【总结】

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

【测试代码】


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()

运行结果:

Python实现matplotlib显示中文的方法详解

【附录】

一些中文字体的英文名

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

希望本文所述对大家Python程序设计有所帮助。

来源:http://www.cnblogs.com/hhh5460/p/4323985.html

标签:Python,matplotlib,显示中文
0
投稿

猜你喜欢

  • Python imread、newaxis用法详解

    2021-10-09 15:44:08
  • 好的Python培训机构应该具备哪些条件

    2022-06-22 14:52:57
  • Python threading.local代码实例及原理解析

    2021-09-03 06:14:07
  • Python趣味挑战之用pygame实现飞机塔防游戏

    2022-07-18 04:00:02
  • php中debug_backtrace、debug_print_backtrace和匿名函数用法实例

    2023-06-11 23:08:24
  • 基于jQuery实现的立体文字渐变效果

    2009-05-18 19:15:00
  • pyqt 实现在Widgets中显示图片和文字的方法

    2021-12-25 07:28:16
  • 在SQL Server数据库开发中的十大问题

    2008-12-18 14:39:00
  • Python中类的继承代码实例

    2023-11-26 05:29:14
  • 详解python发送各类邮件的主要方法

    2023-07-27 11:08:50
  • 超简单的Python HTTP服务

    2023-01-22 06:19:15
  • 显示你个性的鼠标指针

    2011-06-14 09:41:41
  • python如何往列表头部和尾部添加元素

    2021-12-17 07:05:17
  • python logging类库使用例子

    2023-10-31 11:17:11
  • Linux安装卸载Mysql数据库

    2011-01-29 16:45:00
  • Go语言实现文件上传

    2023-07-08 18:26:38
  • Django2.1.3 中间件使用详解

    2023-11-06 19:46:00
  • ASP实例:即时显示当前页面浏览人数

    2008-04-19 22:02:00
  • Python统计分析模块statistics用法示例

    2021-01-20 08:44:16
  • 如何运用python读写CSV文件

    2021-11-13 04:35:36
  • asp之家 网络编程 m.aspxhome.com