功能在matplotlib中无法正确显示

时间:2018-03-20 19:12:56

标签: python function matplotlib

我想想象一个在x(= 2)的某个值处不连续的函数。

但是我得不到我所希望的。我的代码如下:

x = np.arange(-1, 4, 0.1)
y = 2 * x**2 / (x - 2)
df = pd.DataFrame({"x" : x  , "y" : y})

% matplotlib inline
import matplotlib
from matplotlib import pyplot as plt

# Set up the graph
plt.xlabel('x')
plt.ylabel('y')
plt.xticks(np.arange(-1,4, 0.5))
plt.yticks(np.arange(-8, 8, 0.5))
plt.axhline()
plt.axvline()
plt.grid()

# Plot the function
plt.plot(df["x"], df["y"], color='red')
axes = plt.gca()
xmin = -1
xmax = 4
ymin = -8
ymax = 8
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])
plt.axvline(2)
plt.show()

我得到的是以下内容:

enter image description here

为什么x的y值为> 2不出现?

您的建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题是您已将ylim设置为切断x>值的方式。 2。

考虑输入大于2的函数输出:

f = lambda x: 2 * x**2 / (x - 2)
print([f(i) for i in np.arange(2.1, 4, 0.2)])
#[88.199999999999918, 35.266666666666644, 24.999999999999989, 20.828571428571422,
# 18.688888888888883, 17.472727272727269, 16.753846153846151, 16.333333333333332,
# 16.105882352941176, 16.010526315789473]

如果您更改了ylim约束,则会看到下图:

# Set up the graph
plt.xlabel('x')
plt.ylabel('y')
#plt.xticks(np.arange(-1,4, 0.5))
#plt.yticks(np.arange(-8, 8, 0.5))
plt.axhline()
plt.axvline()
plt.grid()

# Plot the function
plt.plot(df["x"], df["y"], color='red')
axes = plt.gca()
xmin = -1
xmax = 4
ymin = -8
ymax = 100
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])
plt.axvline(2)
plt.show()

Sample output