Плавная линия сюжета с PyPlot
у меня есть следующий простой скрипт, который строит график:
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()
Как сейчас, линия идет прямо от точки к точке, которая выглядит нормально, но могло бы быть лучше на мой взгляд. Я хочу сгладить линию между точками. В Gnuplot я бы построил график с smooth cplines.
есть ли простой способ сделать это в PyPlot? Я нашел несколько учебников, но все они кажутся довольно сложными.
2 ответов:
вы могли бы использовать
scipy.interpolate.splineчтобы сгладить ваши данные:from scipy.interpolate import spline xnew = np.linspace(T.min(),T.max(),300) #300 represents number of points to make between T.min and T.max power_smooth = spline(T,power,xnew) plt.plot(xnew,power_smooth) plt.show()
Я полагаю, вы имеете в виду кривой-сторона, а не анти-алиасинг из контекста вашего вопроса. PyPlot не имеет встроенной поддержки для этого, но вы можете легко реализовать некоторые базовые кривые, такие как код seen здесь, или если вы используете GuiQwt он имеет кривую подгонки модуль. (Вероятно, вы также можете украсть код из составляющей чтобы сделать это также).


Comments