python 将关键数据标注在png图片里
我们关注的是create_signal_plot函数,该函数负责将关键数据标注在PNG图片中。
主要逻辑:
- 创建图形,绘制原始信号和滤波后信号。
- 绘制10%和90%的电平阈值线。
- 在上升沿和下降沿的位置标记点,并连接10%和90%的点以显示边沿时间。
- 在边沿附近标注上升/下降时间。
代码详解:
函数定义:
def create_signal_plot(time_data, output_signal, filtered_signal, file, figurefile,
rising_edges, falling_edges, V1, V2):
步骤:
- 设置图形大小。
- 绘制原始信号(蓝色)和滤波后信号(红色)。
- 绘制两条水平线表示10%和90%的电平。
- 对于每个上升沿:
- 在10%和90%电平处标记点(蓝色圆点)。
- 连接这两点形成一条虚线。
- 在两点之间标注上升时间(使用annotate,标注文本为上升沿的序号和上升时间)。
- 对于每个下降沿:
- 在90%和10%电平处标记点(绿色方块)。
- 连接这两点形成一条虚线(绿色)。
- 在两点之间标注下降时间(使用annotate,标注文本为下降沿的序号和下降时间)。
- 设置坐标轴标签、标题、图例、网格等。
- 保存图片。
注意:在标注文本中,只显示了边沿时间(例如:R1: 0.123μs),没有显示转换速率。
代码:
这段代码将关键数据标注在PNG图片中的逻辑和代码梳理如下:
主要标注逻辑
1. 基础图形设置
def create_signal_plot(time_data, output_signal, filtered_signal, file, figurefile, rising_edges, falling_edges, V1, V2): plt.figure(figsize=(14, 8)) # 绘制原始信号和滤波后信号 plt.plot(time_data, output_signal, 'b-', label='Original Signal', linewidth=1.2, alpha=0.8) plt.plot(time_data, filtered_signal, 'r-', label='Filtered Signal', linewidth=1.5) # 绘制阈值线 plt.axhline(y=V1, color='orange', linestyle='--', alpha=0.7, label='10% Level') plt.axhline(y=V2, color='purple', linestyle='--', alpha=0.7, label='90% Level')
2. 上升沿标注逻辑
# 标记上升沿for i, edge in enumerate(rising_edges): # 获取时间点(转换为实际时间坐标) t1 = time_data[edge['idx_ten']] # 10%点时间 t2 = time_data[edge['i