四联光电智能照明论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2414|回复: 0
打印 上一主题 下一主题

Python matplotlib画图的中文显示问题

[复制链接]
  • TA的每日心情
    开心
    2018-12-28 16:25
  • 817

    主题

    1556

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    14941
    跳转到指定楼层
    楼主
    发表于 2016-7-6 14:58:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    python中的matplotlib仅支持Unicode编码,默认是不显示中文的,如果让其默认显示中文,有下面2种方法:
    第一种方法:
    1、在python的安装目录中找到配置文件: %Python_Home%\Lib\site-packages\matplotlib\mpl-data\matplotlibrc    (如,我的是在C:\Python34\Lib\site-packages\matplotlib\mpl-data),用任意文本编辑器打开。

    2、找到139行的font.family         : sans-serif将其前面的#注释号去掉

    3、找到151行的font.sans-serif     :AR PL UMing CN, SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif将【AR PL UMing CN, SimHei】添加在最前面,其中AR PL UMing CN代表:宋体。SimHei代表:黑体。并将前面的#注释号去掉,重启编辑器后,便可显示中文了。

    4、同时需要更改264行的axes.unicode_minus  : False;使其值为False;否则无法显示负号

    5、代码如下:

    1. import matplotlib.pyplot as plt

    2. plt.xlabel('x轴')
    3. plt.ylabel('y轴')
    4. plt.bar(left = (0,1),height =(1,0.5),width = 0.35)

    5. plt.show()
    复制代码


    【注:低版本中x.label(u'x轴');中文前需要加u;请注意】

    第二种方法:
    在代码中动态设置(推荐方式)
    这种方式不需要修改配置文件,比较方便,推荐该方法,下面是具体步骤:
    首先要再python脚本中的开头加上后面的内容:#-*- coding: utf-8 -*-,即用utf8编码
    然后在代码中动态设置字体,下面是主要的几行代码

    1. from matplotlib.font_manager import FontProperties
    2. import matplotlib.pyplot as plt
    3. font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)

    4. plt.xlabel(u"电压差(V)", fontproperties=font)
    5. plt.ylabel(u"介质损耗角差(度)", fontproperties=font)
    6. plt.title(u"介质损耗角和荷电状态SOC关系图",fontproperties=font)
    复制代码


    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Silian Lighting+ ( 蜀ICP备14004521号-1 )

    GMT+8, 2024-5-3 21:51 , Processed in 1.062500 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表