matplotlib 如何水平拉伸信号

ttisahbt  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(137)

我有一个有两列的框架。这是一个信号沿沿着深度变化的例子:

import matplotlib.pyplot as plt 
import pandas as pd

df = pd.DataFrame({"DEPTH":[5, 10, 15, 20, 25, 30, 35, 40, 45, 50],
                   "PROPERTY":[23, 29, 26, 17, 15, 20, 28, 25, 20, 17]})

plt.figure()
plt.plot(df["PROPERTY"],
         df["DEPTH"])
plt.xlabel("PROPERTY")
plt.ylabel("DEPTH")
plt.gca().invert_yaxis()
plt.grid()

但是我想水平拉伸我的信号,这样我就可以看到更“宽”的信号。在我的真实的数据中,我的信号是平滑的(几乎是平的)。例如,高值应该更高,低值应该更低,就像这个新的橙子信号:

有人知道我怎么做吗?如果我乘以一个数字,所有的值都会更高。

vs3odd8k

vs3odd8k1#

此代码将通过比例因子exaggeration水平拉伸信号。
它的工作原理是将信号以0为中心,使用所需的比例因子放大峰/谷,然后将平均值加回。

import matplotlib.pyplot as plt 
import pandas as pd

df = pd.DataFrame({"DEPTH":[5, 10, 15, 20, 25, 30, 35, 40, 45, 50],
                   "PROPERTY":[23, 29, 26, 17, 15, 20, 28, 25, 20, 17]})
exaggeration = 5
plt.figure()
plt.plot(df["PROPERTY"], df["DEPTH"], label='original')
plt.plot(exaggeration * (df["PROPERTY"] - df.PROPERTY.mean()) + df.PROPERTY.mean(),
         df["DEPTH"], label=f'exaggerated {exaggeration}x')
plt.xlabel("PROPERTY")
plt.ylabel("DEPTH")
plt.gca().invert_yaxis()
plt.grid()
plt.legend()

相关问题