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

如何在Matplotlib中让数值超40.0的绘图坐标显示为红色?

在Matplotlib中根据坐标值设置绘图颜色

方法1:手动拆分数据绘制

先遍历所有坐标点,将y值(即a中的元素)大于40.0的点和其余点分开,再分别用蓝色和红色绘制:

import matplotlib.pyplot as plt

a = [20.5,30.2,35.4,40.2,25.2,41.5,24.3,24.1,40.2]
b = list(range(len(a)))

# 分类存储符合条件的坐标
x_blue, y_blue = [], []
x_red, y_red = [], []

for x, y in zip(b, a):
    if y > 40.0:
        x_red.append(x)
        y_red.append(y)
    else:
        x_blue.append(x)
        y_blue.append(y)

# 绘制蓝色基础线和点
plt.plot(x_blue, y_blue, marker='x', color='blue')
# 绘制红色超标点
plt.scatter(x_red, y_red, marker='x', color='red')

plt.show()

方法2:用Numpy布尔索引简化操作

如果数据量较大,用Numpy的布尔索引可以更高效地筛选数据:

import matplotlib.pyplot as plt
import numpy as np

a = np.array([20.5,30.2,35.4,40.2,25.2,41.5,24.3,24.1,40.2])
b = np.arange(len(a))

# 生成筛选条件:y值大于40.0的掩码
mask = a > 40.0

# 绘制蓝色部分
plt.plot(b[~mask], a[~mask], marker='x', color='blue')
# 绘制红色超标点
plt.scatter(b[mask], a[mask], marker='x', color='red')

plt.show()

补充说明

  • 你提到的「位置值」就是b(x轴坐标)和a(y轴坐标)对应的每一组坐标对,只需要逐个判断a中的值是否超过阈值即可分类处理。
  • 如果需要让超标点之间的线段也显示为红色,把scatter换成plot即可,但要注意离散点之间的线段会直接连接,可能不符合连续折线的视觉需求,可根据实际场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:15:08