Диаграммы рассеяния Matplotlib

Мы можем использовать метод scatter() в pyplot для построения диаграмм рассеяния.

Синтаксис метода scatter() выглядит следующим образом:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

Описание параметра:

x,y: массивы одинаковой длины, представляющие точки данных, которые мы собираемся нанести на график, входные данные.

s: размер точек, по умолчанию 20, также может быть массивом, где каждый параметр массива — это размер соответствующей точки.

c: цвет точек, по умолчанию синий 'b', также может быть двумерным массивом, состоящим из строк RGB или RGBA.

marker: стиль точки, по умолчанию маленький круг 'o'.

cmap: цветовая карта, по умолчанию None, скаляр или имя цветовой карты, используется только когда c — массив чисел с плавающей запятой. Если не объявлено, используется image.cmap.

norm: Normalize, по умолчанию None, яркость данных в диапазоне 0-1, используется только когда c — массив чисел с плавающей точкой.

vmin,vmax:: настройка яркости, игнорируется, если существует параметр norm.

alpha:: настройка прозрачности, в диапазоне 0-1, по умолчанию None, что означает непрозрачность.

linewidths:: длина точки маркера.

edgecolors:: цвет или последовательность цветов, по умолчанию 'face', возможные значения — 'face', 'none', None.

plotnonfinite:: логическое значение, задаёт, отрисовывать ли точки, используя недопустимые c (inf, -inf или nan).

**kwargs:: другие параметры.

Следующий пример передаёт массивы одинаковой длины в функцию scatter(), один для значений оси x, другой для значений оси y:

Пример

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])

plt.scatter(x, y)
plt.show()

Отображаемый результат выглядит следующим образом:

Установите размер маркеров:

Пример

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,60,90])
plt.scatter(x, y, s=sizes)
plt.show()

Отображаемый результат выглядит следующим образом:

Настройте цвет точек:

Пример

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])

plt.scatter(x, y, c=colors)
plt.show()

Отображаемый результат выглядит следующим образом:

Постройте два набора диаграмм рассеяния:

Пример

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')

x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#6F9CC9')

plt.show()

Отображаемый результат выглядит следующим образом:

Используйте случайные числа для настройки диаграммы рассеяния:

Пример

import numpy as np
import matplotlib.pyplot as plt

# Начальное значение для генератора случайных чисел
np.random.seed(19680801)


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2  # радиусы точек от 0 до 15

plt.scatter(x, y, s=area, c=colors, alpha=0.5) # Задать цвет и прозрачность

plt.title("EXAMPLE Scatter Test") # Задать заголовок

plt.show()

Отображаемый результат выглядит следующим образом:

Цветовая шкала и цветовая карта

Модуль Matplotlib предоставляет множество доступных цветовых шкал.

Цветовая шкала похожа на список цветов, где каждый цвет имеет значение в диапазоне от 0 до 100.

Вот пример цветовой шкалы:

Чтобы задать цветовую шкалу, нужно использовать параметр cmap со значением по умолчанию 'viridis', а затем задать значения цветов в виде массива от 0 до 100.

Пример

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.show()

Отображаемый результат выглядит следующим образом:

Если вы хотите отобразить цветовую шкалу, вам нужно использовать методplt.colorbar():

Пример

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.colorbar()

plt.show()

Отображаемый результат выглядит следующим образом:

Используйте другой параметр цветовой шкалы, установите для cmap значениеafmhot_r:

Пример

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='afmhot_r')
plt.colorbar()
plt.show()

Отображаемый результат выглядит следующим образом:

Значения параметра colorbar могут быть следующими:

Названия цветов   Зарезервированные ключевые слова
Accent   Accent_r
Blues   Blues_r
BrBG   BrBG_r
BuGn   BuGn_r
BuPu   BuPu_r
CMRmap   CMRmap_r
Dark2   Dark2_r
GnBu   GnBu_r
Greens   Greens_r
Greys   Greys_r
OrRd   OrRd_r
Oranges   Oranges_r
PRGn   PRGn_r
Paired   Paired_r
Pastel1   Pastel1_r
Pastel2   Pastel2_r
PiYG   PiYG_r
PuBu   PuBu_r
PuBuGn   PuBuGn_r
PuOr   PuOr_r
PuRd   PuRd_r
Purples   Purples_r
RdBu   RdBu_r
RdGy   RdGy_r
RdPu   RdPu_r
RdYlBu   RdYlBu_r
RdYlGn   RdYlGn_r
Reds   Reds_r
Set1   Set1_r
Set2   Set2_r
Set3   Set3_r
Spectral   Spectral_r
Wistia   Wistia_r
YlGn   YlGn_r
YlGnBu   YlGnBu_r
YlOrBr   YlOrBr_r
YlOrRd   YlOrRd_r
afmhot   afmhot_r
autumn   autumn_r
двоичная   binary_r
bone   bone_r
brg   brg_r
bwr   bwr_r
cividis   cividis_r
cool   cool_r
coolwarm   coolwarm_r
copper   copper_r
cubehelix   cubehelix_r
flag   flag_r
gist_earth   gist_earth_r
gist_gray   gist_gray_r
gist_heat   gist_heat_r
gist_ncar   gist_ncar_r
gist_rainbow   gist_rainbow_r
gist_stern   gist_stern_r
gist_yarg   gist_yarg_r
gnuplot   gnuplot_r
gnuplot2   gnuplot2_r
gray   gray_r
hot   hot_r
hsv   hsv_r
inferno   inferno_r
jet   jet_r
magma   magma_r
nipy_spectral   nipy_spectral_r
ocean   ocean_r
pink   pink_r
plasma   plasma_r
prism   prism_r
rainbow   rainbow_r
seismic   seismic_r
spring   spring_r
summer   summer_r
tab10   tab10_r
tab20   tab20_r
tab20b   tab20b_r
tab20c   tab20c_r
terrain   terrain_r
twilight   twilight_r
twilight_shifted   twilight_shifted_r
viridis   viridis_r
winter   winter_r

Другие расширения