我有以下sage
代码可生成函数的matplotlib
图:
我还希望绘制a = 4.0001时的点(a, f(a))
,以及从y轴到该点的红色虚线。这是我为此编写的代码:
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
相交):
为什么只显示部分水平线?
我需要怎么做才能正确绘制常数函数y = f(4.0001)
的线?
答案 0 :(得分:1)
使用matplotlib的hlines
函数可能更好,为此,您只需指定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()
哪个会给你
请注意,在整个示例中进行了一些调整以直接使用matplotlib-它们并不重要。
答案 1 :(得分:1)
Sage允许用户在绘制时指定x值的范围。
任何指示失败,它将从-1到1绘制。
绘制从-1到5的x值的f后:
g = plot(f, x, -1, 5)
为什么不在-1到5之间绘制常数f(a):
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='--')