如何在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
相关产品推荐
相关产品推荐

