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

Matplotlib多折线图Y轴显示异常问题求助

解决Matplotlib多折线图Y轴异常重复问题

问题描述

使用Matplotlib绘制多折线图时,预期Y轴数值范围为[0.0, 15.0],但near_proximity_image_data与far_proximity_image_data对应的折线显示异常,Y轴出现重复区间,left_image_data和right_image_data显示正常。

原代码

import matplotlib.pyplot as plt
from datetime import datetime

def image_graph():
    left_image_data = ['10.31', '10.21', '10.13', '10.08', '10.1']
    right_image_data = ['10.17', '10.14', '10.13', '10.1', '10.07']
    near_proximity_image_data = ['9.257', '9.601', '9.688', '9.76', '9.824']
    far_proximity_image_data = ['9.999', '9.997', '10.0', '10.0', '9.996']
    image_data_x = [datetime.datetime(2023, 8, 19, 21, 30, 20, 876981), datetime.datetime(2023, 8, 19, 21, 30, 20, 877015), datetime.datetime(2023, 8, 19, 21, 30, 20, 877031), datetime.datetime(2023, 8, 19, 21, 30, 20, 877046), datetime.datetime(2023, 8, 19, 21, 30, 20, 877057)]


    plt.plot(image_data_x, left_image_data, label="left_image_data time rate")
    plt.plot(image_data_x, right_image_data, label="right_image_data time rate")
    plt.plot(image_data_x, near_proximity_image_data, label="near_proximity_image")
    plt.plot(image_data_x, far_proximity_image_data, label="far_proximity_image")
    plt.legend()
    plt.show()


image_graph()

问题原因

所有Y轴数据均为字符串类型,Matplotlib会将字符串视为分类变量而非数值变量处理,导致Y轴刻度逻辑混乱,出现重复区间。

解决方案

将所有数据列表中的字符串转换为浮点数,让Matplotlib正确识别数值类型。

修改后的代码

import matplotlib.pyplot as plt
from datetime import datetime

def image_graph():
    # 转换为浮点数列表
    left_image_data = [float(val) for val in ['10.31', '10.21', '10.13', '10.08', '10.1']]
    right_image_data = [float(val) for val in ['10.17', '10.14', '10.13', '10.1', '10.07']]
    near_proximity_image_data = [float(val) for val in ['9.257', '9.601', '9.688', '9.76', '9.824']]
    far_proximity_image_data = [float(val) for val in ['9.999', '9.997', '10.0', '10.0', '9.996']]
    image_data_x = [datetime.datetime(2023, 8, 19, 21, 30, 20, 876981), datetime.datetime(2023, 8, 19, 21, 30, 20, 877015), datetime.datetime(2023, 8, 19, 21, 30, 20, 877031), datetime.datetime(2023, 8, 19, 21, 30, 20, 877046), datetime.datetime(2023, 8, 19, 21, 30, 20, 877057)]


    plt.plot(image_data_x, left_image_data, label="left_image_data time rate")
    plt.plot(image_data_x, right_image_data, label="right_image_data time rate")
    plt.plot(image_data_x, near_proximity_image_data, label="near_proximity_image")
    plt.plot(image_data_x, far_proximity_image_data, label="far_proximity_image")
    # 手动设置Y轴范围以符合预期
    plt.ylim(0.0, 15.0)
    plt.legend()
    plt.show()


image_graph()

说明

转换数据类型后,Matplotlib会自动按数值逻辑处理Y轴,也可以通过plt.ylim(0.0, 15.0)手动锁定Y轴范围,确保符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:20:31