ограничить протяженность линии или полиномиального графика - PullRequest
0 голосов
/ 06 мая 2020

Этот ответ от пользователя @funk показывает, как построить линию с помощью matplotlib. Это был код:

import numpy as np
import matplotlib.pyplot as plt

# Define the known points
x = [100, 400]
y = [240, 265]

# Calculate the coefficients. This line answers the initial question. 
coefficients = np.polyfit(x, y, 1)

# Print the findings
print 'a =', coefficients[0]
print 'b =', coefficients[1]

# Let's compute the values of the line...
polynomial = np.poly1d(coefficients)
x_axis = np.linspace(0,500,100)
y_axis = polynomial(x_axis)

# ...and plot the points and the line
plt.plot(x_axis, y_axis)
plt.plot( x[0], y[0], 'go' )
plt.plot( x[1], y[1], 'go' )
plt.grid('on')
plt.show()

Я хочу ограничить построение линии, чтобы она не выходила ниже 90 или выше 410. Пытался изменить числа в строке linspace, но это также меняет топоры. Как ограничить протяженность нанесенной линии, чтобы она не влияла на оси?

1 Ответ

1 голос
/ 06 мая 2020

Как упоминалось в комментариях, лучший способ сделать это - установить xlim и ylim после построения точек. Но ...

Если вы действительно хотите полностью ограничить пределы, построив линию, вы можете построить линию с помощью alpha=0.0. Затем вы можете перестроить ту часть, которую хотите увидеть, используя видимый alpha. Вот так:

enter image description here

# ...and plot the points and the line
plt.plot(x_axis, y_axis, alpha=0.0)
rfilter = (x_axis>100) & (x_axis<400)
plt.plot(x_axis[rfilter], y_axis[rfilter])
plt.plot( x[0], y[0], 'go' )
plt.plot( x[1], y[1], 'go' )
plt.grid('on')

Мое довод в пользу использования alpha=0.0 состоит в том, что вы неоднозначно относитесь к протяженности линии: в некотором смысле вы хотите, чтобы линия двигалась по всей длине, но вы просто не хотите видеть ее полностью. Итак, поскольку речь идет о том, чтобы не видеть этого, я установил альфу. Если я ошибаюсь в этом logi c, и у вас есть другая цель, пожалуйста, поясните.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...