所以用下面的代码,我可以画出一个有三条线的图形,但是它们是有角度的。有可能把线弄平吗?
import matplotlib.pyplot as plt
import pandas as pd
# Dataframe consist of 3 columns
df['year'] = ['2005, 2005, 2005, 2015, 2015, 2015, 2030, 2030, 2030']
df['name'] = ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C']
df['weight'] = [80, 65, 88, 65, 60, 70, 60, 55, 65]
fig,ax = plt.subplots()
# plot figure to see how the weight develops through the years
for name in ['A','B','C']:
ax.plot(df[df.name==name].year,df[df.name==name].weight,label=name)
ax.set_xlabel("year")
ax.set_ylabel("weight")
ax.legend(loc='best')
你应该在你的数据上应用插值,它不应该是“线性的”。在这里,我使用scipy的
interp1d
应用了“立方”插值。另外,请注意,对于使用三次插值,您的数据应该至少有4个点。所以我又增加了2031年和另一个值,也就是所有的权重(我从最后一个权重值减去1得到新的权重值):代码如下:
结果是:
相关问题 更多 >
编程相关推荐