在 Python 中,Matplotlib 库是常用的绘图库之一,但有时会出现中文乱码的问题。解决这个问题有几种方法:

  1. 使用系统自带的中文字体
    Matplotlib 默认使用英文字体来绘制图形,因此中文会显示为乱码。可以使用系统自带的中文字体来解决这个问题。例如,如果您使用的是 Windows 操作系统,可以使用以下代码:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 设置中文字体为微软雅黑

# 绘制图形
# ...

plt.show()

其中,font.sans-serif 是一个字典,用于设置无衬线字体(sans-serif font),Microsoft YaHei 是一个中文字体的名称。您可以将其替换为您系统中已安装的任何中文字体名称。

  1. 导入外部字体文件
    如果您希望在绘图中使用自己的字体文件,可以使用以下代码:
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

font = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf', size=14)  # 导入中文字体文件

# 绘制图形
# ...

plt.show()

在这个例子中,FontProperties 类用于导入中文字体文件,fname 参数指定字体文件的路径和文件名,size 参数指定字体的大小。您需要将 fname 参数替换为您自己的字体文件路径和文件名。

  1. 使用 LaTeX 渲染
    Matplotlib 还支持使用 LaTeX 渲染文本,包括中文。要使用 LaTeX 渲染中文,请在代码中添加以下语句:
import matplotlib.pyplot as plt
plt.rcParams['text.usetex'] = True  # 使用 LaTeX 渲染
plt.rcParams['text.latex.preamble'] = [r'\usepackage{CJKutf8}']  # 导入中文宏包
plt.rcParams['font.family'] = ['serif']  # 设置衬线字体

# 绘制图形
# ...

plt.show()

在这个例子中,text.usetex 参数设置为 True,表示使用 LaTeX 渲染文本。text.latex.preamble 参数用于导入中文宏包,font.family 参数用于设置衬线字体。如果您不需要使用中文宏包,可以省略 text.latex.preamble 参数。

注意:使用 LaTeX 渲染文本可能会导致绘图速度变慢,而且需要安装 LaTeX 环境。如果您不熟悉 LaTeX,建议使用前两种方法来解决中文乱码问题。

更多推荐

chatgpt:python绘图中文乱码