前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matplotlib支持中文显示的两种方法

Matplotlib支持中文显示的两种方法

作者头像
lyhue1991
发布2021-06-15 10:03:48
1.2K0
发布2021-06-15 10:03:48
举报
文章被收录于专栏:Python与算法之美

在默认情况下,Matplotlib在设置title和标注text时如果使用中文,会出现尴尬的框框。

使用以下两种方法可以轻松化解尴尬,让您在使用Matplotlib绘图时展露愉悦笑容。

1,使用FontManager函数指定中文字体文件

2,将中文字体文件放入matplotlib安装目录下

在公众号算法美食屋后台回复关键字:源码,可以获取本文全部代码。

一,使用FontManager函数指定中文字体文件

这种方法步骤较少,但是需要在每一个使用中文的地方指定font参数。

step1:下载中文字体文件

在公众号算法美食屋后台回复关键字:中文字体,可以获取SimHei中文字体。

step2:在代码中用FontManager函数指定中文字体文件路径。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties  

# 加载中文字体
font = FontProperties(fname="./data/SimHei.ttf", size=14)  

# 数据准备
labels=np.array(["英语","数学","语文","化学","物理","体育"])
stats=[90, 80, 76, 70, 75, 88]

# 画图数据准备,角度、状态值
angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)
stats=np.concatenate((stats,[stats[0]]))
angles=np.concatenate((angles,[angles[0]]))

# 画蜘蛛图
fig = plt.figure(figsize = (10,6))
ax = fig.add_subplot(111, polar=True)   
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)

# 设置中文标题和维度名称
ax.set_thetagrids(angles * 180/np.pi, labels, FontProperties=font)
ax.set_title("小明各科成绩",FontProperties = font, size = 20)
plt.show()

二,将中文字体文件放入matplotlib安装目录下

这种方法步骤较多,但是只要初始设置了中文字体后,此后用到地方无需再特别指定字体参数。

step1:下载中文字体文件 SimHei.ttf

在公众号算法美食屋后台回复关键字:中文字体,可以获取SimHei中文字体。

step2:找到matplotlib的安装路径

代码语言:javascript
复制
!pip show matplotlib 
代码语言:javascript
复制
Name: matplotlib
Version: 3.2.1
Summary: Python plotting package
Home-page: https://matplotlib.org
Author: John D. Hunter, Michael Droettboom
Author-email: matplotlib-users@python.org
License: PSF
Location: /Users/liangyun/anaconda3/lib/python3.7/site-packages
Requires: pyparsing, cycler, python-dateutil, kiwisolver, numpy
Required-by: seaborn, scikit-image, pycocotools, pandas-alive, gopup, akshare, bar-chart-race

于是matplotlib的安装路径是 /Users/liangyun/anaconda3/lib/python3.7/site-packages

step3:将字体文件放入到matplotlib安装目录下的字体文件夹下

代码语言:javascript
复制
!mv SimHei.ttf /Users/liangyun/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/

step4:找到maplotlib的缓存位置

代码语言:javascript
复制
import matplotlib as mpl 
mpl.get_cachedir()

于是找到maptlotlib的缓存位置是 /Users/liangyun/.matplotlib

step5:清空缓存

代码语言:javascript
复制
!rm -rf /Users/liangyun/.matplotlib

step6: 代码开始处设置字体

代码语言:javascript
复制
import matplotlib.pyplot as plt
import seaborn as sns

plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.size'] = '20'
plt.rcParams['font.sans-serif'] = ['SimHei']


labels=np.array(["英语","数学","语文","化学","物理","体育"])
names = ["李雷","韩梅梅","汤姆","安"]
scores=np.array([[90, 80, 76, 70, 75, 88],[70, 60, 73, 80, 95, 55],
                 [70, 60, 56, 30, 65, 95],[50, 40, 66, 75, 74, 98]])

fig = plt.figure(0,figsize = (10,6))
plt.matshow(scores,fignum = 0)

plt.xticks(ticks = range(len(labels)),labels = labels)
plt.yticks(ticks = range(len(names)),labels = names)

# 绘制⽂本
for i in range(len(names)):
    for j in range(len(labels)):
        plt.text(j, i, round(scores[i, j],1), ha="center", va="center", color='r')
plt.colorbar()
plt.show()

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法美食屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,使用FontManager函数指定中文字体文件
  • 二,将中文字体文件放入matplotlib安装目录下
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档