J'ai le script simple suivant qui trace un graphique:
import matplotlib.pyplot as plt
import numpy as np
T = np.array([6, 7, 8, 9, 10, 11, 12])
power = np.array([1.53E+03, 5.92E+02, 2.04E+02, 7.24E+01, 2.72E+01, 1.10E+01, 4.70E+00])
plt.plot(T,power)
plt.show()
Comme c'est le cas maintenant, la ligne va directement d'un point à l'autre, ce qui semble correct, mais pourrait être mieux à mon avis. Ce que je veux, c'est lisser la ligne entre les points. Dans Gnuplot, j'aurais tracé avec smooth cplines
.
Existe-t-il un moyen simple de le faire dans PyPlot? J'ai trouvé des tutoriels, mais ils semblent tous assez complexes.
np.linspace
. Corrigé dans ma réponse.spline
est obsolète! spline est obsolète dans scipy 0.19.0, utilisez la classe BSpline à la place:from scipy.interpolate import BSpline
Pour cet exemple, la spline fonctionne bien, mais si la fonction n'est pas intrinsèquement lisse et que vous voulez avoir une version lissée, vous pouvez également essayer:
si vous augmentez sigma, vous pouvez obtenir une fonction plus lissée.
Procédez avec prudence avec celui-ci. Il modifie les valeurs d'origine et peut ne pas être ce que vous voulez.
la source
Je suppose que vous parlez d' ajustement de courbe et non d' anti-crénelage dans le contexte de votre question. PyPlot n'a pas de support intégré pour cela, mais vous pouvez facilement implémenter vous-même un ajustement de courbe de base, comme le code vu ici , ou si vous utilisez GuiQwt, il dispose d'un module d' ajustement de courbe . (Vous pourriez probablement également voler le code de SciPy pour le faire également).
la source
rbf = Rbf(x, y), fi = rbf(xi)
était le meilleur parmi eux. [1]: scipy-cookbook.readthedocs.io/items/RadialBasisFunctions.html ,Consultez la
scipy.interpolate
documentation pour quelques exemples.la source