- Matplotlib. Урок 4.2. Визуализация данных. Ступенчатый, стековый, точечный график и другие
- Ступенчатый график
- Стековый график
- Stem-график
- Точечный график
- Статьи с описанием различных вариантов работы с точечными графиками
- P.S.
- Matplotlib. Урок 4.2. Визуализация данных. Ступенчатый, стековый, точечный график и другие : 1 комментарий
Matplotlib. Урок 4.2. Визуализация данных. Ступенчатый, стековый, точечный график и другие
В этому уроке рассмотрим на примерах работу со ступенчатым, стековым, stem-графиком и точечным графиком.
Ступенчатый график
Рассмотрим еще одни график – ступенчатый. Такой график строится с помощью функции step() , которая принимает следующий набор параметров:
- x: array_like
- набор данных для оси абсцисс
- набор данных для оси ординат
- Задает отображение линии (см. функцию plot() ).
- метки
- Определяет место, где будет установлен шаг.
- ‘pre’ : значение y ставится слева от значения x , т.е. значение y[i] определяется для интервала (x[i-1]; x[i]) .
- ‘post’ : значение y ставится справа от значения x , т.е. значение y[i] определяется для интервала (x[i]; x[i+1]) .
- ‘mid’ : значение y ставится в середине интервала.
x = np.arange(0, 7) y = x where_set = ['pre', 'post', 'mid'] fig, axs = plt.subplots(1, 3, figsize=(15, 4)) for i, ax in enumerate(axs): ax.step(x, y, "g-o", where=where_set[i]) ax.grid()
Стековый график
Для построения стекового графика используется функция stackplot() . Суть его в том, что графики отображаются друг над другом, и каждый следующий является суммой предыдущего и заданного набора данных:
x = np.arange(0, 11, 1) y1 = np.array([(-0.2)*i**2+2*i for i in x]) y2 = np.array([(-0.4)*i**2+4*i for i in x]) y3 = np.array([2*i for i in x]) labels = ["y1", "y2", "y3"] fig, ax = plt.subplots() ax.stackplot(x, y1, y2, y3, labels=labels) ax.legend(loc='upper left')
Верхний край области y2 определяется как сумма значений из наборов y1 и y2 , y3 – соответственно сумма y1 , y2 и y3 .
Stem-график
Визуально этот график выглядит как набор линий от точки с координатами ( x , y ) до базовой линии, в верхней точке ставится маркер:
x = np.arange(0, 10.5, 0.5) y = np.array([(-0.2)*i**2+2*i for i in x]) plt.stem(x, y)
Дополнительные параметры функции stem() :
Реализуем пример, демонстрирующий работу с дополнительными параметрами:
plt.stem(x, y, linefmt="r--", markerfmt="^", bottom=1)
Точечный график
Для отображения точечного графика предназначена функция scatter() . В простейшем виде точечный график можно получить передав функции scatter() наборы точек для x , y координат:
x = np.arange(0, 10.5, 0.5) y = np.cos(x) plt.scatter(x, y)
Для более детальной настройки отображения необходимо воспользоваться дополнительными параметрами функции scatter() , сигнатура ее вызова имеет следующий вид:
scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, plotnonfinite=False, data=None, **kwargs)
Рассмотрим некоторые из параметров:
Параметр Тип Описание x array_like, shape (n, ) Набор данных для оси абсцисс y array_like, shape (n, ) Набор данных для оси ординат s scalar или array_like, shape (n, ), optional Масштаб точек c color, sequence, или sequence of color, optional Цвет marker MarkerStyle , optional Стиль точки объекта cmap Colormap , optional, default: None Цветовая схема norm Normalize , optional, default: None Нормализация данных alpha scalar, optional, default: None Прозрачность linewidths scalar или array_like, optional, default: None Ширина границы маркера edgecolors или color или sequence of color, optional. Цвет границы Создадим решение, использующее расширенные параметры для настройки отображения графика:
x = np.arange(0, 10.5, 0.5) y = np.cos(x) plt.scatter(x, y, s=80, c="r", marker="D", linewidths=2, edgecolors="g")
Пример, демонстрирующий работу с цветом и размером:
import matplotlib.colors as mcolors bc = mcolors.BASE_COLORS x = np.arange(0, 10.5, 0.25) y = np.cos(x) num_set = np.random.randint(1, len(mcolors.BASE_COLORS), len(x)) sizes = num_set * 35 colors = [list(bc.keys())[i] for i in num_set] plt.scatter(x, y, s=sizes, alpha=0.4, c=colors, linewidths=2, edgecolors="face") plt.plot(x, y, "g--", alpha=0.4)
Статьи с описанием различных вариантов работы с точечными графиками
P.S.
Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта . Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Matplotlib. Урок 4.2. Визуализация данных. Ступенчатый, стековый, точечный график и другие : 1 комментарий