metodi/app/labs/lab2.py

52 lines
2.0 KiB
Python
Raw Normal View History

2024-10-17 03:04:08 +03:00
import numpy as np
import matplotlib.pyplot as plt
class lab2:
def __init__(self):
pass
def main(self):
# Используем массивы из первой работы
2024-10-17 03:04:08 +03:00
x11 = np.random.normal(2, 1, [10, 1])
x21 = np.random.normal(6, 2, [10, 1])
# Построение диаграммы рассеяния
2024-10-17 03:04:08 +03:00
plt.scatter(x11, x21)
plt.xlabel("x1")
plt.ylabel("x2")
2024-10-17 03:04:08 +03:00
plt.title("Диаграмма рассеяния")
plt.show()
# Построение гистограммы
2024-10-17 03:04:08 +03:00
hist_data = np.vstack((x11, x21))
plt.hist(hist_data, bins=10)
plt.xlabel("Значение признака")
plt.ylabel("Количество значений")
plt.title("Гистограмма")
2024-10-17 03:04:08 +03:00
plt.show()
# Построение "ящика с усами"
boxplot_data = plt.boxplot((x11.ravel(), x21.ravel()), notch=True)
plt.xlabel("Массив")
plt.ylabel("Значение признака")
plt.title("Ящик с усами")
plt.xticks([1, 2], ['x11', 'x21'])
2024-10-17 03:04:08 +03:00
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 'Нет выбросов'}")
2024-10-17 03:04:08 +03:00
if __name__ == "__main__":
l2 = lab2()
l2.main()