Почему горизонтальная линия отображается только частично в sage / matplotlib? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть следующий код sage, который генерирует график функции matplotlib:

stupid that I can't use LATEX on this site and have to upload a gif :(

Я дополнительно хочу построить точку(a, f(a)), когда а = 4,0001, и пунктирная красная линия от оси у через эту точку.Вот код, который я написал для этого:

f(x) = (x**2 - 2*x - 8)/(x - 4)
g = plot(f, x, -1, 5)

a = 4.0001  
L = plot(f(a), color='red', linestyle="--")
pt = point((a, f(a)), pointsize=25)

g += pt + L
g.show(xmin=0, ymin=0)

Однако при этом выводится следующий график с горизонтальной линией, отображаемой лишь частично (она не пересекает точку pt):

graph of function f(x) = (x**2 - 2*x - 8)/(x - 4)

Почему эта горизонтальная линия отображается только частично?

Что мне нужно сделатьправильно построить график линии постоянной функции y = f(4.0001)?

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Sage позволяет пользователю указывать диапазон значений x при построении графика.

В случае отсутствия какого-либо указания он будет отображаться в диапазоне от -1 до 1.

После построения f для значений x из -От 1 до 5:

g = plot(f, x, -1, 5)

почему бы не построить постоянную f (a) также от -1 до 5:

L = plot(f(a), x, -1, 5, color='red', linestyle="--")

Линия от (0, f (a)) до(a, f (a)) также может быть нанесен просто как:

L = line([(0, f(a)), (a, f(a))], color='red', linestyle='--')
0 голосов
/ 04 марта 2019

Вероятно, лучше использовать функцию hlines в matplotlib, для которой вам просто нужно указать y -значение и xmin и xmax, то есть

import matplotlib.pyplot as plt
import numpy as np

def f(x):
    return (x**2 - 2*x - 8)/(x - 4)

x = np.linspace(-5,5, 100)
a = 4.001

plt.plot(x, f(x), -1, 5, linestyle='-')
plt.hlines(6, min(x), max(x), color='red', linestyle="--", linewidth=1)
plt.scatter(a, f(a))
plt.xlim([0, plt.xlim()[1]])
plt.ylim([0, plt.ylim()[1]])
plt.show()

, которая будет

HLine with function


Обратите внимание, что были сделаны некоторые корректировки для непосредственного использования matplotlib во всем примере - они не являются критическими.

...