Как проецировать определенные значения из графика на ось в Python? - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь построить нормальную кривую распределения в Python, используя matplotlib. Я следовал за принятым ответом в посте Python Pylab plot нормальное распределение , чтобы сгенерировать график.

Я хотел бы знать, есть ли способ проецирования мю - 3 * сигма, мю + 3 * сигма и средние значения как по оси х, так и по оси у.

Спасибо

РЕДАКТИРОВАТЬ 1 Изображение для объяснения проекции example_image .

На изображении я пытаюсь спроецировать среднее значение по осям x и y. Я хотел бы знать, есть ли способ, которым я могу достигнуть этого наряду с получением значений (синие круги на осях x и y) на осях x и y.

1 Ответ

0 голосов
/ 08 января 2019

Следующий скрипт показывает, как добиться того, чего вы хотите:

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

mu = 2
variance = 9
sigma = np.sqrt(variance)

x = np.linspace(mu - 3*sigma, mu + 3*sigma, 500)
y = stats.norm.pdf(x, mu, sigma)

fig, ax = plt.subplots()
ax.plot(x, y)

ax.set_xlim([min(x), max(x)])
ax.set_ylim([min(y), max(y)+0.02])

ax.hlines(y=max(y), xmin=min(x), xmax=mu, color='r')
ax.vlines(x=mu, ymin=min(y), ymax=max(y), color='r')

plt.show()

Произведенный участок составляет

enter image description here

Если вы знакомы со свойствами нормального распределения, легко узнать, что пересечение с осью x составляет просто mu, то есть среднее значение распределения. Пересечение с осью y является максимальным значением y, т. Е. max(y) в коде.

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