在 Python 中绘制曲线

我想绘制特定拱形形状的曲线,下面是我使用特定值(需要使用这些值)的距离,但它绘制了直线。

我也无法按照我想要的方式格式化 y 轴。这是一个对数刻度,我希望它上升到 1(就像上面的理想图一样)。一些帮助会很棒,谢谢!=)


沧海一幻觉
浏览 181回答 2
2回答

RISEBY

您的线未在对数刻度图上拉伸的原因是因为顶部和底部的点之间没有点。log plot不弯曲线,只是将点放在不同的比例上,它们之间的线仍然是直的。为了改变这一点,我们在点之间添加了更多的点。结果会变得弯曲。import matplotlibimport matplotlib.pyplot as pltimport numpy as npfrom matplotlib.ticker import ScalarFormatter# Data for plottingt = [0.0, 62.5, 125.0, 187.5, 250, 312.5, 375, 437.5, 500]s = [0.1, 0.005, 0.1, 0.005, 0.1, 0.005, 0.1, 0.005, 0.1]def extendlist(l):    master = []    for i in range(len(l)-1):        x = np.linspace(l[i], l[i+1], 50)        master.extend(x)    return mastert = extendlist(t)s = extendlist(s)fig, ax = plt.subplots()ax.semilogy(t, s)ax.set(xlabel='x axis', ylabel='y axis', title='Stuff')plt.xlim((0,500))plt.ylim((0.001, 1))plt.show()这将生成您在纸上绘制的图形。

忽然笑

你可以使用interp1dimport matplotlib.pyplot as pltimport numpy as npfrom scipy.interpolate import interp1dt = [0.0, 62.5, 125.0, 187.5, 250, 312.5, 375, 437.5, 500]s = [0.1, 0.005, 0.1, 0.005, 0.1, 0.005, 0.1, 0.005, 0.1]tnew = np.linspace(0, 500, num=1001, endpoint=True)f = interp1d(t, s)plt.semilogy(tnew, f(tnew))plt.ylim((0.001, 1))plt.show()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python