import matplotlib as mpl import matplotlib.pyplot as plt zhfont1 = mpl.font_manager.FontProperties(fname=r'C:\Windows\Fonts\STKAITI.TTF',size=50) zhfont2 = mpl.font_manager.FontProperties(fname=r'C:\Windows\Fonts\STCAIYUN.TTF',size=100) fig,ax1=plt.subplots() ax1.bar(["a","b","c"],[1,2,3]) ax1.set_ylabel(u'演示中文字体1',fontproperties=zhfont1) ax1.set_xlabel(u"演示华文彩云",fontproperties=zhfont2)
想学习更多可以自己查阅python帮助文件
help(mpl.font_manager.FontProperties)
Help on class FontProperties in module matplotlib.font_manager:
class FontProperties(builtins.object)
| FontProperties(family=None, style=None, variant=None, weight=None, stretch=None, size=None, fname=None)
相关链接:
https://www.pinggu.com/post/details/5f3ca5fa49796226c2293a80








ax1.set_title("score1",fontsize=80,fontname='Computer Modern Sans Serif')
这行代码,然后下图是效果

你给坐标系加了一个标题,给图纸加了一个标题,所以两个标题可能重叠在一起,你只需要加一个标题就行
ax1.set_title #给坐标系加标题
fig.suptitle #给图纸(画布)加标题
你先去掉一个标题再运行

我按照您说的思路,删除了之前定义字体的那行代码,然后想更改图表的字体,不明白为什么出来的图是这样:
1,标题虽然成功出来了,但是依然有报错提示
2,原来的标题依然还在

用下面这种方式设定要添加的标题字体也比较方便。设定的合适的话也不会出现乱码,但是April这个字体还是不能正确显示。
import matplotlib as mpl
import matplotlib.pyplot as plt
fig,ax1=plt.subplots()
ax1.bar(["a","b","c"],[1,2,3],color='r')
ax1.plot(["a","b","c"],[1,2,3],color=(0,0,0,1),linewidth=10)
ax1.set_title("测试标题",fontsize=80,fontname="April")
#在坐标系的指定位置添加一些文本
ax1.text(0,1,'1黑体',fontsize=40,fontname="SimHei",rotation=0,va="bottom")
#前面两个参数是文字的位置,第一个参数是x坐标,第二个参数是y坐标。
ax1.text(1,1,'2宋体',fontsize=40,fontname="SimSun",rotation=0,va="bottom")
ax1.text(0,2,'3楷体',fontsize=40,fontname="KaiTi",rotation=0,va="bottom")
ax1.text(1,2,'4微软雅黑',fontsize=40,fontname="Microsoft Yahei",rotation=0,va="bottom")

问:试了'font.serif'的所有字体,没有一个可以用
答:我试了一下通过下面的方式定义中文字体的话,只能设定为SimHei,设定为其他字体的话都是不能正常显示汉字的。
plt.rcParams['font.sans-serif'] = ['Arial'] 显示错误 plt.rcParams['font.sans-serif'] = ['SimHei'] 显示正确
你要用这样的方式设定中文字体不能设定为其他,只能设定为SimHei字体。

问:我试了好几个字体,发现除了您最开始写的代码里面的'Simhei'字体外,其他字体基本都不支持,这个情况正常吗?
回复:是的出现这种情况是正常的,很多付费软件都有这个问题,中文很多格式没法设定只能设定一种或几种。你都试了哪些格式?列一下

问:
比如我想用'font.sans-serif'里面的'Arial'字体,那么我这么写代码的话:
plt.rcParams['font.sans-serif'] = ['Arial']
会报错,报错如下:想问下是我写的代码有问题吗?
答:
你代码没有问题是matplotlib库自身对中文的兼容问题,对一些特殊中文字体不支持,而恰好Arial就属于其中一个,所以你只能设定成其他字体。等几个月之后有可能维护matplotlib库的人员更新包的版本后会把这个功能完善好。

比如我想用'font.sans-serif'里面的'Arial'字体,那么我这么写代码的话:
plt.rcParams['font.sans-serif'] = ['Arial']
会报错,报错如下:想问下是我写的代码有问题吗?

我试了下,你如果想用微软雅黑只能用下面的命令,用其他命令出现的结果是不对的。 matplotlib这个库的中文文字定义部分是存在一些漏洞的。有的方法不一定能实现一些特殊的情况 import matplotlib as mpl import matplotlib.pyplot as plt 微软雅黑普通 = mpl.font_manager.FontProperties(fname=r'C:\Windows\Fonts\msyh.TTF',size=50) 微软雅黑加粗 = mpl.font_manager.FontProperties(fname=r'C:\Windows\Fonts\msyh.TTF',size=50) fig,ax1=plt.subplots() ax1.bar(["a","b","c"],[1,2,3]) ax1.set_ylabel(u'演示中文字体1',fontproperties=微软雅黑普通) ax1.set_xlabel(u'演示中文字体2',fontproperties=微软雅黑加粗)

import matplotlib as mpl import matplotlib.pyplot as plt #设定中文字体 plt.rcParams['font.sans-serif'] = ['STCAIYUN'] fig,ax1=plt.subplots() ax1.bar(["a","b","c"],[1,2,3],color='r') #画柱形图的时候可以通过color参数设定颜色,"r"是红色的简称 ax1.bar(["a","b","c"],[0.5,1,1.5],color='b') #"b"是蓝色的简称 #还可以这样设定,用四个数字指定,四个数字分别是,r饱和度,g饱和度,b饱和度,透明度 ax1.bar(["a","b","c"],[0.4,0.8,1],color=(1,0.5,0.5,0.8)) #如何想要配色好看,则需要一些美学知识。 #折线图颜色设定是一样的 ax1.plot(["a","b","c"],[1,2,3],color=(0,0,0,1),linewidth=10) ax1.set_title("测试标题",fontsize=80)
你通过rcParams修改了默认字体后,如果改的字体比较奇怪画出来的图形就会很奇怪,所有的文字和数字都会变成这个字体。