Введение
В этом практическом занятии вы научитесь использовать разные свойства маркеров для построения многомерных наборов данных с использованием библиотеки Matplotlib для Python. В частности, вы научитесь представлять успешный бросок мяча в виде смайлика, где размер маркера соответствует навыку броска, вращение маркера соответствует углу взлета, а тяга соответствует цвету маркера.
Советы по работе с ВМ
После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Ноутбук, чтобы приступить к практике в Jupyter Notebook.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импорт библиотек
В этом шаге вы импортируете необходимые библиотеки для этого практического занятия. В частности, вы импортируете Matplotlib, Numpy и различные модули из Matplotlib, такие как MarkerStyle, TextPath и Affine2D.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import Normalize
from matplotlib.markers import MarkerStyle
from matplotlib.text import TextPath
from matplotlib.transforms import Affine2D
Определение символов успеха
В этом шаге вы определите три символа успеха, которые будут использоваться для представления успеха в бросании мяча. В частности, вы определите смайлик для успешного броска, нейтральное лицо для частично успешного броска и грустное лицо для неудачного броска.
SUCCESS_SYMBOLS = [
TextPath((0, 0), "☹"),
TextPath((0, 0), "😒"),
TextPath((0, 0), "☺"),
]
Генерация случайных данных
В этом шаге вы сгенерируете случайные данные для навыка броска, угла взлета, тяги, успеха и позиции. В частности, вы сгенерируете 25 точек данных для каждой переменной, за исключением позиции, которая будет иметь 2 координаты для каждой точки данных.
N = 25
np.random.seed(42)
skills = np.random.uniform(5, 80, size=N) * 0.1 + 5
takeoff_angles = np.random.normal(0, 90, N)
thrusts = np.random.uniform(size=N)
successful = np.random.randint(0, 3, size=N)
positions = np.random.normal(size=(N, 2)) * 5
data = zip(skills, takeoff_angles, thrusts, successful, positions)
Определение цветовой карты
В этом шаге вы определите цветовую карту, которая будет использоваться для сопоставления тяги броска с цветом маркера. В частности, вы будете использовать цветовую карту "plasma" из Matplotlib.
cmap = plt.colormaps["plasma"]
Создание графика
В этом шаге вы создадите график, используя ранее сгенерированные случайные данные. В частности, вы будете отображать каждую точку данных в виде маркера с символом успеха, определенным переменной успеха, размером, определенным переменной навыка, поворотом, определенным переменной углом взлета, и цветом, определенным переменной тяги.
fig, ax = plt.subplots()
fig.suptitle("Throwing success", size=14)
for skill, takeoff, thrust, mood, pos in data:
t = Affine2D().scale(skill).rotate_deg(takeoff)
m = MarkerStyle(SUCCESS_SYMBOLS[mood], transform=t)
ax.plot(pos[0], pos[1], marker=m, color=cmap(thrust))
fig.colorbar(plt.cm.ScalarMappable(norm=Normalize(0, 1), cmap=cmap),
ax=ax, label="Normalized Thrust [a.u.]")
ax.set_xlabel("X position [m]")
ax.set_ylabel("Y position [m]")
Отображение графика
В этом шаге вы будете отображать график с использованием функции show() Matplotlib.
plt.show()
Резюме
В этом практическом занятии вы узнали, как использовать разные свойства маркеров для построения многомерных наборов данных с использованием библиотеки Matplotlib для Python. В частности, вы узнали, как представить успешный бейсбольный бросок в виде смайлика, где размер маркера сопоставляется с навыком броска, вращение маркера - с углом взлета, а тяга - с цветом маркера. Следуя шагам, описанным в этом практическом занятии, вы можете создать аналогичные графики для своих собственных многомерных наборов данных.