Matplotlib 中文显示:从入门到精通

简介

Matplotlib 是 Python 中广泛使用的绘图库,它能生成各种高质量的可视化图表。然而,默认情况下 Matplotlib 对中文的支持并不友好,这给需要在图表中展示中文的用户带来了困扰。本文将详细介绍 Matplotlib 中文显示的相关知识,帮助你轻松解决中文显示问题,使你的可视化图表更加美观和专业。

目录

  1. 基础概念
  2. 使用方法
    • 方法一:设置全局字体
    • 方法二:为单个图表设置字体
  3. 常见实践
    • 简单折线图中的中文显示
    • 柱状图中的中文显示
  4. 最佳实践
    • 选择合适的中文字体
    • 避免字体冲突
    • 动态调整字体大小
  5. 小结
  6. 参考资料

基础概念

Matplotlib 本身默认使用的字体不包含中文字符集,所以当我们尝试在图表中显示中文时,就会出现方块或乱码的情况。为了正确显示中文,我们需要告诉 Matplotlib 使用包含中文字符的字体。字体在 Matplotlib 中是通过 FontProperties 类来管理的,我们可以通过设置相关参数来指定使用的字体。

使用方法

方法一:设置全局字体

可以通过修改 Matplotlib 的全局配置参数来设置中文字体。这样设置后,所有使用 Matplotlib 绘制的图表都会使用指定的中文字体。

import matplotlib.pyplot as plt
import matplotlib

# 设置中文字体为黑体
matplotlib.rcParams['font.family'] = 'SimHei'

# 解决负号显示问题
matplotlib.rcParams['axes.unicode_minus'] = False

# 示例数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)
plt.title('中文标题')
plt.xlabel('X 轴标签')
plt.ylabel('Y 轴标签')
plt.show()

方法二:为单个图表设置字体

如果你只想为某个特定的图表设置中文字体,可以使用 FontProperties 类。

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 创建字体对象
font = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf', size=14)

# 示例数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)
plt.title('中文标题', fontproperties=font)
plt.xlabel('X 轴标签', fontproperties=font)
plt.ylabel('Y 轴标签', fontproperties=font)
plt.show()

常见实践

简单折线图中的中文显示

import matplotlib.pyplot as plt
import matplotlib

# 设置中文字体为黑体
matplotlib.rcParams['font.family'] = 'SimHei'
# 解决负号显示问题
matplotlib.rcParams['axes.unicode_minus'] = False

# 月份数据
months = ['一月', '二月', '三月', '四月', '五月']
sales = [100, 120, 150, 90, 130]

plt.plot(months, sales)
plt.title('各月销售额')
plt.xlabel('月份')
plt.ylabel('销售额')
plt.show()

柱状图中的中文显示

import matplotlib.pyplot as plt
import matplotlib

# 设置中文字体为黑体
matplotlib.rcParams['font.family'] = 'SimHei'
# 解决负号显示问题
matplotlib.rcParams['axes.unicode_minus'] = False

# 水果名称
fruits = ['苹果', '香蕉', '橙子', '葡萄']
counts = [25, 30, 18, 22]

plt.bar(fruits, counts)
plt.title('水果销量统计')
plt.xlabel('水果种类')
plt.ylabel('销量')
plt.show()

最佳实践

选择合适的中文字体

不同的中文字体在外观和可读性上有所差异。在选择字体时,要考虑图表的主题和受众。例如,正式的商务报告可以选择宋体或黑体,而创意性的可视化可以选择一些独特的艺术字体。同时,要确保选择的字体在目标系统上可用。

避免字体冲突

如果在一个项目中同时使用多种字体,要注意避免字体冲突。可以统一使用一种中文字体和一种英文字体,并合理设置它们的优先级。另外,在使用 FontProperties 时,确保路径正确,否则可能会导致字体无法加载。

动态调整字体大小

根据图表的大小和复杂程度,动态调整字体大小。可以使用相对字体大小,例如 plt.title('标题', fontsize='large'),这样在不同分辨率下图表的可读性都能得到保证。同时,要注意各个元素(标题、标签、图例等)字体大小的一致性。

小结

通过本文的介绍,我们了解了 Matplotlib 中文显示的基础概念、使用方法、常见实践以及最佳实践。掌握这些知识后,你将能够轻松解决 Matplotlib 中中文显示的问题,创建出美观、专业且包含中文信息的可视化图表。在实际应用中,根据具体需求选择合适的方法和字体,不断优化图表的显示效果。

参考资料