Background

我在win10环境下的pycharm中开发好的程序,设置字体后可以正常显示中文,但是部署到Linux服务器上却提示错误提示,最终发现原因是:pyplot 默认不支持显示中文字体,且未自带中文字体,因此需要自行下载所需字体,并修改 rcParams 参数来显示中文。

中文乱码

在这里插入图片描述

设置中文字体

在这里插入图片描述

1、源码

注意: 代码顺序,先设置再绘图

from matplotlib import pyplot as plt

if __name__ == '__main__':
    # x轴和y轴数据
    xl = [15.123, 13.547, 12.864, 12.113]
    yl = [-3.423, -2.123, -1.723, -0.523]

    # 设置图的大小
    plt.figure(figsize=(12.7, 5.7))
    # 用来正常显示中文标签
    plt.rcParams['font.family'] = 'SimHei'
    # 用来正常显示负号
    plt.rcParams['axes.unicode_minus'] = False

    # 绘制折线图
    plt.plot(xl, yl, label='YL-001', marker='o')
    ax = plt.gca()
    # 设置x轴标签显示在上面
    ax.xaxis.set_ticks_position('top')
    # 设置下边线不显示
    ax.spines['bottom'].set_visible(False)
    # 设置标题和字体大小
    plt.title('监测数据成果曲线图', fontsize=15)
    # 设置图例位置
    plt.legend(bbox_to_anchor=(1.01, 1), loc=2, borderaxespad=0)
    # 设置显示x轴网格线
    plt.grid(axis="x")
    # 显示图表
    plt.show()

2、Linux服务器字体安装脚本 install_font.py

把该脚本和字体文件放在同一目录下,然后执行安装命令:python3 install_font.py。需要什么字体可以自己下载,我这里给出几个常用的字体。

import shutil

import matplotlib


def copy_font_file():
    """
    把下在的字体文件拷贝到 matplotlib 的字体路径下
    :return:
    """
    font_file = 'SimHei.ttf'
    suffix = '/fonts/ttf'
    mt_lib_path = matplotlib.matplotlib_fname()
    idx = mt_lib_path.rindex('/')
    mt_font_path = mt_lib_path[:idx] + suffix
    shutil.copy(font_file, mt_font_path)


def del_font_cache():
    """
    删除 matplotlib 的字体缓存路径
    :return:
    """
    dir_cache = matplotlib.get_cachedir()
    shutil.rmtree(dir_cache)


if __name__ == '__main__':
    try:
        copy_font_file()
        del_font_cache()
        print('font install success')
    except:
        print('font install failed')
  • 执行完如果还不生效,修改配置文件

注意: 把python3的路径修改为你自己的安装路径。

tee -a /usr/local/python3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc <<-'EOF'

# wlf-2022-11-17
font.family  : sans-serif
font.sans-serif : SimHei
axes.unicode_minus : False
EOF

在这里插入图片描述

【如果还不生效,比如说用java调用python程序,那就把所调用目录下的两个隐藏缓存文件夹.cache.config删除掉就行了】

在这里插入图片描述

3、几种常用的中文字体

下载地址:https://pan.baidu.com/s/1A1APUP3QNmEAtLM6fxOlIQ
提取码:king

在这里插入图片描述

英文名称中文字体
SimHei中文黑体
Kaiti中文楷体
LiSu中文隶书
FangSong中文仿宋
YouYuan中文幼圆
STSong华文宋体

4、线条常用marker

在这里插入图片描述

Logo

更多推荐