【发布时间】:2019-08-20 13:20:41
【问题描述】:
我正在尝试通过时间插入数据。我在某些日期生成了稀疏的数据点(我可以使用下面的代码绘制),并且我正在尝试绘制一条连续的插值路径或穿过数据的脊椎。
我尝试使用 scipy.interpolate 中的 interp1d,但如果因为我使用日期而失败.. 如何绘制插值路径?
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime
from scipy.interpolate import interp1d
history = ['22.4 25/07/2019','22.8 26/07/2019','23.5 27/07/2019','27.7 28/07/2019','22.4 29/07/2019','25 01/08/2019','18.22 02/08/2019','32.5 03/08/2019','28 04/08/2019','28.2 07/08/2019','31 08/08/2019','24.99 09/08/2019','24.8 10/08/2019','25.1 13/08/2019','24.0 14/08/2019','29.4 16/08/2019','28.6 19/08/2019','27 21/08/2019','26.3 22/08/2019','25.7 23/08/2019','23.9 27/08/2019','26.3 30/08/2019','28.4 01/09/2019']
def someMathGoesHere(w):
#...
return float(w)
def parseHistory(hist):
dates = []
vals = []
for i in hist:
i = i.split(" ")
val = i[0]
day = datetime.datetime.strptime(i[1], '%d/%m/%Y')
vals.append(val)
dates.append(day)
return [vals,dates]
def plot(data):
[v,d] = parseHistory(data)
vv = [someMathGoesHere(i) for i in v]
fig,ax = plt.subplots(figsize = (13.3,7.5),constrained_layout=True)
ax.set(title="test")
ax.plot(d,vv,'ro',markeredgecolor=(0,0,0,1,),markersize=5,markerfacecolor='blue')
ax.axhspan(15,20,facecolor='#e15a1b',alpha=0.2)
ax.axhspan(20,28,facecolor='#11d7b0',alpha=0.2)
ax.axhspan(28,50,facecolor='#e050eb',alpha=0.2)
plt.ylim(15,32)
month_interval = 1
ax.get_xaxis().set_major_locator(mdates.MonthLocator(interval=month_interval))
ax.get_xaxis().set_major_formatter(mdates.DateFormatter("%b %Y"))
ax.margins(y=0.1)
plt.setp(ax.get_xticklabels(),rotation=30,ha="right")
plt.show()
return True
plot(history)
谢谢!
【问题讨论】:
标签: python date matplotlib interpolation spline