如何将此对数曲线设为实际曲线?

时间:2017-01-13 01:34:53

标签: python matplotlib curve

我试图在python中将自然对数曲线拟合到我的2d数据中。我拟合曲线并将其绘制成全部,唯一的问题是matplotlib只是连接点,但不是曲线"它。我该怎么做呢?我的代码在这里:

voltage2 = np.array([0., .1, .2, .5, .8, 1., 1.3])
current2 = np.array([0., .14, .16, .2, .24, .26, .3])

def lnfunct(x, m, h, k):
    return m * np.log(x + h) + k

ws2, cov = scipy.optimize.curve_fit(lnfunct, voltage2[1:], current2[1:])

def predictlncurrent(voltage, parameters):
    current = parameters[0] * np.log(voltage[1:] + parameters[1]) + parameters[2]
    return current

predictedlncurrent = predictlncurrent(voltage2, ws2)
predictedlncurrent = np.insert(predictedlncurrent, 0, 0.)

plt.scatter(voltage2, current2, color='g')
plt.plot(voltage2, predictedlncurrent, color='b')
plt.xlabel('Voltage')
plt.ylabel('1 / Current')
plt.suptitle('Voltage vs. 1 / Current with Best Fit Natural Logarithmic Curve (Non-Ohmic)')

你真的不需要这一切,但至少你可以看到我的变量和引用。主要部分是plt部分。如何在不改变我的值的情况下将其设为曲线?

1 个答案:

答案 0 :(得分:2)

正如Jack Maney所说,诀窍是绘制很多点(靠近在一起)来看曲线。这样的事情:

x = np.linspace(-0.2, 1.5, 500) # We create 500 in the area of interest
y = lnfunct(x, ws2[0], ws2[1], ws2[2]) # We adjusted for those 500 points

plt.scatter(voltage2, current2, color='g')
plt.plot(x, y, '--', color='r')

enter image description here

你没有从第一点进行调整,这就是为什么它远离调整而单独存在。