如何解决使用离散字符串 x 轴平滑 matplotlib 图?
我试图在 matplotlib 中绘制一个平滑的折线图,其中 离散 x 轴是字符串(请参见下面的输出图)。我目前得到锯齿状的线条。我在 Stack Overflow 上看到的所有示例都处理连续的 x 轴 (example),并依赖于利用 x 轴表示 linspace()
或 spline
来自 {{1} }.这是给出锯齿状线条的绘图代码的摘录:
scipy.interpolate
这是输出:
我希望平滑后的输出看起来像这样(右侧),但我的 x 轴是一个字符串:
对此的任何帮助将不胜感激!
解决方法
从SciPy's interpolate
module documentation逐字复制的示例代码:
import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
x = np.linspace(0,10,num=11,endpoint=True)
y = np.cos(-x**2/9.0)
f = interp1d(x,y)
f2 = interp1d(x,y,kind='cubic')
xnew = np.linspace(0,num=41,endpoint=True)
plt.plot(x,'o',xnew,f(xnew),'-',f2(xnew),'--')
plt.legend(['data','linear','cubic'],loc='best')
plt.show()
这会产生:
更多信息在 scipy.interpolate.interp1d
的文档中。
让我补充一点,您确实通过评论中提到的这种情节歪曲了数据。您确实将信息添加到原始数据中。合理的操作将是线性插值(np.polyfit
和 deg=1
)或 moving average。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。