Введение
В этой лабораторной работе вы научитесь создавать и настраивать гистограммы с помощью Matplotlib, одной из самых популярных библиотек для визуализации данных в Python. Гистограмма — это мощный инструмент для визуализации распределения числового набора данных. Она группирует числа в диапазоны (или "корзины") и отображает частоту попадания точек данных в каждую корзину.
Вы выполните следующие шаги:
- Сгенерируете пример данных с помощью NumPy.
- Создадите базовую гистограмму.
- Настроите количество корзин.
- Измените цвет и стиль границ столбцов гистограммы.
- Нормализуете гистограмму для отображения плотности вероятности.
К концу этой лабораторной работы вы сможете создавать информативные и визуально привлекательные гистограммы для ваших проектов по анализу данных. Все графики будут сохранены в виде файлов изображений, которые вы сможете просмотреть непосредственно в LabEx WebIDE.
Генерация выборочных данных с помощью numpy.random
На этом шаге вы сгенерируете набор выборочных данных, которые мы сможем использовать для построения гистограммы. Мы будем использовать библиотеку NumPy, которая является фундаментальным пакетом для научных вычислений в Python. Она предоставляет высокопроизводительный объект многомерного массива и инструменты для работы с этими массивами.
Мы будем использовать функцию numpy.random.normal() для генерации данных, следующих нормальному (или гауссову) распределению. Это распространенный тип распределения данных, встречающийся во многих реальных сценариях.
Сначала откройте файл main.py в файловом проводнике слева от WebIDE. Затем добавьте в него следующий код. Этот код импортирует библиотеку numpy и сгенерирует 1000 случайных чисел со средним значением 0 и стандартным отклонением 1.
import numpy as np
## Generate 1000 data points from a normal distribution
## with a mean (loc) of 0 and a standard deviation (scale) of 1.
data = np.random.normal(loc=0, scale=1, size=1000)
print("Sample data generated successfully.")
Чтобы запустить скрипт, откройте терминал в WebIDE (Terminal -> New Terminal) и выполните следующую команду. Ваша рабочая директория уже установлена как /home/labex/project.
python3 main.py
Вы увидите подтверждающее сообщение в терминале.
Sample data generated successfully.
Переменная data в вашем скрипте теперь содержит массив из 1000 чисел, готовых для визуализации на следующем шаге.
Построение гистограммы с помощью plt.hist(data)
На этом шаге вы создадите свою первую гистограмму. Мы будем использовать модуль matplotlib.pyplot, который предоставляет простой интерфейс для создания графиков. Обычно он импортируется с псевдонимом plt.
Основная функция для создания гистограммы — plt.hist(). В простейшем случае она принимает один аргумент: массив данных, который вы хотите построить.
Поскольку мы находимся в неинтерактивной среде, мы не можем отобразить график напрямую с помощью plt.show(). Вместо этого мы должны сохранить график в файл с помощью plt.savefig().
Обновите файл main.py следующим кодом. Он добавляет логику построения графиков Matplotlib к коду генерации данных из предыдущего шага.
import numpy as np
import matplotlib.pyplot as plt
## Generate sample data
data = np.random.normal(loc=0, scale=1, size=1000)
## Create a histogram
plt.hist(data)
## Save the plot to a file
plt.savefig('/home/labex/project/histogram.png')
print("Basic histogram saved to histogram.png")
Теперь снова запустите скрипт из терминала:
python3 main.py
Вы должны увидеть следующий вывод:
Basic histogram saved to histogram.png
В файловом проводнике слева появится новый файл с именем histogram.png. Дважды щелкните по нему, чтобы открыть и просмотреть вашу первую гистограмму. Она покажет распределение частот сгенерированных вами случайных данных.

Установка количества интервалов (bins) с помощью параметра bins
На этом шаге вы научитесь контролировать детализацию вашей гистограммы, устанавливая количество интервалов (bins). "Интервал" (bin) — это промежуток, представляющий диапазон данных. Количество интервалов может существенно повлиять на интерпретацию распределения. Слишком малое количество интервалов может скрыть важные детали, в то время как слишком большое может создать зашумленный график.
Функция plt.hist() в Matplotlib имеет параметр bins, который позволяет указать количество интервалов. По умолчанию Matplotlib выбирает разумное количество, но часто вам потребуется его изменить.
Давайте изменим код, чтобы создать гистограмму с 30 интервалами. Мы также сохраним ее в новый файл, histogram_bins.png, чтобы сравнить с предыдущим графиком.
Обновите файл main.py следующим образом:
import numpy as np
import matplotlib.pyplot as plt
## Generate sample data
data = np.random.normal(loc=0, scale=1, size=1000)
## Create a histogram with 30 bins
plt.hist(data, bins=30)
## Save the plot to a new file
plt.savefig('/home/labex/project/histogram_bins.png')
print("Histogram with 30 bins saved to histogram_bins.png")
Запустите скрипт из терминала:
python3 main.py
Вывод будет следующим:
Histogram with 30 bins saved to histogram_bins.png
Теперь найдите histogram_bins.png в файловом проводнике и откройте его. Сравните его с первой гистограммой. Вы должны заметить, что столбцы стали уже, предоставляя более детальный вид распределения данных.

Настройка цвета и цвета границ гистограммы
На этом шаге вы настроите внешний вид гистограммы. Хорошо оформленный график легче читать и он выглядит более профессионально. Функция plt.hist() предлагает несколько параметров для стилизации, включая color для заливки столбцов и edgecolor для границ столбцов.
Давайте изменим цвет столбцов на светло-голубой и добавим черные границы, чтобы каждый интервал выделялся более четко.
Измените файл main.py, чтобы включить эти новые параметры. Мы сохраним этот настроенный график в файл histogram_color.png.
import numpy as np
import matplotlib.pyplot as plt
## Generate sample data
data = np.random.normal(loc=0, scale=1, size=1000)
## Create a histogram with 30 bins, custom color, and edgecolor
plt.hist(data, bins=30, color='skyblue', edgecolor='black')
## Save the plot to a new file
plt.savefig('/home/labex/project/histogram_color.png')
print("Styled histogram saved to histogram_color.png")
Выполните скрипт в терминале:
python3 main.py
Вы увидите следующее сообщение:
Styled histogram saved to histogram_color.png
Откройте только что созданный файл histogram_color.png. Вы увидите гораздо более отполированную гистограмму со светло-голубыми столбцами и четкими черными контурами.

Нормализация гистограммы с помощью density=True
На этом шаге вы научитесь создавать нормализованную гистограмму. По умолчанию ось Y гистограммы представляет количество точек данных в каждом интервале. Однако иногда бывает полезнее рассматривать распределение как плотность вероятности. В нормализованной гистограмме высота каждого столбца корректируется таким образом, чтобы общая площадь всех столбцов равнялась 1.
Это достигается путем установки параметра density в значение True в функции plt.hist(). Также хорошей практикой является добавление подписей (labels) и заголовка к вашему графику, чтобы он был самодостаточным.
Давайте обновим скрипт, чтобы создать нормализованную гистограмму и добавить описательные подписи.
import numpy as np
import matplotlib.pyplot as plt
## Generate sample data
data = np.random.normal(loc=0, scale=1, size=1000)
## Create a normalized histogram
plt.hist(data, bins=30, color='skyblue', edgecolor='black', density=True)
## Add title and labels
plt.title('Normalized Histogram of Sample Data')
plt.xlabel('Value')
plt.ylabel('Probability Density')
## Save the plot to a new file
plt.savefig('/home/labex/project/histogram_normalized.png')
print("Normalized histogram saved to histogram_normalized.png")
Запустите финальную версию вашего скрипта:
python3 main.py
Вывод будет следующим:
Normalized histogram saved to histogram_normalized.png
Откройте файл histogram_normalized.png. Обратите внимание, что значения по оси Y теперь намного меньше. Они представляют плотность вероятности, а не сырые количества. Общая форма распределения остается прежней, но масштаб теперь стандартизирован, что полезно для сравнения распределений наборов данных разного размера.

Резюме
Поздравляем с завершением этой лабораторной работы! Вы освоили основные навыки создания и настройки гистограмм с помощью Matplotlib в Python.
В этой лабораторной работе вы:
- Сгенерировали пример данных с использованием
numpy.random.normal(). - Построили базовую гистограмму с помощью
plt.hist(). - Управляли количеством интервалов (bins) с помощью параметра
bins. - Стилизовали вашу гистограмму с помощью параметров
colorиedgecolor. - Создали нормализованную гистограмму плотности вероятности, используя
density=True. - Добавили заголовок и подписи к вашему графику для лучшего контекста.
Гистограммы являются фундаментальным инструментом для исследования и анализа данных. Методы, которые вы здесь изучили, позволят вам эффективно визуализировать распределение ваших собственных наборов данных. Не стесняйтесь продолжать экспериментировать с другими параметрами и типами графиков в Matplotlib.



