python27中matplotlib并不支持直接使用中文,此处提供四种方法解决这个问题:
Method 1:
在代码中插入以下三行代码:
1 from pylab import * 2 mpl.rcParams['font.sans-serif']=['SimHei'] 3 mpl.rcParams['axes.unicode_minus']=False
经实测,这种解决办法会引发一个问题就是,就是同时导入numpy和pylab两个模块的所有方法时,需要"np.random()",才能正确使用random(),不知道问题出在哪里。可能是pylab模块会和numpy模块中的某些方法冲突。
Method 2:
1.找到matplotlibrc文件
C:Python26Libsite-packagesmatplotlibmpl-datamatplotlibrc(Windows) /usr/share/matplotlib/mpl-data/matplotlibrc (Linux)
2.找到以下两项,去掉#
font.family : sans-serif
font.sans-serif : Microsoft YaHei , Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif #添加“Microsoft YaHei”,该行指示缺省字体
3.在写python code的时在字符串前加上u,表示unicode编码,例如:
matplotlib绘制树形图:
1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 4 import matplotlib.pyplot as plt 5 ''' 6 解决python matplotlib画图无法显示中文的问题! 7 8 from pylab import * 9 mpl.rcParams['font.sans-serif']=['SimHei'] 10 mpl.rcParams['axes.unicode_minus']=False 11 ''' 12 ################################################### 13 decisionNode=dict(boxstyle="sawtooth",fc="0.8") 14 leafNode=dict(boxstyle="round4",fc="0.8") 15 arrow_args=dict(arrowstyle="<-") 16 17 def plotNode(nodeTxt,centerPt,parentPt,nodeType): 18 createPlot.ax1.annotate(nodeTxt,xy=parentPt, 19 xycoords='axes fraction', 20 xytext=centerPt,textcoords='axes fraction', 21 va="center",ha="center",bbox=nodeType,arrowprops=arrow_args) 22 def createPlot(): 23 fig=plt.figure(1,facecolor='white') 24 fig.clf() 25 createPlot.ax1=plt.subplot(111,frameon=False) 26 plotNode(u'决策节点',(0.5,0.1),(0.1,0.5),decisionNode) 27 plotNode(u'叶子节点',(0.8,0.1),(0.3,0.8),leafNode) 28 plt.show()
结果图:
Method 3
修改全局字体。
注意:必须 import matplotlib
Method 4
修改局部字体。
推荐使用:Method 4