zoukankan      html  css  js  c++  java
  • 【转】 Python 中,matplotlib绘图无法显示中文的问题

    在python中,默认情况下是无法显示中文的,如下代码:

    [python] view plain copy
     
    1. import matplotlib.pyplot as plt  
    2.   
    3. # 定义文本框和箭头格式  
    4. decisionNode = dict(boxstyle = "sawtooth", fc = "0.8")  
    5. leafNode = dict(boxstyle = "round4", fc = "0.8")  
    6. arrow_args = dict(arrowstyle = "<-")  
    7.   
    8. # 绘制带箭头的注解  
    9. def plotNode(nodeTxt, centerPt, parentPt, nodeType) :  
    10.     createPlot.ax1.annotate(nodeTxt, xy = parentPt, xycoords = 'axes fraction', xytext = centerPt, textcoords = 'axes fraction', va = 'center', ha = 'center', bbox = nodeType, arrowprops = arrow_args)  
    11.   
    12. def createPlot() :  
    13.     fig = plt.figure(1, facecolor='white')  
    14.     fig.clf()  
    15.     createPlot.ax1 = plt.subplot(111, frameon = False)  
    16.     plotNode(U'决策节点', (0.5, 0.1), (0.1, 0.5), decisionNode)  
    17.     plotNode(U'叶节点', (0.8, 0.1), (0.3, 0.8), leafNode)  
    18.     plt.show()  
    19.   
    20. createPlot()  

    得到图像如下:

    产生中文乱码的原因就是字体的默认设置中并没有中文字体,所以我们只要手动添加中文字体的名称就可以了

    手动增加如下代码

    [python] view plain copy
     
    1. from pylab import *  
    2. mpl.rcParams['font.sans-serif'] = ['SimHei']  


    源代码修改如下:

    [python] view plain copy
     
    1. import matplotlib.pyplot as plt  
    2.   
    3. from pylab import *  
    4. mpl.rcParams['font.sans-serif'] = ['SimHei']  
    5.   
    6. # 定义文本框和箭头格式  
    7. decisionNode = dict(boxstyle = "sawtooth", fc = "0.8")  
    8. leafNode = dict(boxstyle = "round4", fc = "0.8")  
    9. arrow_args = dict(arrowstyle = "<-")  
    10.   
    11. # 绘制带箭头的注解  
    12. def plotNode(nodeTxt, centerPt, parentPt, nodeType) :  
    13.     createPlot.ax1.annotate(nodeTxt, xy = parentPt, xycoords = 'axes fraction', xytext = centerPt, textcoords = 'axes fraction', va = 'center', ha = 'center', bbox = nodeType, arrowprops = arrow_args)  
    14.   
    15. def createPlot() :  
    16.     fig = plt.figure(1, facecolor='white')  
    17.     fig.clf()  
    18.     createPlot.ax1 = plt.subplot(111, frameon = False)  
    19.     plotNode(U'决策节点', (0.5, 0.1), (0.1, 0.5), decisionNode)  
    20.     plotNode(U'叶节点', (0.8, 0.1), (0.3, 0.8), leafNode)  
    21.     plt.show()  
    22. createPlot()  

    最终得到图像

     

    成功!

    原文链接:http://blog.csdn.net/u013038499/article/details/52449768

  • 相关阅读:
    redis发布订阅
    redis学习笔记(面试题)
    redis安全 (error) NOAUTH Authentication required
    HDU3001 Travelling —— 状压DP(三进制)
    POJ3616 Milking Time —— DP
    POJ3186 Treats for the Cows —— DP
    HDU1074 Doing Homework —— 状压DP
    POJ1661 Help Jimmy —— DP
    HDU1260 Tickets —— DP
    HDU1176 免费馅饼 —— DP
  • 原文地址:https://www.cnblogs.com/haobang008/p/6718640.html
Copyright © 2011-2022 走看看