Python Matplotlib:规范化yaxis以显示标准差的倍数

2024-04-26 12:44:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想重新规范化我的y轴,以sigma(标准差)的倍数显示我的信号。例如,一个人可以说在50赫兹有一个3西格玛信号,而在3赫兹有一个0.5西格玛信号。在

我认为使用plt.yticks()可能是一种方法:

import numpy as np
import matplotlib.pyplot as plt

X = range(0,50,2)
Y = range(0,50,2)

signal_sigma = np.std(Y)

plt.figure()
plt.plot(X, Y)
plt.yticks(np.arange(0, 25*signal_sigma, signal_sigma))
y_labels = [r"${} \sigma$".format(i) for i in range(0, 26)]
plt.ylabel(y_labels)
plt.show()

但这似乎还不完全正确。我错过了什么?在

更新:

这就是我想做的:What does a 1-sigma, a 3-sigma or a 5-sigma detection mean?概率表正下方的位。在


Tags: 方法importnumpysignallabels信号asnp
1条回答
网友
1楼 · 发布于 2024-04-26 12:44:14

{cdyti1>标签设置与您要设置的标签不同:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1000)
y = 42 * np.random.randn(1000)

signal_sigma = y.std()

num_sigma = 3
sigma_values = np.arange(-num_sigma, num_sigma+1)
yticks = signal_sigma * sigma_values
yticklabels = ['$'+str(k)+'\sigma$' if k != 0 else '$\mu$' for k in sigma_values]

plt.figure()
plt.plot(x, y)
plt.yticks(yticks, yticklabels)
plt.ylabel('the axis label')

enter image description here

相关问题 更多 >