Шаг 51.
Язык Python. Визуализация данных. Библиотека Matplotlib. Визуализация данных. Точечный график (Диаграмма рассеяния)

    На этом шаге мы рассмотрим построение такого графика.

    Для построения диаграммы рассеяния используется функция scatter(). В простейшем виде её можно получить, передав функции scatter() координаты х и у:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10.5, 0.5)
y = np.cos(x)
plt.scatter(x, y)

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 1.


Рис.1. Диаграмма распределения (пример 1)

    Для более детальной настройки изображения необходимо воспользоваться дополнительными параметрами функции 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: массив, shape(n, )
Набор данных для оси абсцисс (ось х).

y: массив, shape(n, )
Набор данных для оси ординат (ось у).

s: скалярная величина или массив, shape(n, ), optional
Масштаб точек.

с: цвет (смотри 18 шаг) или набор цветовых элементов, optional
Цвет.

marker: MarkerStyle, optional
Стиль точки.

cmap: str, Colormap (https://matplotlib.org/stable/api/_as_gen/matplotlib.colors.Colormap.html), optional, значение по умолчанию: None
Цветовая карта.

norm: Normalize (https://matplotlib.org/stable/api/_as_gen/matplotlib.colors.Normalize.html), optional, значение по умолчанию: None
Нормализация данных.

alpha: скалярная величина, optional, значение по умолчанию: None
Прозрачность.

linewidths: скалярная величина или массив, optional, значение по умолчанию: None
Ширина границы маркера.

edgecolors: {'face', 'none', None}, цвет (смотри 18 шаг) или набор цветовых элементов, optional
Цвет границы.

    Пример работы с параметрами функции scatter():

import matplotlib.pyplot as plt
import numpy as np

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')

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 2.


Рис.2. Диаграмма распределения (пример 2)

    Пример, демонстрирующий работу с цветом и размером:

import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import numpy as np

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)

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 3.


Рис.3. Модифицированный точечный график (пример 3)

    Со следующего шага мы начнем рассматривать столбчатые и круговые диаграммы.




Предыдущий шаг Содержание Следующий шаг