树莓派5分析原厂风扇数据图形显示

《树莓派5 Debian 12 Bookworm 中 Python 虚拟环境》一文中,我们复刻了树莓派创始人Eben展示的树莓派5的Active冷却器的效果,得到了给四个cpu提高频率后,核心的温度变化值实验数据,以TXT文件形式呈现。如果能够以图形化的形式来表现对读者更有说服力。

安装分析工具pandas和matplotlib

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。提供高性能、易于使用的数据结构和数据分析工具。
Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。可以用来绘制各种静态,动态,交互式的图表。我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。

#激活虚拟环境
source /home/pi/my_project/Heating_Cooling/bin/activate
#pip安装pandas库
pip install pandas
#pip安装matplotlib库
pip install matplotlib
#终止虚拟环境输入
deactivate

使用Thonny IDE编程

import pandas as pd
import matplotlib.pyplot as plt

# 用read_csv函数读取txt文件
raw_df = pd.read_csv('readings.txt', sep=',', header=0)
# 打印
print(raw_df)
#将csv文件DataFrame化
df = pd.DataFrame(raw_df)
#删除第2和3两列
df.drop(df.columns[[2, 3]], axis=1, inplace=True)
# 打印
print(df)
#用折线绘制,颜色为红色,标签为带风扇的散热器,虚线,透明度为1,线宽为1
df.plot(x='Elapsed Time (s)',y='Temperature (°c)',kind='line',color='red',label="Active blower",alpha=1,linestyle='--',linewidth=1)
#Y轴的标签为温度单位摄氏度
plt.ylabel('Temperature (°c)')
# 绘图
plt.show()

试验结果

在这里插入图片描述

举一反三

我们要把CPU运行的频率也和温度绘制到一张分析图上,更加直观的观察频率和温度的变化关系。

import pandas as pd
import matplotlib.pyplot as plt

raw_df=pd.read_csv('readings.txt', sep=',', header=0)
print(raw_df)

df = pd.DataFrame(raw_df)
df.drop(df.columns[[3]], axis=1, inplace=True)
print(df)

#Matplotlib 创建 总画布figure,在她上面绘制多图subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax1 即可。
fig, ax1 = plt.subplots()

#设置左侧轴
#ax1的x轴标签
ax1.set_xlabel('Elapsed Time (s)')
#ax1的y轴标签
ax1.set_ylabel('Temperature (°c)')
#ax1的y轴刻度
ax1.set_ylim([0,65])
#ax1的x轴为值Elapsed Time,y轴值Temperatur,红色点划线,标签温度单位摄氏度
ax1.plot(df['Elapsed Time (s)'],df['Temperature (°c)'], 'r-', label='Temperature (°c)')

#设置右侧轴
# 将ax1的x轴也分配给ax2使用
ax2 = ax1.twinx()
#ax2的y轴标签
ax2.set_ylabel('Clock Speed (MHz)')
#ax2的y轴刻度
ax2.set_ylim([0,2500])
#ax2的x轴为值Elapsed Time,y轴值Clock Speed,红色点划线,标签时钟频率MHZ
ax2.plot(df['Elapsed Time (s)'],df['Clock Speed (MHz)'], 'g-', label='Clock Speed (MHz)')

lines = ax1.get_lines() + ax2.get_lines()
#直接使用legend()命令,matplotlib会自动检测并生成图例,loc设置标签框的位置0至10取值
ax1.legend(lines, [l.get_label() for l in lines], loc=8)

#将曲线下面的部分全部覆盖为绿色
plt.fill_between(df['Elapsed Time (s)'],df['Clock Speed (MHz)'], color='green', alpha=0.2)
plt.show()

复杂的分析图也制作出来了

在这里插入图片描述

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值