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

yipeiwu_com5年前Python基础

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

【注意】

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

import matplotlib.pyplot as plt

import pylab as plt

【效果图】

【方式一】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()

运行结果:

【附录】

一些中文字体的英文名

宋体 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相关内容可查看本站专题:《Python数学运算技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

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

相关文章

flask框架单元测试原理与用法实例分析

flask框架单元测试原理与用法实例分析

本文实例讲述了flask框架单元测试原理与用法。分享给大家供大家参考,具体如下: 为什么要测试? Web程序开发过程一般包括以下几个阶段:[需求分析,设计阶段,实现阶段,测试阶段]。其中...

在Python中操作列表之list.extend()方法的使用

 extend()方法追加序列内容到列表。 语法 以下是extend()方法的语法: list.extend(seq) 参数    ...

CentOS安装pillow报错的解决方法

安装pillow出现以下问题: ValueError: jpeg is required unless explicitly disabled using --disable-jpe...

python pygame实现2048游戏

python pygame实现2048游戏

实现2048相对来说比较简单,用4*4的二维数组保存地图,pygame.key.get_pressed()获取键盘操作,详见代码。 效果图 代码 # -*- coding: ut...

如何利用Pyecharts可视化微信好友

如何利用Pyecharts可视化微信好友

前言 最近在研究 pyecharts  的用法,它是 python 的一个可视化工具,然后就想着结合微信来一起玩 不多说,直接看效果: 环境配置 pip ins...