Средняя точка и столбцы стандартного отклонения на диаграмме рассеяния - PullRequest
1 голос
/ 30 апреля 2019

Если у меня есть график рассеяния, подобный этому MWE:

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(5)
fig = plt.figure()
ax = fig.add_subplot(111)
xlist = []
ylist = []
for i in range(500):
    x = np.random.normal(100)
    xlist.append(x)
    y = np.random.normal(5)
    ylist.append(y)

x_ave = np.average(x)
y_ave = np.average(y)
plt.scatter(xlist, ylist)
plt.scatter(x_ave, y_ave, c = 'red', marker = '*', s = 50)

enter image description here

Какой самый простой способ построить «среднюю точку» (есть подходящее слово для этого?) на сюжете?Все учебники и примеры, которые я нашел, показывают, как построить линию наилучшего соответствия, но я просто хочу одну точку.

График (x_ave, y_ave) работает, но есть ли лучший способ, тем более что яв конечном итоге хотите показать стандартные отклонения и с ошибками?

1 Ответ

0 голосов
/ 30 апреля 2019

Если вы хотите построить одну точку рассеяния с полосами ошибок, лучше всего использовать модуль errorbar.В следующем ответе показан пример использования его с настроенными свойствами полос ошибок и средней точки со стандартным отклонением 1 для x и y.Вы можете указать свои фактические значения стандартного отклонения в xerr и yerr.Столбики ошибок можно удалить из легенды, используя это решение.

plt.scatter(xlist, ylist)

plt.errorbar(x_ave, y_ave, yerr=1, xerr=1, fmt='*', color='red', ecolor='black', ms=20, 
             elinewidth=4, capsize=10, capthick=4, label='Average')

handles, labels = ax.get_legend_handles_labels()
handles = [h[0] for h in handles]
ax.legend(handles, labels, loc='best', fontsize=16)

enter image description here

...