前言
数据可视化中,文字的正确显示对于传达信息至关重要。无论是在绘制科学图表、统计图形还是创建数据报告中,文字往往是解释和理解数据的关键要素。然而,当涉及到在Matplotlib中显示中文时,我们常常面临一个普遍的问题:中文字符无法正确显示或出现乱码。
Matplotlib是一个广泛使用的Python数据可视化库,提供了丰富的绘图功能。然而,由于历史原因和操作系统的差异,Matplotlib默认情况下不支持中文字符的显示。这就导致了许多用户在绘制中文标签、标题或注释时遇到困扰。
解决这个问题的关键在于正确配置Matplotlib以使用支持中文的字体。在大多数操作系统中,英文字符的字体可以正常显示,但中文字符需要使用特定的字体才能正确渲染。幸运的是,Matplotlib提供了灵活的字体配置选项,允许我们自定义使用的字体。
为了确保中文字符的正确显示,我们需要先选择合适的字体,并将其配置为Matplotlib的默认字体。这样,在绘图时,Matplotlib就会使用我们选择的字体来渲染中文字符,从而避免乱码问题。常用的中文字体包括宋体、黑体、楷体等。
此外,还需要注意的是,选择的字体文件必须在系统中可用。有些字体可能在某些操作系统上缺失或不支持,因此在选择字体时应该考虑到跨平台的兼容性。
正确配置Matplotlib中文字体的过程可能会因操作系统和安装的字体而有所不同,但总的原则是确保使用支持中文字符的字体,并将其配置为Matplotlib的默认字体。
通过正确配置Matplotlib中文字体,我们可以确保在数据可视化中准确地显示中文字符,提高图表的可读性和可理解性。无论是在学术研究、数据分析还是商业报告中,准确显示中文字符都是传达信息的关键,因此正确配置字体在数据可视化中至关重要。
接下来,让我们深入了解如何正确配置Matplotlib中文字体,以确保我们的中文数据图表更具可视化效果和表现力。
一、查看系统支持的字体
import matplotlib.font_manager
a = sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist]) # 打印系统所有字体
for i in a:
print(i)
二、设置中文字体
1. 方法一
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(-2*np.pi,2*np.pi,100)
y = np.sin(x)
plt.rcParams['font.sans-serif'] = ['Source Han Sans CN'] # 用来正常显示中文标签, 如果系统中不存在Source Han Sans CN字体,即使设置了也无法正常显示,需要根据系统字体进行设置
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.plot(x,y)
plt.title("正弦函数")
plt.show()
2. 方法二
import matplotlib
font = {'family' : 'Microsoft YaHei',
'weight' : 'bold'}
matplotlib.rc("font",**font)
import numpy as np
# 生成数据
x = np.linspace(-2*np.pi,2*np.pi,100)
y = np.sin(x)
plt.plot(x,y)
plt.title("正弦函数")
plt.show()
3. 方法三
import matplotlib
import numpy as np
matplotlib.rc("font",family='Microsoft YaHei',weight="bold")
# 生成数据
x = np.linspace(-2*np.pi,2*np.pi,100)
y = np.sin(x)
plt.plot(x,y)
plt.title("正弦函数")
plt.show()
4. 方法四
from matplotlib import font_manager
import numpy as np
# 生成数据
x = np.linspace(-2*np.pi,2*np.pi,100)
y = np.sin(x)
my_font=font_manager.FontProperties(fname="/home/mw/project/AlimamaFangYuanTiVF-Thin.ttf") # 需要使用什么字体,将该字体文件下载下来并放到指定目录下就好
# 在需要中文显示的地方添加fontproperties=my_font即可
plt.plot(x,y)
plt.title("正弦函数",font = my_font)
点击下方链接一键运行上述代码: