专栏首页Python与算法之美Matplotlib支持中文显示的两种方法

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

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

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

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

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

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

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

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

step1:下载中文字体文件

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

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

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的安装路径

!pip show matplotlib 
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安装目录下的字体文件夹下

!mv SimHei.ttf /Users/liangyun/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/

step4:找到maplotlib的缓存位置

import matplotlib as mpl 
mpl.get_cachedir()

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

step5:清空缓存

!rm -rf /Users/liangyun/.matplotlib

step6: 代码开始处设置字体

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()

本文分享自微信公众号 - Python与算法之美(Python_Ai_Road),作者:梁云1991

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TextView显示文本控件两种方法 TextView显示link的方法

    String text1=”<font color=’red’ <i 你好啊,陌生人</i </font <br/ “; text1+=”<a href=’h...

    砸漏
  • mac在matplotlib中显示中文的操作方法

    Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 。 通过 Matplotlib,开发...

    砸漏
  • Python实现matplotlib显示中文的方法详解

    方式二用时才设置,且不会污染全局字体设置,更灵活 方式三、方式四不需要对字体路径硬编码,而且一次设置,多次使用,更方便。

    用户7718188
  • CMD魔法堂:支持显示UTF8编码的中文

    一、前言                                     在Unbuntu中用sqlite3-command-line操作sqlite3...

    ^_^肥仔John
  • 详解 matplotlib 中的两种标注方法

    在二维坐标图中我们经常对绘制的图形进行标注。在 matplotlib 中比较常用的有text和annotate两种标注方法,其中:

    触摸壹缕阳光
  • matplotlib中文乱码的两种解决方案

    今天遇到一个问题就是:当我给坐标轴添加一些中文内容以便客户查看时,出现了乱码,接下来我就通过两种方法对乱码的问题做一下解释。

    石璞东
  • matplotlib 生成的图像中无法显示中文字符的解决方法

    前几天使用matplotlib 绘图的时候发现无法使用中文字符,所以找了个笔记,顺便分享给大家

    砸漏
  • asp.net中显示DataGrid控件列序号的几种方法

    在aps.net中多数据绑定的控件很多,论功能来说,应该属DataGrid最为齐全,但它没有提供现成的显示记录序号的功能,不过我们可以通过它所带的一些参数来间接...

    Java架构师必看
  • Mono环境下不支持中文的解决方法

    在运行这个代码的时候 《主要城市公交路线下载Mono版(使用MonoDevelop开发)》出现了下面的异常: ? 这是因为中文的代码支持包没有安装,启动YaST...

    张善友
  • jupyter notebook 实现matplotlib图动态刷新

    补充知识:jupyter notebook matplotlib绘制动态图并显示在notebook中

    砸漏
  • Matplotlib绘图backend报错—UserWarning: Matplotlib is currently using agg, which is a non-GUI backend

    使用交互式后端可以自动在屏幕上绘图,当你想实时绘图并直接在图片上进行其他操作时适合用这种后端。 刷新plot的函数:draw() 官方具体参数:

    SL_World
  • Sublime Text 3 中文文件名显示方框的解决办法

    飞奔去旅行
  • velocity:在eclipse和ultraedit中增加对vm脚本语法的高亮显示支持

    版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net...

    用户1148648
  • matplotlib的backend浅析

    在服务器使用matplotlib的时候,可能是因为没有装图形化和显示相关的包的原因,总是会出现backend相关的错误。所以我调查了下matplotlib中的b...

    王云峰
  • OpenCV-Python学习教程.5

    显式声明字符串不用转义---> r'c:\c.txt' 在路径字符串前加r

    云深无际
  • 如何在AI Studio数据可视化图像中显示汉字

    AI Studio是一个非常好用的数据科学在线实验平台,不论是教学、学习还是开发,都可以使用。但是,下面的缺憾未免成为了珍珠上的一点瑕疵。

    老齐
  • matplotlib简介

    丰富的第三方模块赋予了python强大的能力,matplotlib作为python最流行的可视化模块之一, 功能强大,用法简便。对于新手而言,其上手难度低,仅需...

    生信修炼手册
  • matplotlib绘图技巧详解(一)

    我们之前已经讲述了matplotlib的绘图原理,陆续会更新绘图技巧、相关图形绘制。

    朱小五
  • Matplotlib 3.0 可视化工具强势来袭!

    Matplotlib 3.0来了!新版Matplotlib已能通过PyPI安装了,不过,这一版本只支持python 3,Python 2死忠还得继续用2.2.x...

    昱良

扫码关注云+社区

领取腾讯云代金券