matplotlib设置中文的几种常见方法

本文介绍如何在Matplotlib中设置中文显示,包括通过matplotlib.rc、修改默认字体文件和使用font_manager的方法,适用于Windows、Linux和mac系统。
在Windows/Linux系统中,通过matplotlib.rc可以来设置中文显示
from matplotlib import pyplot as plt
import random
import matplotlib

#标题设置中文
matplotlib.rc("font",family='MicroSoft YaHei',weight='bold')
#另一种中文设置方法
# font = {'family' : 'MicroSoft YaHei',
#         'weight' : 'bold',
#         'size'   : 15}
# matplotlib.rc("font",**font)

#任意选取120个大小为20-35的数字
x = range(0,120)
y = [random.randint(20,35) for i in range(120)]

#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)

#设置x轴
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45)#rotation旋转的度数

plt.show()

运行效果:
在这里插入图片描述

在Windows/Linux系统中,设置中文默认显示(编写代码时无需通过matplotlib.rc就可以实现中文显示)。步骤如下:

首先找到中文字体(一般计算机自带字体在C:\Windows\Fonts中),下面将以字体:黑体 常规(simhei)为例。
在这里插入图片描述

将simhei字体文件拷贝到matplotlib\mpl-data\fonts\ttf目录中
在这里插入图片描述
查找修改默认字体文件的路径(利用Python)

>>> import matplotlib
>>> matplotlib.matplotlib_fname()
'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'

打开matplotlibrc文件,删除font.family前面的#并将冒号后面改为simhei;删除font.sans-serif前面的#并在冒号后面添加simhei,保存后再运行。

font.family         : simhei
#font.style          : normal
#font.variant        : normal
#font.weight         : normal
#font.stretch        : normal
#font.serif          : DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
font.sans-serif     : simhei,DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
#font.cursive        : Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, cursive
#font.fantasy        : Comic Sans MS, Chicago, Charcoal, ImpactWestern, Humor Sans, xkcd, fantasy
#font.monospace      : DejaVu Sans Mono, Bitstream Vera Sans Mono, Computer Modern Typewriter, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace

代码块:

from matplotlib import pyplot as plt
import random

#任意选取120个大小为20-35的数字
x = range(0,120)
y = [random.randint(20,35) for i in range(120)]

#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)

#设置x轴
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45)
plt.show()

运行结果在这里插入图片描述

在Windows/Linux/mac系统中,通过matplotlib下的font_manager可以来设置中文显示

在这里插入图片描述

from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

#设置中文
my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/simhei.ttf')

#任意选取120个大小为20-35的数字
x = range(0,120)
y = [random.randint(20,35) for i in range(120)]

#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)

#设置x轴
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3],_xtick_labels[::3],FontProperties = my_font,rotation=45)
plt.show()

运行结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值