各位用户为了找寻关于Python中matplotlib中文乱码解决办法的资料费劲了很多周折。这里教程网为您整理了关于Python中matplotlib中文乱码解决办法的相关资料,仅供查阅,以下为您介绍关于Python中matplotlib中文乱码解决办法的详细内容
Matplotlib是Python的一个很好的绘图包,但是其本身并不支持中文(貌似其默认配置中没有中文字体),所以如果绘图中出现了中文,就会出现乱码。
matplotlib绘制图像有中文标注时会有乱码问题。
实例代码:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19import
matplotlib
import
matplotlib.pyplot as plt
#定义文本框和箭头格式
decisionNode
=
dict
(boxstyle
=
"sawtooth"
,fc
=
"0.8"
)
leafNode
=
dict
(boxstyle
=
"round4"
,fc
=
"0.8"
)
arrow_args
=
dict
(arrowstyle
=
"<-"
)
#绘制带箭头的注解
def
plotNode(nodeTxt,centerPt,parentPt,nodeType):
createPlot.axl.annotate(nodeTxt,xy
=
parentPt,xycoords
=
'axes fraction'
,xytext
=
centerPt,textcoords
=
'axes fraction'
,va
=
"center"
,ha
=
"center"
,bbox
=
nodeType,arrowprops
=
arrow_args)
def
createPlot():
fig
=
plt.figure(
1
,facecolor
=
'white'
)
fig.clf()
createPlot.axl
=
plt.subplot(
111
,frameon
=
False
)
plotNode(U
'决策点'
,(
0.5
,
0.1
),(
0.1
,
0.5
),decisionNode)
plotNode(U
'叶节点'
,(
0.8
,
0.1
),(
0.3
,
0.8
),leafNode)
plt.show()
解决办法:代码中引入字体
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22import
matplotlib.pyplot as plt
import
matplotlib
#定义自定义字体,文件名是系统中文字体
myfont
=
matplotlib.font_manager.FontProperties(fname
=
'C:/Windows/Fonts/simkai.ttf'
)
#解决负号'-'显示为方块的问题
matplotlib.rcParams[
'axes.unicode_minus'
]
=
False
decisionNode
=
dict
(boxstyle
=
"sawtooth"
,fc
=
"0.8"
)
leafNode
=
dict
(boxstyle
=
"round4"
,fc
=
"0.8"
)
arrow_args
=
dict
(arrowstyle
=
"<-"
)
def
plotNode(nodeTxt,centerPt,parentPt,nodeType):
createPlot.axl.annotate(nodeTxt,xy
=
parentPt,xycoords
=
'axes fraction'
,xytext
=
centerPt,textcoords
=
'axes fraction'
,va
=
"center"
,ha
=
"center"
,bbox
=
nodeType,arrowprops
=
arrow_args,fontproperties
=
myfont)
def
createPlot():
fig
=
plt.figure(
1
,facecolor
=
'white'
)
fig.clf()
createPlot.axl
=
plt.subplot(
111
,frameon
=
False
)
plotNode(U
'决策点'
,(
0.5
,
0.1
),(
0.1
,
0.5
),decisionNode)
plotNode(U
'叶节点'
,(
0.8
,
0.1
),(
0.3
,
0.8
),leafNode)
plt.show()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.jianshu.com/p/f8c9d04e537e