Как замаскировать точки ниже линии? - PullRequest
1 голос
/ 23 апреля 2019

Я тренировался с matplotlib.pyplot и привык к точке маскировки данных (np.ma.masked_where).Есть ли математическая формула или способ замаскировать точки данных ниже линии?Ожидаемый результат:

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Да, проверьте, ниже ли значения y линейной функции ваших значений x.
В вашем случае это, кажется, угол деления первого квадранта, поэтому смещение составляет 0, а наклон составляет 1:

y < x

В общем проверьте для

y < m * x + t    # with slope m and offset t

т.е. в вашем случае просто

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

Пример:

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')

enter image description here

0 голосов
/ 23 апреля 2019
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)  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...