簡體   English   中英

Python-Matplotlib:標准化y軸以顯示標准差的倍數

[英]Python - Matplotlib: normalizing y-axis to show multiples of standard deviation

我想重新標准化我的y軸,以sigma(標准偏差)的倍數顯示信號。 例如,有人可以說在50Hz時有一個3 sigma信號,而在3Hz時有0.5 sigma信號。

我認為使用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()

但這似乎還不太正確。 我想念什么?

更新:

我要這樣做: 1σ,3σ或5σ檢測是什么意思? 概率表正下方的位。

您要設置的yticklabels與使用plt.ylabel設置軸標簽plt.ylabel

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')

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM