Matplotlib: как раскрасить диаграмму рассеяния по значению


Часто вы можете захотеть затенить цвет точек на диаграмме рассеяния matplotlib на основе какой-то третьей переменной. К счастью, это легко сделать с помощью функции matplotlib.pyplot.scatter() , которая имеет следующий синтаксис:

matplotlib.pyplot.scatter (x, y, s = нет, c = нет, cmap = нет)

куда:

  • x: Массив значений, используемых для координат оси X на графике.
  • y: Массив значений, используемых для координат оси Y на графике.
  • s: Размер маркера.
  • c: Массив значений для цветов маркеров.
  • cmap: карта цветов для использования в графике.

Вы можете использовать c , чтобы указать переменную, которая будет использоваться для значений цвета, и вы можете использовать cmap , чтобы указать фактические цвета, которые будут использоваться для маркеров на диаграмме рассеивания.

В этом руководстве объясняется несколько примеров использования этой функции на практике.

Пример 1: цвет точек диаграммы рассеяния по значению

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'x': [25, 12, 15, 14, 19, 23, 25, 29],
 'y': [5, 7, 7, 9, 12, 9, 9, 4],
 'z': [3, 4, 4, 5, 7, 8, 8, 9]})

#view DataFrame
df

 x y z
0 25 5 3
1 12 7 4
2 15 7 4
3 14 9 5
4 19 12 7
5 23 9 8
6 25 9 8
7 29 4 9

В следующем коде показано, как создать диаграмму рассеивания с использованием карты оттенков серого и значений переменной z в качестве оттенка для карты цветов:

import matplotlib.pyplot as plt

#create scatterplot
plt.scatter (df.x, df.y, s=200, c=df.z, cmap='gray')

Для этого конкретного примера мы выбрали цветовую карту «серый», но вы можете найти полный список цветовых карт, доступных для использования, в документации по цветовой карте matplotlib .

Например, вместо этого мы могли бы указать «Зеленые» в качестве цветовой карты:

plt.scatter (df.x, df.y, s=200, c=df.z, cmap='Greens') 

По умолчанию маркеры с большими значениями аргумента c затемняются темнее, но вы можете изменить это, просто добавив _r к имени cmap:

plt.scatter (df.x, df.y, s=200, c=df.z, cmap='Greens_r') 

Пример 2. Цвет точек на диаграмме рассеяния по категориям

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'x': [25, 12, 15, 14, 19, 23, 25, 29],
 'y': [5, 7, 7, 9, 12, 9, 9, 4],
 'z': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']})

#view DataFrame
df

 x y z
0 25 5 A
1 12 7 A
2 15 7 B
3 14 9 B
4 19 12 B
5 23 9 C
6 25 9 C
7 29 4 C

В следующем коде показано, как создать диаграмму рассеяния, используя переменную z для окрашивания маркеров в зависимости от категории:

import matplotlib.pyplot as plt

groups = df.groupby('z')
for name, group in groups:
 plt.plot (group.x, group.y, marker='o', linestyle='', markersize=12, label=name)

plt.legend()

Вы можете найти больше руководств по Python здесь .