Matplotlib图形的线条平滑

时间:2018-05-06 12:10:24

标签: matplotlib graphics

bullets' trajectory comparison早上好,伙计们, 我是来自意大利的Francesco,我是一个新的python用户。 我正在使用这个强大的代码来进行科学的reaserach和数据分析。 我正在写我的物理学论文,我试图描述和分析子弹飞行背后的外部弹道学。

我正在使用matplotlib绘制图形,表示子弹的抛物线路径和相关的交叉点;鉴于我想知道是否有一个特殊的代码来平滑在真实实验数据之后绘制的图形线,避免使用由许多线性段制作的图形。

非常感谢大家!

弗朗西斯

1 个答案:

答案 0 :(得分:0)

好的Francesco,感谢您上传图片。现在,让我们在编码时获得一些乐趣。

首先,我建议使用numpy函数将一定程度的多项式曲线拟合为一组值:np.polyfit()。请注意您设置的程度,因为结果可能会发生很大变化。有关详细信息,请查看此文档:https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.polyfit.html

然后,为了平滑你的曲线,你需要增加用np.linspace()绘制函数的点数,并使用这个新的集来应用 function np.poly1d()(它根据你对polyfit所做的拟合计算y坐标)。

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = [0, 50, 100, 150, 200, 250]

y = [-1, 0.8, 1.9, 1.6, 0, -3]

z = np.polyfit(x, y, 2)

p = np.poly1d(z)

xp = np.linspace(-2, 255)
plt.plot(x, y, '.', xp, p(xp), '-')
plt.show()

enter image description here