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


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

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

Золото:

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

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

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

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

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

 import pandas as pd

#createDataFrame
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 по значению

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

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

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

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

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

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

Инвертированная шкала цветовой палитры Matplotlib

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

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

 import pandas as pd

#createDataFrame
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 ()

Диаграмма рассеяния Matplotlib, раскрашенная по категориям

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *