

ОПИСАНИЕ
Проект анализирует фильмы Wizarding World (основная серия Harry Potter и спин-оффы Fantastic Beasts): бюджеты, мировые сборы и зрительское восприятие. В Pandas выполняется очистка данных и расчёт метрик (включая ROI), а в matplotlib строится серия графиков в едином стиле (шрифт Cinzel Decorative + заданная палитра). Визуализации показывают динамику масштаба франшизы, эффективность отдельных фильмов и связь рейтингов IMDb с кассовыми результатами.

Подготовка датасета и настройка оформления
Загрузка библиотеки
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from matplotlib import rcParams import matplotlib.font_manager as fm
Обоснование шрифта
Для проекта выбран шрифт Cinzel Decorative — декоративный serif с «классической» каллиграфической атмосферой, которая хорошо совпадает с визуальным языком мира Harry Potter: старинные книги, пергамент, готические и исторические мотивы Хогвартса. Он особенно выразителен в заголовках и акцентных подписях, поэтому помогает сделать инфографику «кинематографичной» и цельной. Шрифт подключается в matplotlib через .ttf, поэтому типографика полностью задаётся кодом: одинаково воспроизводится на любой машине и сохраняет единый стиль во всех графиках.
Код для подключения кастомного шрифта
import matplotlib.pyplot as plt import matplotlib.font_manager as fm from matplotlib import rcParams import os
font_candidates = [ «CinzelDecorative-Regular.ttf», «/mnt/data/CinzelDecorative-Regular.ttf», ]
font_path = None for p in font_candidates: if os.path.exists (p): font_path = p break
if font_path: try: fm.fontManager.addfont (font_path) prop = fm.FontProperties (fname=font_path) rcParams[«font.family»] = prop.get_name () rcParams[«font.sans-serif»] = [prop.get_name ()] rcParams[«axes.unicode_minus»] = False except: pass
Для визуализаций выбрана палитра в стиле «пергамент + гербовая магия»: бордовый
Код для палитры и общего офрмления
import matplotlib.pyplot as plt import seaborn as sns from matplotlib import rcParams
BURGUNDY = «641e1e» GOLD = «c39a1c» BROWN = «3d2f22» SLATE = «717679» PARCHMENT = «efeee9»
PARCHMENT_DIM = «e6e4dd» SLATE_DIM = «8a8f92»
extended_palette = [GOLD, BURGUNDY, BROWN, SLATE, PARCHMENT] sns.set_palette (extended_palette)
sns.set_style («white»)
rcParams.update ({ «axes.facecolor»: PARCHMENT, «figure.facecolor»: PARCHMENT, «savefig.facecolor»: PARCHMENT,
«axes.edgecolor»: BROWN,
«axes.labelcolor»: BROWN,
«xtick.color»: BROWN,
«ytick.color»: BROWN,
«text.color»: BROWN,
«axes.titlecolor»: BURGUNDY,
«axes.grid»: True,
«grid.color»: SLATE_DIM,
«grid.linestyle»: «-»,
«grid.linewidth»: 0.6,
«grid.alpha»: 0.35,
«font.size»: 12,
«axes.titlesize»: 16,
«axes.labelsize»: 13,
«xtick.labelsize»: 11,
«ytick.labelsize»: 11,
«legend.fontsize»: 11,
«figure.titlesize»: 18,
«axes.spines.top»: False,
«axes.spines.right»: False,
«legend.frameon»: True,
«legend.facecolor»: PARCHMENT_DIM,
«legend.edgecolor»: SLATE_DIM,
«lines.linewidth»: 2.2,
«lines.markersize»: 6,
})
Ссылка на датасет