Python 中,matplotlib绘图无法显示中文的问题

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

[python] view plain copy

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

最终得到图像

成功!

以上是引文:,下面是我绘制的

我自己绘制的.

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

时间: 2024-10-19 18:47:44

Python 中,matplotlib绘图无法显示中文的问题的相关文章

【转】 Python 中,matplotlib绘图无法显示中文的问题

在python中,默认情况下是无法显示中文的,如下代码: [python] view plain copy import matplotlib.pyplot as plt # 定义文本框和箭头格式 decisionNode = dict(boxstyle = "sawtooth", fc = "0.8") leafNode = dict(boxstyle = "round4", fc = "0.8") arrow_args =

ubuntu下使用matplotlib绘图无法显示中文label

原因是字体导致的.大家的做法基本都是搞一个windows上的字体文件(simhei.ttf, 点我fq下载)然后刷新一下缓存文件. 只不过百度搜到第一篇CSDN的博客,写的很不靠谱(不是所有的CSDN都不靠谱,但是相当多的都不靠谱.) 靠谱的做法: 首先要明白,你用的是哪个matplotlib,是apt安装的python-matplotlib还是pip装的matplotlib,是python2的还是python3的?(以及,也许你是anaconda装的?) 找到你用的matplotlib包所使用

python中matplotlib绘图封装类之折线图、条状图、圆饼图

DrawHelper.py封装类源码: 1 import matplotlib 2 import matplotlib.pyplot as plt 3 import numpy as np 4 5 class DrawHelper: 6 def __init__(self): 7 # 指定默认字体 下面三条代码用来解决绘图中出现的乱码 8 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] 9 matplotlib.rcParams['font

ArcGIS10中matplotlib画图时的中文设置

利用GIS的数据批量生成XY的图形图像文件,可以直接使用Python.一般大家都是用matplotlib,中文设置的问题参看了许多内容,结论是对错不一,让我折腾了三天,现总结如下: 1.软件的版本.安装测试的为numpy-1.6.1和matplotlib-1.1.0,WindowsXP系统.我原来系统安装的numpy-1.6和matplotlib-1.1.0有冲突. 2.修改matplotlibrc文件.ArcGIS10下安装后,该文件在C:\Python26\ArcGIS10.0\Lib\si

windows中让secureCRT正确显示中文(ssh)

已经在raspi中正确设置了juicessh安卓客户端已经测试过了,可以正常显示中文. 1.安装linux时选择中文系统,或安装后vi /etc/sysconfig/i18n文件改为:LANG= zh_CN.UTF-8 2.在secureCRT里面: Session Options(会话选项) -> Terminal(终端) -> Appearance(显示), 将Fonts(字体)选择成fixedsys将charater(字符)选择成UTF-8就支持中文了. windows中让secureC

Python 中读取csv文件中有中文的情况

Python 中读取csv文件中有中文的情况,提示编码问题: 读取的时候: import sys reload(sys) #中文错误 sys.setdefaultencoding( "utf-8" ) save 存储的时候: dataframe可以使用to_csv方法方便地导出到csv文件中,如果数据中含有中文,一般encoding指定为"utf-8″,否则导出时程序会因为不能识别相应的字符串而抛出异常,index指定为False表示不用导出dataframe的index数据

python中matplotlib实现最小二乘法拟合的过程详解

这篇文章主要给大家介绍了关于python中matplotlib实现最小二乘法拟合的相关资料,文中通过示例代码详细介绍了关于最小二乘法拟合直线和最小二乘法拟合曲线的实现过程,需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出).它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小.最小二乘法还

python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)

最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指正. 一.最简单的基本框架如下:已知x,y,画出折线图并保存.此时x和y均为数字. 1 # -*- coding: utf-8 -*- 2 3 import matplotlib.pyplot as plt #引入matplotlib的pyplot子库,用于画简单的2D图 4 import random 5

ubuntu 16.04 + python + matplotlib下画图显示中文设置

一.需求 因为在python画图显示的时候,经常需要展示一些中文,但是ubuntu系统下按照默认安装方式安装的时候,一般是不能显示中文的,当强行给legend.xlabel.ylabel赋予中文的时候,会显示为方块 二.参考 http://blog.csdn.net/onepiece_dn/article/details/46239581 三.配置方法 (1)  显示本机的同时可用的中文和西文字体 def dispFonts(): #显示可用的中文字体,同时支持英文的 from matplotl