Saya punya skrip sederhana berikut yang memplot grafik:
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()
Seperti sekarang, garis lurus dari titik ke titik yang terlihat baik-baik saja, tetapi menurut saya bisa lebih baik. Yang saya inginkan adalah menghaluskan garis di antara titik-titik. Di Gnuplot saya akan merencanakan dengan smooth cplines
.
Apakah ada cara mudah untuk melakukan ini di PyPlot? Saya telah menemukan beberapa tutorial, tetapi semuanya tampak agak rumit.
np.linspace
. Dikoreksi dalam jawaban saya.spline
sudah ditinggalkan! spline tidak digunakan lagi di scipy 0.19.0, gunakan kelas BSpline sebagai gantinya:from scipy.interpolate import BSpline
Untuk contoh ini, spline berfungsi dengan baik, tetapi jika fungsinya tidak mulus secara inheren dan Anda ingin versi yang dihaluskan, Anda juga dapat mencoba:
jika Anda meningkatkan sigma, Anda bisa mendapatkan fungsi yang lebih halus.
Lanjutkan dengan hati-hati dengan yang ini. Ini mengubah nilai asli dan mungkin bukan yang Anda inginkan.
sumber
Saya kira yang Anda maksud adalah pencocokan kurva dan bukan anti-aliasing dari konteks pertanyaan Anda. PyPlot tidak memiliki dukungan bawaan untuk ini, tetapi Anda dapat dengan mudah menerapkan beberapa penyesuaian kurva dasar, seperti kode yang terlihat di sini , atau jika Anda menggunakan GuiQwt, ia memiliki modul pemasangan kurva . (Anda mungkin juga bisa mencuri kode dari SciPy untuk melakukan ini juga).
sumber
rbf = Rbf(x, y), fi = rbf(xi)
adalah yang terbaik di antara persamaan-persamaan tersebut . [1]: scipy-cookbook.readthedocs.io/items/RadialBasisFunctions.html ,Lihat
scipy.interpolate
dokumentasi untuk beberapa contoh.sumber