解决Python可视化模块matplotlib生成图表中文乱码问题

489 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

使用python在生成图表时需要用到matplotlib库,Matplotlib 是一个python的绘图库,通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。 但在使用时会出现中文显示乱码;主要原因是缺少中文字体; 第一种解决办法: 在引入Matplotlib后加入以下两行

import matplotlib as plt
# 中文乱码解决方法
plt.rcParams['font.family'] = ['Arial Unicode MS','Microsoft YaHei','SimHei','sans-serif']
plt.rcParams['axes.unicode_minus'] = False

第二种解决办法比较推荐,具体方法如下:

​    ​打开命令行窗口,输入python,进入python解释器窗口,

​    ​输入import matplotlib;引入可视化库;

​    ​然后输入print(matplotlib.matplotlib_fname())打印出当前库所在位置;

​    ​然后输入print(matplotlib.get_cachedir())打印缓存位置;

在这里插入图片描述

​第一步:进入缓存文件夹,删除缓存;

​第二步,进入第一个文件夹,找到fonts文件,把下载的simhei字体放到指定的文件夹内,

​第三步: 编辑matplotlibrc; 找到下面语句,添加字体名称SimHei;
#font.family:  sans-serif
#font.style:   normal
#font.variant: normal
#font.weight:  normal
#font.stretch: normal
#font.size:    10.0

#font.serif:      SimHei, DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
#font.sans-serif: SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
#font.cursive:    Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, Comic Neue, Comic Sans MS, cursive
#font.fantasy:    Chicago, Charcoal, Impact, Western, Humor Sans, xkcd, fantasy
#font.monospace:  SimHei, DejaVu Sans Mono, Bitstream Vera Sans Mono, Computer Modern Typewriter, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace


​如以上还无法解决问题;则执行下面操作;

​找到系统字体文件夹:C:\Windows\Fonts,将下载的字体复制进去即可;

亲测可用;