在嵌入式设备上(树莓派)动态显示带有中文字体的图片(采用matplotlib绘图)

本文介绍如何在树莓派上使用matplotlib绘制包含中文字体的动态图片,并解决显示中文的问题。通过配置PyQt5界面,结合matplotlib动态绘图并保存图片,详细讲述了在树莓派上因缺少中文字体导致的错误及其解决方案,包括下载字体文件并将其移动到指定路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.运行环境

树莓派3B+
#***********************************#

2.创建一个PyQt界面
2.1配置Qt5、PyQt5

在树莓派的terminal中输入命令sudo apt-get update更新一下树莓派(在这个过程中确保良好的网络连接)
然后执行命令sudo apt-get install qt5-default安装Qt5
最后执行sudo apt-get inastall python3-pyqt5安装PyQt5

2.2 创建界面的代码
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtWidgets import *

class picture(QWidget):
    def __init__(self):
        super(picture, self).__init__()
        # resize()方法可以改变窗口控件的大小,在这里设置设置窗口的宽度为600像素
        # 宽度为400像素
        self.resize(600, 400)
        self.setWindowTitle("label显示图片")

        self.label = QLabel(self)
        self.label.setText("  显示图片")
        self.label.setFixedSize(191, 152)
        # move(x,y)方法设置控件的位置
        self.label.move(160, 160)

        self.label.setStyleSheet("QLabel{background:;}"
                                 "QLabel{color:rgb(300,300,300,120);font-size:10px;font-weight:bold;font-family:宋体;}"
                                 )

        btn = QPushButton(self)
        btn.setText("快点我")
        btn.move(220, 330)
        btn.clicked.connect(self.on_image)

    def on_image(self):
    	pass
if __name__ == "__main__":
    '''
    每一个PyQt5程序都需要有一个QApplication对象,QApplication类包含在QTWidget中
    sys.argv 是一个命令行参数列表。Python脚本可以从Shell中执行
    '''
    app = QtWidgets.QApplication(sys.argv)
    my = picture()
    my.show()
    sys.exit(app.exec_())
3. 采用matplotlib动态绘制图片并保存为图片

总体的思路是首先用matplotlib绘制五角雷达图,然后保存为png图片。
在这个过程中出现了图片显示中文不正常的现象,如图所示
在这里插入图片描述

### 树莓派上解决 Matplotlib 中文乱码问题树莓派上使用 Matplotlib 绘图时,如果出现中文乱码问题,通常是因为缺少支持中文的字体或未正确配置 Matplotlib 的字体设置。以下是解决方案的详细说明: #### 1. 确保安装了支持中文的字体 在树莓派中,可以通过安装 `ttf-wqy-zenhei` 或 `simhei` 字体来支持中文显示。以下命令可以用来安装文泉驿正黑字体: ```bash sudo apt-get update sudo apt-get install fonts-wqy-zenhei ``` 安装完成后,确认字体路径是否正确。例如,文泉驿正黑字体通常位于 `/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc`[^1]。 #### 2. 配置 Matplotlib 使用中文字体 通过修改 Matplotlib 的配置文件或在代码中动态设置字体,确保其能够识别并使用中文字体。 ##### 方法一:修改 Matplotlib 的配置文件 运行以下代码获取当前 Matplotlib 的配置文件路径: ```python import matplotlib print(matplotlib.matplotlib_fname()) ``` 打开配置文件(通常是 `matplotlibrc`),找到或添加以下内容: ```plaintext font.sans-serif: SimHei, WenQuanYi Zen Hei font.family: sans-serif axes.unicode_minus: False ``` 其中,`SimHei` 是黑体字体,`WenQuanYi Zen Hei` 是文泉驿正黑字体。如果系统中未安装这些字体,则需要先安装。 ##### 方法二:在代码中动态设置字体 如果不想修改全局配置文件,也可以在代码中动态设置字体。以下是一个示例: ```python import matplotlib.pyplot as plt from matplotlib import rcParams # 设置字体为 SimHei 或其他支持中文的字体 rcParams['font.sans-serif'] = ['SimHei', 'WenQuanYi Zen Hei'] rcParams['axes.unicode_minus'] = False # 解决负号显示问题 # 测试绘图 plt.figure() plt.plot([1, 2, 3], [4, 5, 6]) plt.title("测试中文标题") plt.xlabel("X轴标签") plt.ylabel("Y轴标签") plt.show() ``` #### 3. 检查 Python 和 Matplotlib 版本兼容性 确保使用的 Python 和 Matplotlib 版本兼容。例如,Python 3.6 可以搭配 Matplotlib 3.0.0 使用[^1]。如果版本不匹配,可能会导致字体加载失败或其他问题。 #### 4. 确认字体文件路径 如果手动下载了字体文件(如 `simhei.ttf`),需要将其拷贝到树莓派的字体目录,并刷新字体缓存: ```bash sudo cp simhei.ttf /usr/share/fonts/truetype/ sudo fc-cache -fv ``` 然后,在代码中指定字体路径: ```python from matplotlib.font_manager import FontProperties font_path = '/usr/share/fonts/truetype/simhei.ttf' font = FontProperties(fname=font_path) plt.title("测试中文标题", fontproperties=font) ``` ### 注意事项 - 如果从网络下载字体文件,请确保文件完整性,避免因文件损坏导致无法加载[^1]。 - 在双 y 轴绘图时,若涉及中文标签,同样需要确保字体设置正确[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值