Композиция фигуры: subplots, аннотации, единицы, легенда
Публикационная фигура — это законченный аргумент: каждая панель, подпись и единица на своём месте.
Публикационная фигура — итоговый график для статьи: одна или несколько панелей (subplots) с подписями a/b/c, обязательными единицами на осях, аккуратной легендой и заданным разрешением (DPI), собранный скриптом.
Subplots: панели как абзацы
Сложный результат часто требует нескольких связанных графиков. Их объединяют в фигуру из панелей (subplots), подписанных буквами a, b, c — на них ссылаются в тексте («рис. 2b»). Панели выравнивают по сетке, делят общие оси, где уместно, и располагают в логическом порядке чтения. Это та же идея, что small multiples, но панели могут быть разными типами графиков, образующими единое повествование.
Единицы — это не опция
Самое частое и стыдное упущение — ось без единиц измерения. «Время» бессмысленно: секунды? часы? «Сигнал» — в чём, в милливольтах? Каждая ось обязана иметь подпись вида «величина, единица»: «Время, с», «Напряжение, мВ», «Концентрация, моль/л». Без единиц фигура научно непригодна — рецензент вернёт статью. То же касается чисел в подписях и аннотациях.
| Элемент | Обязательно | Пример |
| Подпись оси X | величина + единица | Время, с |
| Подпись оси Y | величина + единица | Сигнал, мВ |
| Легенда | если >1 серии | контроль / опыт |
| Подпись панели | если >1 subplot | (a), (b) |
| Шкала погрешности | если есть оценки | ±SE, n=10 |
Аннотации направляют взгляд
Хорошая фигура «рассказывает», куда смотреть: стрелка к ключевому пику, заштрихованная область значимого интервала, вертикальная линия в момент события с подписью. Аннотации — это управление вниманием читателя, перевод фигуры из «вот данные» в «вот вывод». Но не переборщите: каждая аннотация должна нести смысл, иначе превращается в chartjunk.
LaTeX в подписях
Научные подписи часто содержат формулы, индексы, греческие буквы: $\sigma$, $R^2$, $\chi^2$, $E = mc^2$, $v_{\max}$. matplotlib умеет рендерить LaTeX в подписях — это связь с курсом по LaTeX. Вместо «sigma» и «v_max» пишите настоящие $\sigma$ и $v_{\max}$. Это делает фигуру профессиональной и однозначной.
import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(7, 3))
ax1.plot(x, y)
ax1.set_xlabel(r"Время $t$, с") # LaTeX в подписи
ax1.set_ylabel(r"Напряжение $U$, мВ")
ax1.set_title("(a)", loc="left")
ax1.annotate(r"$U_{\max}$", xy=(t_peak, u_peak),
xytext=(t_peak+1, u_peak),
arrowprops=dict(arrowstyle="->"))
ax2.scatter(a, b, s=12)
ax2.set_xlabel(r"Концентрация, моль/л")
ax2.set_ylabel(r"Отклик, отн. ед.")
ax2.set_title("(b)", loc="left")
fig.tight_layout()
fig.savefig("figure2.pdf", dpi=300, bbox_inches="tight")Считаем размеры под журнал
Журналы задают ширину колонки (часто ~3,5 дюйма для одной колонки). При экспорте важно, чтобы размер шрифта на фигуре совпадал с текстом статьи. Прикинем итоговый размер в пикселях при заданном DPI.
width_in = 3.5 # ширина одной колонки, дюймы
height_in = 2.6
for dpi in (72, 150, 300, 600):
px_w = int(width_in * dpi)
px_h = int(height_in * dpi)
print(f"DPI {dpi:3d}: {px_w} x {px_h} px")
print("для печати в журнале обычно нужно 300+ DPI")Вывод:
DPI 72: 252 x 187 px DPI 150: 525 x 390 px DPI 300: 1050 x 780 px DPI 600: 2100 x 1560 px для печати в журнале обычно нужно 300+ DPI
Как работает под капотом
Размер фигуры задаётся в дюймах, а DPI (dots per inch) переводит их в пиксели для растровых форматов. Шрифт задаётся в пунктах (1 пункт = 1/72 дюйма), поэтому при фиксированном физическом размере фигуры шрифт получается одинаковым независимо от DPI — растёт лишь чёткость. Если же масштабировать готовую картинку в редакторе статьи, шрифт «поедет» относительно текста — поэтому фигуру задают сразу в нужном физическом размере.
Фигура как самодостаточный аргумент
Хорошая публикационная фигура понятна в отрыве от текста статьи. Рецензенты и читатели часто пролистывают работу по фигурам, и каждая должна сама объяснять, что показано: подпись (caption) сообщает, какие данные, сколько наблюдений, что означают планки погрешностей и звёздочки значимости; оси несут величины и единицы; легенда расшифровывает серии. Тест простой: закройте основной текст — понятен ли по одной фигуре с подписью её главный вывод? Если нет, фигуре чего-то не хватает.
Отсюда же требование к единообразию по всей статье. Если на рисунке 2 контрольная группа синяя, а опытная оранжевая, то и на рисунке 5 они должны быть теми же цветами — иначе читатель собьётся. Одинаковые шрифты, согласованные палитры, единый стиль подписей панелей превращают разрозненные графики в связный визуальный рассказ. Это та же дисциплина, что и в вёрстке текста: консистентность снижает когнитивную нагрузку и делает работу профессиональной.
Частые ошибки
- Оси без единиц измерения — научно непригодная фигура.
- Мелкий шрифт — после уменьшения до ширины колонки подписи нечитаемы; задавайте физический размер сразу.
- Перегруз аннотациями — каждая должна нести смысл.
- «sigma», «R2» текстом вместо $\sigma$, $R^2$ — непрофессионально; используйте LaTeX.
Итог
- Фигура из subplots с подписями (a), (b) — связное повествование.
- Единицы на осях обязательны всегда.
- Аннотации направляют взгляд к выводу.
- LaTeX в подписях; задавайте физический размер и DPI под журнал.