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

Python matplotlib绘图时elif分支被跳过,区间判断异常颜色不符

问题原因
  • 你代码里所有判断都在做字符串的字典序比较,不是数值大小比较,这是错误的根本原因。
  • 字符串比较是逐位按ASCII码值比对的:比如'86' < '106'的结果是False,因为第一位字符'8'的ASCII码远大于'1',哪怕实际数值86比106小,字符串比较也会判定'86'更大,所以落在86-200区间的字符串值都会命中最后一个zlist > '201'的条件。
  • 前两个判断能正常触发是因为你比较的都是两位数的字符串,逐位比对的结果刚好和数值比对结果一致,才没出问题。
修复方案

先把zlist转成数值类型再做比较,修改后的判断逻辑参考如下:

# 先转成整数,如果zlist存的是小数就改成float()转换
z_value = int(zlist)
if z_value < 55:
    plt.scatter(x = xlist, y = ylist, color = 'green')
    plt.xticks(rotation=90)
    plt.text(xlist, ylist, zlist)
    
elif 55 < z_value < 71:
    plt.scatter(x =xlist, y =ylist, color = 'yellow')
    plt.xticks(rotation = 90)
    plt.text(xlist, ylist, zlist)
    
elif 71 < z_value < 86:
    plt.scatter(x =xlist, y =ylist, color = 'orange')
    plt.xticks(rotation = 90)
    plt.text(xlist, ylist, zlist)
             
elif 86 < z_value < 106:
    plt.scatter(x =xlist, y =ylist, color = 'red')
    plt.xticks(rotation = 90)
    plt.text(xlist, ylist, zlist)
             
elif 106 < z_value < 201:
    plt.scatter(x =xlist, y =ylist, color = 'purple')
    plt.xticks(rotation = 90)
    plt.text(xlist, ylist, zlist)
             
elif z_value > 201:
    plt.scatter(x =xlist, y =ylist, color = 'maroon')
    plt.xticks(rotation = 90)
    plt.text(xlist, ylist, zlist)

额外说明:你当前的区间判断没有包含边界值,比如刚好等于55、71、86这类数值时不会命中任何分支,可根据实际需求调整为<=或明确边界归属。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:18:05