Важнейшая часть работы с данными — их визуализация. У Python есть несколько сторонних модулей, которые вы можете использовать для визуализации данных. Один из самых популярных модулей — Matplotlib и его подмодуль pyplot, часто называемый псевдонимом plt. В Matplotlib есть универсальный инструмент под названием plt.scatter(), который позволяет создавать как основные, так и более сложные диаграммы рассеяния.

Ниже вы увидите несколько примеров, которые покажут, как наиболее эффективно использовать эту функцию.

В этом уроке вы узнаете:

  • Как сделать диаграмму рассеяния с помощью plt.scatter()
  • Как использовать обязательные и необязательные входные параметры
  • Настроите точечные диаграммы для основных и более сложных графиков
  • Покажите на диаграмме рассеяния более двух измерений

Чтобы получить максимальную отдачу от этого руководства, вы должны быть знакомы с основами программирования Python и основами NumPy и его объекта ndarray. Для этого урока не обязательно быть знакомым с Matplotlib, но если вы хотите узнать больше о модуле, посмотрите Python Plotting With Matplotlib (Guide).

Содержание

Создание точечных диаграмм   

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

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

Начало работы с plt.scatter()   

Прежде чем вы сможете начать работать с plt.scatter(), необходимо убедится, что Matplotlib установлен. Если его нет в вашей среде Python, то установку нужно сделать с помощью стандартного менеджера пакетов Python, pip, выполнив в консоли следующую команду:

$ python -m pip install matplotlib

Теперь, когда у вас установлен Matplotlib, выполним следующее упражнение. В кафе продают шесть разных видов апельсиновых напитков в бутылках. Владелец хочет понять взаимосвязь между ценой напитков и количеством проданных напитков, поэтому он отслеживает, сколько напитков он продает каждый день. Вы можете визуализировать эти отношения следующим образом:

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()

В этом скрипте импортируется подмодуль pyplot из Matplotlib, используя псевдоним plt. Этот псевдоним обычно используется по соглашению для сокращения имен модулей и подмодулей. Затем вы создаете списки с ценой и средними продажами в день для каждого из шести проданных апельсиновых напитков.

Наконец, вы создаете диаграмму рассеяния, используя plt.scatter() с двумя переменными, которые вы хотите сравнить, в качестве входных аргументов. Поскольку вы используете скрипт Python, вам также необходимо явно отобразить рисунок с помощью plt.show().

Когда вы используете интерактивную среду, такую ​​как консоль или блокнот Jupyter, вам не нужно вызывать plt.show(). В этом уроке все примеры будут в форме скриптов и будут включать вызов plt.show().

Вот результат этого кода:

Этот график показывает, что, как правило, чем дороже напиток, тем меньше он продаётся. Однако напиток, который стоит 4,02 доллара, является исключением, что может свидетельствовать о том, что это особенно популярный продукт. При таком использовании точечных диаграмм тщательный анализ может помочь вам изучить взаимосвязь между переменными. Затем вы можете провести дальнейший анализ, будь то линейная регрессия или другие методы.

Сравнение plt.scatter() и plt.plot()   

Диаграмму рассеяния, показанную выше, можно создать, используя другую функцию в matplotlib.pyplot. Plt.plot() в Matplotlib — это универсальная функция построения графиков, которая позволит вам создавать различные линейные или маркированные графики.

Такой же график рассеяния, как тот, который получился в предыдущем разделе, создадим с помощью следующего вызова plt.plot(), используя те же данные:

plt.plot(price, sales_per_day, "o")
plt.show()

В этом случае обязательно нужно указать маркер «o» в качестве третьего аргумента, иначе plt.plot() построит линейный график. График, который вы создали с помощью этого кода, идентичен графику, который вы создали ранее с помощью plt.scatter().

В некоторых случаях для основного графика рассеяния, который вы строите в этом примере, может быть предпочтительнее использовать функцию plt.plot(), которая позволяет сравнить эффективность двух функций с помощью модуля timeit:

import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)

Производительность будет различаться на разных компьютерах, но когда вы запустите этот код, то обнаружите, что plt.plot() работает значительно быстрее, чем plt.scatter(). При запуске приведенного выше примера в моей системе plt.plot() была более чем в шесть раз быстрее.

Если вы можете создавать диаграммы рассеяния с помощью plt.plot() и это намного быстрее, зачем использовать plt.scatter()? Далее вы найдете ответ на этот вопрос. Большинство настроек и дополнительных возможностей, о которых вы узнаете в этом уроке, возможны только при использовании plt.scatter(). Вот практическое правило, которое вы можете использовать:

Если вам нужна базовая диаграмма рассеяния, используйте plt.plot(), особенно если производительность у вас в приоритете. Если нужны более продвинутые функций построения графиков, используйте plt.scatter().

У меня получилось так:

В следующем разделе начнём изучать более сложные способы использования plt.scatter().

Настройка маркеров на точечных графиках   

На двумерной диаграмме рассеяния, настроив маркеры, можно показать более двух переменных. Маркеры, используемые на диаграмме рассеяния, обладают четырьмя основными характеристиками, которые можно настроить с помощью plt.scatter():

  1. Размер
  2. Цвет
  3. Форма
  4. Прозрачность

В этом разделе вы узнаете, как изменить все эти свойства.

Изменение размера   

Вернемся к владельцу кафе, с которым мы уже познакомились. Он продает разные апельсиновые напитки от разных поставщиков и имеет разную норму прибыли. Можно отобразить эту дополнительную информацию на диаграмме рассеяния, отрегулировав размер маркера. В этом примере размер прибыли указан в процентах:

import matplotlib.pyplot as plt
import numpy as np

price = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin = np.asarray([20, 35, 40, 20, 27.5, 15])

plt.scatter(x=price, y=sales_per_day, s=profit_margin * 10)
plt.show()

Здесь есть несколько отличий от первого примера. Вместо списков используются массивы NumPy. Можно использовать любую структуру данных, подобную массиву, для данных, и массивы NumPy обычно используются в этих типах приложений, поскольку они позволяют эффективно выполнять поэлементные операции. Модуль NumPy является зависимостью от Matplotlib, поэтому не нужно устанавливать его отдельно.

Также можно использовали именованные параметры в качестве входных аргументов при вызове функции. Параметры x и y являются обязательными, но все остальные параметры необязательны.

Параметр s обозначает размер маркера. В этом примере используется маржа прибыли в качестве переменной для определения размера маркера умножением её на 10 для более четкого показа разницы в размерах.

Вы можете увидеть диаграмму рассеяния, созданную этим кодом ниже:

Размер маркера пропорционален размеру прибыли от продажи каждого продукта. Два апельсиновых напитка, которые продаются больше всего, имеют самую высокую прибыль. Это хорошая новость для владельца кафе!

Изменение цвета   

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

Вы можете добавить цвет к маркерам на диаграмме разброса, чтобы показать содержание сахара в каждом напитке:

# ...

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

sugar_content = [low, high, medium, medium, high, low]

plt.scatter(
    x=price,
    y=sales_per_day,
    s=profit_margin * 10,
    c=sugar_content,
)
plt.show()

Здесь определены кортежи low, medium и high, каждый из которых содержит три значения, представляющие компоненты красного, зеленого и синего цветов в указанном порядке. Это значения цвета RGB. Кортежи для низкого, среднего и высокого уровня представляют соответственно зеленый, желтый и красный цвета.

Затем определена переменная sugar_content для классификации каждого напитка. Для определения цвета каждого маркера при вызове функции используется необязательный параметр c=sugar_content, который и задаёт цвет каждого маркера. Вот диаграмма рассеяния, созданная этим кодом:

Владелец кафе уже решил убрать из меню самый дорогой напиток, так как он плохо продается и содержит большое количество сахара. Возникает этический вопрос — Следует ли ему и дальше продавать самые дешевые напитки для повышения репутации бизнеса, даже если они хорошо продается и дают хорошую маржу?

Изменение формы   

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

import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])ожно получить 
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()

В этом коде реорганизованы имена переменных с учётом того, что теперь у нас есть данные для двух разных продуктов. Затем наносим обе диаграммы рассеяния на одну диаграмму и получаем следующий результат:

К сожалению, больше не возможно определить, какие точки данных принадлежат апельсиновым напиткам, а какие — зерновым батончикам. Однако, можно изменить форму маркера для одной из диаграмм разброса:

import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
)
plt.show()

Сохраняем форму маркера по умолчанию для данных об апельсиновом напитке. Маркер по умолчанию — «o», что означает точку. Для данных зернового батончика вы устанавливаете форму маркера на «d», что представляет собой ромбовидный маркер. Вы можете найти список всех маркеров, которые вы можете использовать, на странице документации по маркерам. Вот две диаграммы разброса, наложенные на один и тот же рисунок:

Теперь можно отличить точки данных для апельсиновых напитков от точек для зерновых батончиков. Но есть ещё одна проблема с последним созданным нами сюжетом, которую исследуете в следующем разделе.

Изменение прозрачности   

Одна из точек данных для апельсиновых напитков исчезла. Оранжевых напитков должно быть шесть, но на рисунке видно только пять круглых маркеров. Одна из точек данных зернового батончика скрывает точку данных апельсинового напитка.

Вы можете решить эту проблему визуализации, сделав точки данных частично прозрачными с помощью альфа-канала:

import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
    alpha=0.5,
)

plt.title("Продажи и цены на апельсиновые напитки и зерновые батончики")
plt.legend(["Апельсиновые напитки", "Зерновые батончики"])
plt.xlabel("Цена (Валютная единица)")
plt.ylabel("Средние недельные продажи")
plt.text(
    3.2,
    55,
    "Размер маркера = размер прибыли\n" "Цвет маркера = содержание сахара",
)

plt.show()

Значение альфа-канала для обоих наборов маркеров установлено в 0,5, т.е. они полупрозрачны. Теперь можно увидеть все точки данных на этом графике, включая совпадающие:

Кроме того, добавлены заголовок и другие комментарии к графику, что завершает диаграмму полезной информацией о предмете визуализации.

Настройка цветовой карты и стиля   

На диаграммах разброса, которые мы создали, использовано три цвета для обозначения низкого, среднего или высокого содержания сахара в напитках и зерновых батончиках. Теперь изменим это так, чтобы цвет непосредственно отображал фактическое содержание сахара в продуктах.

Сначала вам нужно реорганизовать переменные sugar_content_orange и sugar_content_cereal для отображения значения содержания сахара, а не только значения цвета RGB:

sugar_content_orange = [15, 35, 22, 27, 38, 14]
sugar_content_cereal = [21, 49, 29, 24]

Теперь это списки, содержащие процент от рекомендуемого суточного количества сахара в каждом продукте. Остальной код остается прежним, но теперь для использования можно выбрать цветовую карту, которая отображает значения в цвета:

# ...

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    cmap="jet",
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    cmap="jet",
    marker="d",
    alpha=0.5,
)

plt.title("Sales vs Prices for Orange Drinks and Cereal Bars")
plt.legend(["Orange Drinks", "Cereal Bars"])
plt.xlabel("Price (Currency Unit)")
plt.ylabel("Average weekly sales")
plt.text(
    2.7,
    55,
    "Size of marker = profit margin\n" "Color of marker = sugar content",
)
plt.colorbar()

plt.show()

Теперь цвет маркеров согласован с непрерывной шкалой, которая также отображается на диаг7рамме и служит легендой цветов маркеров. Вот итоговая диаграмма рассеяния:

Все графики, которые были построены до сих пор, отображены в собственном стиле Matplotlib. Но можно изменить этот стиль, используя один из нескольких вариантов. Можно отобразить доступные стили, используя следующую команду:

>>> plt.style.available
[
    "Solarize_Light2",
    "_classic_test_patch",
    "bmh",
    "classic",
    "dark_background",
    "fast",
    "fivethirtyeight",
    "ggplot",
    "grayscale",
    "seaborn",
    "seaborn-bright",
    "seaborn-colorblind",
    "seaborn-dark",
    "seaborn-dark-palette",
    "seaborn-darkgrid",
    "seaborn-deep",
    "seaborn-muted",
    "seaborn-notebook",
    "seaborn-paper",
    "seaborn-pastel",
    "seaborn-poster",
    "seaborn-talk",
    "seaborn-ticks",
    "seaborn-white",
    "seaborn-whitegrid",
    "tableau-colorblind10",
]

Теперь изменим стиль графика Matplotlib для чего, перед вызовом plt.scatter() используя следующий вызов функции:

import matplotlib.pyplot as plt
import numpy as np

plt.style.use("seaborn")

# ...

Мы поменяли стиль на стиль Seaborn, от другого стороннего пакета визуализации. Посмотрите на окончательную диаграмму рассеяния, который была показали выше, но с использованием стиля Seaborn:

Вы можете узнать больше о настройке графиков в Matplotlib, а также на страницах документации Matplotlib есть дополнительные руководства.

Использование plt.scatter() для создания диаграмм рассеяния позволяет отображать более двух переменных. Вот переменные, представленные в этом примере:

Переменная Показывает
Цена Ось X
Среднее количество продаж Ось Y
Рентабельность Размер маркера
Продукция Форма маркера
Содержание сахара Цвет маркета

Возможность представлять более двух переменных делает plt.scatter() очень мощным и универсальным инструментом.

Дальнейшее изучение plt.scatter()   

plt.scatter() обладает большой гибкостью в настройках диаграмм разброса. В этом разделе на примере буде показано, как маскировать данные с помощью массивов NumPy и диаграмм. Создадим случайные точки данных, а затем разделим их на две отдельные области на одной диаграмме рассеяния.

Пассажирка, которая любит собирать данные, сопоставила время прибытия автобусов на свою остановку за шесть месяцев. По расписанию прибытие составляет 15 или 45 минут через час, но она заметила, что истинное время прибытия приблизительно с нормальным законом распределения:

Этот график показывает относительную вероятность прибытия автобуса каждую минуту с начала часа. Это распределение вероятностей можно представить с помощью NumPy и np.linspace():

import matplotlib.pyplot as plt
import numpy as np

mean = 15, 45
sd = 5, 7

x = np.linspace(0, 59, 60)  # Represents each minute within the hour
first_distribution = np.exp(-0.5 * ((x - mean[0]) / sd[0]) ** 2)
second_distribution = 0.9 * np.exp(-0.5 * ((x - mean[1]) / sd[1]) ** 2)
y = first_distribution + second_distribution
y = y / max(y)

plt.plot(x, y)
plt.ylabel("Относительная вероятность прибытия автобуса")
plt.xlabel("Минут от начала часа")
plt.show()

Мы создали два нормальных распределения с центром в 15 и 45 минут с начала часа и просуммировали их. Устанавливаем наиболее вероятное время прибытия равным 1 делением на максимальное значение.

Теперь можно моделировать время прибытия автобуса, используя это распределение. Для этого создаём случайные моменты времени и случайные относительные вероятности с помощью встроенного
модуля генерации случайных чисел. В приведенном ниже коде будем использовать составные части списка:

import random
import matplotlib.pyplot as plt
import numpy as np

n_buses = 40
bus_times = np.asarray([random.randint(0, 59) for _ in range(n_buses)])
bus_likelihood = np.asarray([random.random() for _ in range(n_buses)])

plt.scatter(x=bus_times, y=bus_likelihood)
plt.title("Randomly chosen bus arrival times and relative probabilities")
plt.ylabel("Relative probability of bus arrivals")
plt.xlabel("Minutes past the hour")
plt.show()

Мы смоделировали прибытие 40 автобусов, которые можно визуализировать с помощью следующего графика рассеяния:

Наш график будет выглядеть иначе, поскольку сгенерированные данные являются случайными. Однако, не все эти моменты, вероятно, будут близки к реальности, наблюдаемые пассажиркой, которые она собрала и проанализировала. Можно построить график распределения, который она получила из данных с моделированием прибытия автобусов:

import random
import matplotlib.pyplot as plt
import numpy as np

mean = 15, 45
sd = 5, 7

x = np.linspace(0, 59, 60)
first_distribution = np.exp(-0.5 * ((x - mean[0]) / sd[0]) ** 2)
second_distribution = 0.9 * np.exp(-0.5 * ((x - mean[1]) / sd[1]) ** 2)
y = first_distribution + second_distribution
y = y / max(y)

n_buses = 40
bus_times = np.asarray([random.randint(0, 59) for _ in range(n_buses)])
bus_likelihood = np.asarray([random.random() for _ in range(n_buses)])

plt.scatter(x=bus_times, y=bus_likelihood)
plt.plot(x, y)
plt.title("Случайно выбранное время прибытия автобуса и относительная вероятность")
plt.ylabel("Относительная вероятность прибытия автобуса")
plt.xlabel("Минут от начала часа")
plt.show()

Вот что получилось:

Чтобы моделирование было близко к реальности, необходимо убедиться в том, что случайные времена прибытия автобуса соответствовали данным и распределению, полученному на их основе. Можно отфильтровать случайно сгенерированные точки, оставив только те, которые попадают в распределение вероятностей. Создадим маску для диаграммы рассеяния:

import random
import matplotlib.pyplot as plt
import numpy as np

mean = 15, 45
sd = 5, 7

x = np.linspace(0, 59, 60)
first_distribution = np.exp(-0.5 * ((x - mean[0]) / sd[0]) ** 2)
second_distribution = 0.9 * np.exp(-0.5 * ((x - mean[1]) / sd[1]) ** 2)
y = first_distribution + second_distribution
y = y / max(y)

n_buses = 40
bus_times = np.asarray([random.randint(0, 59) for _ in range(n_buses)])
bus_likelihood = np.asarray([random.random() for _ in range(n_buses)])

in_region = bus_likelihood < y[bus_times]
out_region = bus_likelihood >= y[bus_times]

plt.scatter(
    x=bus_times[in_region],
    y=bus_likelihood[in_region],
    color="green",
)
plt.scatter(
    x=bus_times[out_region],
    y=bus_likelihood[out_region],
    color="red",
    marker="x",
)

plt.plot(x, y)
plt.title("Случайно выбранное время прибытия автобуса и относительная вероятность")
plt.ylabel("Относительная вероятность прибытия автобуса")
plt.xlabel("Минут от начала часа")
plt.show()

Переменные in_region и out_region представляют собой массивы NumPy, содержащие логические значения в зависимости от того, попадают ли случайно сгенерированные вероятности выше или ниже распределения y. Затем строим две отдельных диаграммы разброса, одна с точками, попадающими в распределение, а другая — с точками, выходящими за пределы распределения.

Точки данных, которые находятся над распределением, не являются репрезентативными для реальных данных:

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

Основные входные параметры   

Вы узнали об основных входных параметрах для создания диаграмм рассеяния. Вот краткое изложение основных моментов, которые следует помнить об основных входных параметрах:

Параметр Описание
x и y Эти параметры представляют две основные переменные и могут быть любыми типами данных, подобными массивам, например списками или массивами NumPy. Это обязательные параметры.
s Этот параметр определяет размер маркера. Это может быть float, если все маркеры имеют одинаковый размер, или структуру данных, подобную массиву, если маркеры имеют разные размеры.
c Этот параметр представляет цвет маркеров. Обычно это либо массив цветов, например значения RGB, либо последовательность значений, которые будут отображены на цветовую карту с помощью параметра cmap.
marker Этот параметр используется для настройки формы маркера.
cmap Если для параметра c используется последовательность значений, то этот параметр можно использовать для выбора сопоставления между значениями и цветами, обычно с помощью одной из стандартных цветовых карт или настраиваемой цветовой карты.
alpha Этот параметр представляет собой число с плавающей запятой, которое может принимать любое значение от 0 до 1 и представляет прозрачность маркеров, где 1 полностью непрозрачный маркер.

Это не все входные параметры, доступные в plt.scatter(). Вы можете получить доступ к полному списку входных параметров из документации.

Заключение   

Теперь вы знаете, как создавать и настраивать диаграммы рассеяния с помощью plt.scatter() и готовы начать практиковаться с собственными наборами данных и примерами. Эта универсальная функция дает возможность исследовать свои данные и ясно понимать свои выводы.

В этом уроке вы узнали, как:

  • Создавать диаграмму рассеяния с помощью plt.scatter().
  • Использовать обязательные и необязательные входные параметры.
  • Настраивать точечные диаграммы для основных и более сложных графиков.
  • Показывать более двух измерений с помощью plt.scatter().

Максимальную отдачу от визуализации с помощью plt.scatter() можно получить, узнав больше обо всех функциях Matplotlib и работе с данными с помощью NumPy.

Использованы материалы Visualizing Data in Python Using plt.scatter()

Опубликовано Вадим В. Костерин

ст. преп. кафедры ЦЭиИТ. Автор более 130 научных и учебно-методических работ. Лауреат ВДНХ (серебряная медаль).

Оставьте комментарий

Ваш адрес email не будет опубликован.