在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()
运行结果

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

被折叠的 条评论
为什么被折叠?



