Matplotlib 中设置自定义中文字体的正确姿势

简介: 【11月更文挑战第16天】Matplotlib 默认不支持中文字体显示,需手动配置。方法包括:1) 修改全局字体设置,适用于整个脚本;2) 局部设置特定元素的字体;3) 使用系统字体名称,但可能因系统而异。通过这些方法可以有效解决中文乱码问题,确保图表中文本的正确显示。

  1. 了解 Matplotlib 字体相关知识
  • Matplotlib 默认不支持中文字体显示,会出现中文乱码的情况。这是因为 Matplotlib 在渲染文本时,使用的字体库没有包含中文字体。
  • Matplotlib 使用rcParams来控制各种默认参数,包括字体相关的参数。
  1. 方法一:修改全局字体设置(适用于整个脚本或笔记本)
  • 步骤一:找到中文字体文件路径
  • 首先需要确定你想要使用的中文字体文件的位置。在 Windows 系统中,字体文件通常位于C:\Windows\Fonts目录下;在 Linux 系统中,字体文件一般在/usr/share/fonts/usr/local/share/fonts等目录下。
  • 步骤二:修改rcParams设置
  • 假设你要使用宋体(SimSun)字体,并且字体文件路径为C:\Windows\Fonts\simsun.ttc(这是在 Windows 系统下的路径示例)。
  • 在 Python 脚本或 Jupyter Notebook 的开头添加以下代码:


import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 设置字体路径
font_path = 'C:\\Windows\\Fonts\\simsun.ttc'
font = FontProperties(fname = font_path, size = 12)
plt.rcParams['font.family'] = font.get_name()


  • 这里首先导入了plt(Matplotlib 的绘图模块)和FontProperties(用于管理字体属性)。然后指定了字体路径font_path,并通过FontProperties创建了字体对象font,其包含字体名称和大小等属性。最后,将plt.rcParams['font.family']设置为该字体的名称,这样在整个脚本或笔记本中的所有图形绘制都会使用这个中文字体。


  1. 方法二:仅在特定元素中使用自定义字体(局部设置)
  • 步骤一:找到字体文件路径并加载字体
  • 同样先找到字体文件路径,例如还是使用宋体(SimSun),字体文件路径为C:\Windows\Fonts\simsun.ttc
  • 在绘图代码中添加以下内容来加载字体:


from matplotlib.font_manager import FontProperties
font_path = 'C:\\Windows\\Fonts\\simsun.ttc'
font_prop = FontProperties(fname = font_path)


  • 步骤二:在绘图元素中应用字体
  • 假设你要绘制一个柱状图,并且要为坐标轴标签设置中文字体。示例代码如下:


import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4])
y = np.array([10, 20, 30, 40])
font_path = 'C:\\Windows\\Fonts\\simsun.ttc'
font_prop = FontProperties(fname = font_path)
plt.bar(x, y)
plt.xlabel("类别", fontproperties = font_prop)
plt.ylabel("数量", fontproperties = font_prop)
plt.show()


  • 这里在xlabelylabel函数中通过fontproperties参数传入了之前加载的字体属性font_prop,使得坐标轴标签使用了自定义的中文字体,而其他部分(如标题、图例等)如果没有特别设置,仍然使用默认字体。


  1. 方法三:使用系统字体名称(更简便,但可能因系统而异)
  • 步骤一:确定系统中文字体名称
  • 在某些操作系统中,可以直接使用系统中文字体的名称来设置 Matplotlib 的字体。例如,在 Windows 系统中,宋体的名称可能是SimSun
  • 步骤二:修改rcParams或局部应用字体名称
  • 全局修改


import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimSun'


  • 局部修改


import matplotlib.pyplot as plt
plt.xlabel("类别", fontfamily='SimSun')


  • 这种方法比较简便,但需要注意字体名称可能因系统和字体安装情况而有所不同,可能会出现找不到字体的情况。而且在一些跨平台的项目中,这种方法的稳定性可能不如前两种方法。
相关文章
|
数据可视化 Python
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
237 0
|
8月前
|
数据可视化 数据挖掘 Python
【数据分析与可视化】Matplotlib中动态rc参数设置详解与实战(图文解释 附源码)
【数据分析与可视化】Matplotlib中动态rc参数设置详解与实战(图文解释 附源码)
354 0
|
5月前
|
数据可视化 数据挖掘 API
matplotlib字体设置看这一篇就够了
matplotlib字体设置看这一篇就够了
|
8月前
|
搜索推荐 数据可视化 Python
Matplotlib高级技巧:自定义图表样式与布局
【4月更文挑战第17天】本文介绍了Matplotlib的高级技巧,包括自定义图表样式和布局。通过设置`color`、`linestyle`、`marker`参数,可以改变线条、散点的颜色和样式;使用自定义样式表实现整体风格统一。在布局方面,利用`subplots`创建多子图,通过`gridspec`调整复杂布局,`subplots_adjust`优化间距,以及添加图例和标题增强可读性。掌握这些技巧能帮助创建更具吸引力的个性化图表。
|
8月前
|
搜索推荐 数据可视化 Python
Matplotlib图表中的数据标签与图例设置
【4月更文挑战第17天】这篇文章介绍了如何在Python的Matplotlib库中设置数据标签和图例,以增强图表的可读性和解释性。主要内容包括:使用`text`函数添加基本和自定义数据标签,以及自动和手动创建图例。图例的位置和样式可通过`loc`和相关参数调整。文章强调了数据标签和图例结合使用的重要性,提供了一个综合示例来展示实践方法。良好的图表设计旨在清晰有效地传达信息。
|
数据可视化 关系型数据库 索引
【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码
【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码
188 0
Python-matplotlib | 绘制双y轴图形(图例设置)
Python-matplotlib | 绘制双y轴图形(图例设置)
|
API Python
python matplotlib.axes相关属性设置(绘图方式、坐标轴、坐标刻度、文本等)
为什么要用 ax ,而不是 plt 呢? 因为在绘制子图过程中,对于每一个子图的不同设置,ax 可以直接实现对于单个子图的设定,因此掌握必要的 ax 设置命令尤为重要!
python matplotlib.axes相关属性设置(绘图方式、坐标轴、坐标刻度、文本等)
|
数据可视化 索引 Python
Matplotlib数据可视化:三大容器对象与常用设置(下)
Matplotlib数据可视化:三大容器对象与常用设置(下)
Matplotlib数据可视化:三大容器对象与常用设置(下)
|
4月前
|
Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。