52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
import numpy as np
|
||
import matplotlib.pyplot as plt
|
||
|
||
class lab2:
|
||
|
||
def __init__(self):
|
||
pass
|
||
|
||
def main(self):
|
||
|
||
# Используем массивы из первой работы
|
||
x11 = np.random.normal(2, 1, [10, 1])
|
||
x21 = np.random.normal(6, 2, [10, 1])
|
||
|
||
# Построение диаграммы рассеяния
|
||
plt.scatter(x11, x21)
|
||
plt.xlabel("x1")
|
||
plt.ylabel("x2")
|
||
plt.title("Диаграмма рассеяния")
|
||
plt.show()
|
||
|
||
# Построение гистограммы
|
||
hist_data = np.vstack((x11, x21))
|
||
plt.hist(hist_data, bins=10)
|
||
plt.xlabel("Значение признака")
|
||
plt.ylabel("Количество значений")
|
||
plt.title("Гистограмма")
|
||
plt.show()
|
||
|
||
# Построение "ящика с усами"
|
||
boxplot_data = plt.boxplot((x11.ravel(), x21.ravel()), notch=True)
|
||
plt.xlabel("Массив")
|
||
plt.ylabel("Значение признака")
|
||
plt.title("Ящик с усами")
|
||
plt.xticks([1, 2], ['x11', 'x21'])
|
||
plt.show()
|
||
|
||
# Получение данных для таблицы
|
||
for i, name in enumerate(['x11', 'x21'], start=1):
|
||
print(f"Данные для {name}:")
|
||
print(f"Медиана: {boxplot_data['medians'][i-1].get_ydata()[0]}")
|
||
print(f"Нижняя граница: {boxplot_data['whiskers'][2*(i-1)].get_ydata()[1]}")
|
||
print(f"Верхняя граница: {boxplot_data['whiskers'][2*(i-1)+1].get_ydata()[1]}")
|
||
print(f"Нижний квартиль: {boxplot_data['boxes'][i-1].get_ydata()[1]}")
|
||
print(f"Верхний квартиль: {boxplot_data['boxes'][i-1].get_ydata()[2]}")
|
||
fliers = boxplot_data['fliers'][i-1].get_ydata()
|
||
print(f"Выбросы: {', '.join(map(str, fliers)) if fliers.size > 0 else 'Нет выбросов'}")
|
||
|
||
if __name__ == "__main__":
|
||
l2 = lab2()
|
||
l2.main()
|