Python 消除高于或低于某个值的打印值

Python 消除高于或低于某个值的打印值,python,matplotlib,plot,Python,Matplotlib,Plot,我画了几个点,我想消除给定范围上下的所有值 所以我把所有的点都画成了 import numpy as np import matplotlib.pylab as plt 我有两个数组:“大小”和“颜色”,以及最适合的方程,因此我绘制如下: plt.scatter(magnitude,color) plt.plot(x,equation) plt.plot(x,equation +0.5, linestyle = '--') plt.plot(x,equation-0.5, linestyle

我画了几个点,我想消除给定范围上下的所有值

所以我把所有的点都画成了

import numpy as np
import matplotlib.pylab as plt
我有两个数组:“大小”和“颜色”,以及最适合的方程,因此我绘制如下:

plt.scatter(magnitude,color)
plt.plot(x,equation)
plt.plot(x,equation +0.5, linestyle =  '--')
plt.plot(x,equation-0.5, linestyle = '--')
其中x只是一些邻域。 它给了我一个像这样的情节:


这正是我想要的,但现在我想删除红色虚线上方和下方的所有点(即等式+0.5和等式-0.5),但我真的不知道怎么做。提示?

您可以使用索引并创建一个定义边界条件的掩码,因为当您对其执行算术运算(
+0.5
)时,
方程似乎是一个NumPy数组

y1=方程式-0.5
y2=方程式+0.5

遮罩=(颜色>y1)和(颜色速度对你的结果来说是一个很大的考虑因素吗?是的。我有482个绘图要处理。总的来说,超过一百万个数据点。你需要沿着该轴重新投影吗?或者你基本上可以将其水平修剪到尽可能近的位置吗?一个选项是只选择你想要的数据,可能通过将数据放入一个图形中来实现。)在你想要的数值范围上取一个切片。另外,你展示的水平线是可变的吗?它能一直延伸到垂直吗?因为它是最合适的,我猜是这样。我不需要重新投影,只需要在线上和线下抛掷所有的值。是线性的,但不是水平的。这看起来它有潜力工作k、 但是我的“方程式”数组没有我的颜色数组长,所以它不能一起广播元素。然后你需要为y1和y2创建一个直线方程式,然后得到介于和两条直线之间的值的索引。必须使用第一个点和最后一个点来创建直线方程式
y1 = equation - 0.5
y2 = equation + 0.5

mask = (color>y1) & (color<y2)

plt.scatter(magnitude[mask], color[mask])
plt.plot(x, equation)
plt.plot(x, y1, linestyle =  '--')
plt.plot(x, y2, linestyle = '--')