本文实例讲述了Python使用matplotlib绘图无法显示中文问题的解决方法。分享给大家供大家参考,具体如下:
在python中,默认情况下是无法显示中文的,如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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.ax1.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.ax1 = 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() createPlot() |
得到图像如下:
产生中文乱码的原因就是字体的默认设置中并没有中文字体,所以我们只要手动添加中文字体的名称就可以了
手动增加如下代码
1
2
|
from pylab import * mpl.rcParams[ 'font.sans-serif' ] = [ 'SimHei' ] |
源代码修改如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import matplotlib.pyplot as plt from pylab import * mpl.rcParams[ 'font.sans-serif' ] = [ 'SimHei' ] # 定义文本框和箭头格式 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.ax1.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.ax1 = 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() createPlot() |
最终得到图像
成功!
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://blog.csdn.net/u013038499/article/details/52449768