python--matplotlib显示中文问题(四种方法)

python27中matplotlib并不支持直接使用中文,此处提供四种方法解决这个问题:

Method 1:

  在代码中插入以下三行代码:

1 from pylab import *
2 mpl.rcParams['font.sans-serif']=['SimHei']
3 mpl.rcParams['axes.unicode_minus']=False

经实测,这种解决办法会引发一个问题就是,就是同时导入numpypylab两个模块的所有方法时,需要"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

原文地址:https://www.cnblogs.com/cygalaxy/p/6839994.html