Python - Matplotlib: нормализация оси y для отображения кратных стандартному отклонению - PullRequest
0 голосов
/ 30 ноября 2018

Я хотел бы перенормировать ось Y, чтобы показать мой сигнал в виде кратных сигма (стандартное отклонение).Например, можно сказать, что при 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()

Но это пока не совсем правильно.Чего мне не хватает?

ОБНОВЛЕНИЕ:

Это то, что я хотел бы сделать: Что означает 1-сигма, 3-сигма илиСреднее значение обнаружения 5-сигма? Бит прямо под таблицей вероятностей.

1 Ответ

0 голосов
/ 30 ноября 2018

Вы хотите установить yticklabels, который отличается от установки метки оси с помощью 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')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...