【问题标题】:smooth line matplotlib: How can i smooth line with 5 points of sample?平滑线 matplotlib:如何用 5 个样本点平滑线?
【发布时间】:2020-06-16 12:34:24
【问题描述】:

希望你没事,我有下一个问题:

假设我有 2 个列表,其值为 x=mode, y=floor;我的问题是如何仅使用 5 个点将点与平滑线连接起来:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter
from scipy.optimize import curve_fit
from scipy import interpolate

mode=[0.0, -0.000906168, -0.000466564, 0.000320168, 0.000800825]
floor=[0, 3.2, 6.4, 9.6, 12.8]

plt.plot(mode1,floor,'green')
plt.plot(mode1,floor,'o')
plt.plot(np.repeat(0,len(floor)),floor,'o')
plt.plot(np.repeat(0,len(floor)),floor,'black')
plt.show()

绿色情节是我希望以流畅的方式拥有的线条,我正在尝试与您在导入中看到的所有库进行拟合,但它们并没有给我带来良好的流畅感,感谢您的帮助。

【问题讨论】:

  • this 有帮助吗?

标签: python numpy matplotlib graph smoothing


【解决方案1】:

Scipy 的interpolate.interp1d 与kind='cubic' 或kind='quadratic' 可用于创建平滑曲线。二次曲线看起来比三次曲线更硬一些。请注意,在示例中,x 和 y 与它们通常的绘制方式相反。

以下是一些示例代码,用于演示如何在您的情况下使用这种插值:

import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate

mode = [0.0, -0.000906168, -0.000466564, 0.000320168, 0.000800825]
floor = [0, 3.2, 6.4, 9.6, 12.8]

plt.plot(mode, floor, marker='o', markerfacecolor='dodgerblue', markeredgecolor='dodgerblue',
         linestyle='dotted', color='limegreen', linewidth=1)
plt.plot(np.zeros(len(floor)), floor, marker='o', markerfacecolor='orange', markeredgecolor='orange',
         linestyle='solid', color='purple')

smoothed_mode = interpolate.interp1d(floor, mode, 'cubic')
floor_range = np.linspace(min(floor), max(floor), 500)
plt.plot(smoothed_mode(floor_range), floor_range, ls='solid', color='crimson')

plt.show()

【讨论】:

  • 非常感谢先生,这正是我所需要的
猜你喜欢
  • 1970-01-01
  • 2021-09-06
  • 2014-11-07
  • 2021-09-30
  • 2022-01-17
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
相关资源
最近更新 更多