You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Matplotlib图表布局以在右侧预留空间显示最新数据标签?

解决Matplotlib图表右侧空间不足,添加最新温湿度数据标签的问题

修改后的完整代码

import pandas as pd
from matplotlib import pyplot as plt

testdate = "12.12.2022"
Raspilog = pd.read_csv(r'path/to/logfile/logger.csv', header=0)
Raspilog_CDate = Raspilog[Raspilog.Date == testdate]

# 初始化画布,保持电子墨水屏的固定分辨率
fig, ax = plt.subplots(figsize=(2.50, 1.28))  

# 绘制温度曲线
ax.plot(Raspilog_CDate.Time, Raspilog_CDate.Temperature, color=(0.93, 0.11, 0.14), linewidth=3)
ax.set(ylim=(-10, 30))

# 绘制湿度曲线(双Y轴)
ax2 = ax.twinx()
ax2.plot(Raspilog_CDate.Time, Raspilog_CDate.Humidity, color="black", linewidth=1.5)
ax2.set(ylim=(0, 100))

# 设置X轴刻度
t = [Raspilog_CDate.Time.min(), Raspilog_CDate.Time.max()]
plt.xticks(t, t)

# 压缩图表X轴范围,右侧预留约15%的空间
x_min, x_max = ax.get_xlim()
ax.set_xlim(x_min, x_max * 0.85)

# 设置刻度字体大小
ax.xaxis.set_tick_params(labelsize=8)
ax.yaxis.set_tick_params(labelsize=8)
ax2.yaxis.set_tick_params(labelsize=8)

# 显示日期标签
plt.text(0.5, 0.9, testdate, horizontalalignment='center', verticalalignment='center', 
         transform=ax.transAxes, fontsize=8)

# 获取最新一行数据并在右侧空白区显示
latest_data = Raspilog_CDate.iloc[-1]
latest_text = (f"最新数据:\n{latest_data.Time}\n"
               f"温度: {latest_data.Temperature}°C\n"
               f"湿度: {latest_data.Humidity}%")
# 使用axes相对坐标系定位文本
plt.text(0.88, 0.5, latest_text, horizontalalignment='left', 
         verticalalignment='center', transform=ax.transAxes, fontsize=7)

plt.tight_layout(pad=0)
# plt.savefig('logplot.png')
plt.show()

关键改动说明

  • 压缩图表空间:通过ax.set_xlim(x_min, x_max * 0.85)将图表的X轴右侧范围缩小到原范围的85%,直接在右侧腾出空白区域,避免图表占满整个画布。
  • 获取最新数据:用Raspilog_CDate.iloc[-1]提取目标日期的最后一行测量数据,也就是最新的温湿度记录。
  • 添加数据标签:使用plt.text()并配合transform=ax.transAxes(基于axes的相对坐标系),将文本固定在右侧区域,确保在电子墨水屏的固定分辨率下位置稳定。调整fontsize=7适配小尺寸画布,避免文本溢出。
  • 优化布局:去掉tight_layout的多余参数,仅保留pad=0,确保画布空间被最大化利用。

内容的提问来源于stack exchange,提问作者lilaaffe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:25:39