Python 在一个图上组合对数和线性函数

Python 在一个图上组合对数和线性函数,python,matplotlib,Python,Matplotlib,我想在我的图上同时有y=log((x+1)/(x-1))[-1;1]和另一个线性函数。两个函数共享相同的x值。我将第二个函数的y值存储在一个数组中。到目前为止,我已经尝试过: import numpy as np p = np.log((x+1)/(x-1)) plt.plot(arrayX, p,'go--') plt.plot(arrayX, arrayY) plt.show() 但是我一直得到ValueError:x和y必须具有相同的第一维度,并且不知道如何为p和我的初始x生成相同数量的

我想在我的图上同时有y=log((x+1)/(x-1))[-1;1]和另一个线性函数。两个函数共享相同的
x
值。我将第二个函数的
y
值存储在一个数组中。到目前为止,我已经尝试过:

import numpy as np
p = np.log((x+1)/(x-1))
plt.plot(arrayX, p,'go--')
plt.plot(arrayX, arrayY)
plt.show()

但是我一直得到
ValueError:x和y必须具有相同的第一维度,并且不知道如何为
p
和我的初始
x
生成相同数量的元素。你不需要映射任何东西。使用矢量化操作。下面是一个最低限度的工作答案。我使用不同的x范围,因为当x接近-1和1时,你的对数函数有一条渐近线

fig = plt.figure(figsize=(7, 5))

# Define input
x=np.linspace(1.1, 2, 100)
y1 = x**2
y2 =  np.log((x+1)/(x-1))

# Plot
plt.plot(x, y1, '-k', label = r'$y=x^2$')
plt.plot(x, y2, '-g', label = r'$y=\ln((x+1)/(x-1))$')
plt.legend(fontsize=18)
输出


您似乎会尝试
plt.plot(x,p,'go--')
。但是如果没有一个.As ImportanceOfBeingErnest注释,或者
p=np.log((x+1)/(x-1))
应该是
p=np.log((arrayX+1)/(arrayX-1))的错误,我们就不能肯定了。