Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何遮罩线下的点?_Python_Python 3.x_Matplotlib - Fatal编程技术网

Python 如何遮罩线下的点?

Python 如何遮罩线下的点?,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我在练习matplotlib.pyplot,并使用掩蔽数据(np.ma.masked_where)点。有没有数学公式或方法来屏蔽线下的数据点?预期结果: points_X = [1,2,3,4,5,6,7,8,9,10] // your points_X data points_Y = [1,2,3,4,5,6,7,8,9,10] // your points_Y data new_points_X=[] new_points_Y=[] for i in range(len(points_X

我在练习matplotlib.pyplot,并使用掩蔽数据(np.ma.masked_where)点。有没有数学公式或方法来屏蔽线下的数据点?预期结果:

points_X = [1,2,3,4,5,6,7,8,9,10] // your points_X data
points_Y = [1,2,3,4,5,6,7,8,9,10] // your points_Y data

new_points_X=[]
new_points_Y=[]

for i in range(len(points_X)):
    if(points_Y[i] <= points_X[i]):
        new_points_Y.append(points_Y[i])
        new_points_X.append(points_X[i])

plot(new_points_X, new_points_Y)  

points\u X=[1,2,3,4,5,6,7,8,9,10]//您的points\u X数据
points_Y=[1,2,3,4,5,6,7,8,9,10]//您的points_Y数据
新的_点_X=[]
新的_点_Y=[]
对于范围内的i(len(点X)):

如果(点Y[i]是,检查Y值是否低于x值的线性函数。
在您的例子中,它似乎是第一象限的角平分线,所以偏移量是
0
,斜率是
1

y < x
y
一般检查

y < m * x + t    # with slope m and offset t
y
也就是说,在你的情况下

y.mask = y < x
plt.plot(x, y)
y.mask=y

例如:

将numpy导入为np
将matplotlib.pyplot作为plt导入
plt.style.use('ggplot'))
图=plt.图()
np.随机。种子(7)#准备数据
x=np.随机。随机(10)
y=np.随机。随机(10)
y=np.ma.掩蔽阵列(y)
#绘制所有值
plt.plot(x,y,'o',ms=10,mec='k',mfc=(0,0,0),label='所有点')
y、 遮罩=y

如果您能展示您的数据点是如何组织的,我可以帮助您更加感谢您的详细回答,mate@ChauLoi不客气-我可以问一下,为什么你接受了更复杂的答案,需要一个循环和所有x和y值的完整副本,这些值应该是可见的,而不是简单的一行?我以为你在寻找什么基于numpy的蒙面数组?@SpghttCd。很抱歉我回复晚了。顺便说一句,我只是一个初学者。我从书本和例子中学习。我倾向于继承它,同时,你更先进,经验更多,因此,你知道哪种方法简单易懂。你可能会觉得它很傻,但这个问题打开了我的思路。
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')

fig = plt.figure()
np.random.seed(7)                                   # prepare data
x = np.random.random(10)     
y = np.random.random(10)
y = np.ma.masked_array(y)

# plot all values 
plt.plot(x, y, 'o', ms=10, mec='k', mfc=(0,0,0,0), label = 'all points')  

y.mask = y < x                                      # mask values below angular bisector
plt.plot(x, y, 'bo', label = '$y \geq x$')          # plot masked array
plt.plot((0, 1), (0, 1), 'b')                       # plot angular bisector


m = 3                                               # prepare the general case
t = -1
y.mask = y < m * x + t                              # mask values below linear function
plt.plot(x, y, 'rx', label = '$y \geq 3x - 1$')     # plot masked array
plt.plot((0, 1), (m*0+t, m*1+t), 'r')               # plot linear function

plt.ylim(0, 1)
fig.legend(ncol=3, loc='upper center')