Чек-лист научной фигуры

Перед отправкой статьи прогоните каждую фигуру по короткому списку — он ловит почти все ошибки курса.

Чек-лист научной фигуры — финальная проверка перед публикацией: соответствует ли график данным, честен ли он, доступен ли и воспроизводим ли. Этот урок собирает весь курс в один практический список.

Семь проверок перед публикацией

#ВопросОткуда (раздел)
1Тип графика отвечает на вопрос к данным?Выбор типа
2Оси подписаны с единицами измерения?Композиция
3Показана неопределённость (error bars/CI)?Ошибки
4Ось честна (столбцы от нуля, нет лжи)?Как врут
5Палитра под тип данных и дружелюбна к дальтонизму?Цвет
6Фигуру порождает скрипт (воспроизводима)?Воспроизводимость
7Экспорт в вектор (или растр высокого DPI)?Экспорт

Топ типичных ошибок курса

Соберём в одном месте грабли, на которых валятся научные фигуры:

  • Радуга (jet) вместо viridis — ложные границы, слепые зоны.
  • Нет единиц измерения на осях — фигура непригодна.
  • Overplotting — чёрная клякса вместо плотности.
  • Нет неопределённости — среднее без error bars неполно.
  • Искажённые оси — обрезанная ось Y, двойные оси, искажённые пропорции.
  • 3D без нужды — псевдо-3D искажает и прячет.
  • Только цвет для кодирования — недоступно дальтоникам.

Автопроверка скриптом

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

def validate(fig):
    issues = []
    if not fig.get("xlabel_units"):
        issues.append("нет единиц на оси X")
    if not fig.get("ylabel_units"):
        issues.append("нет единиц на оси Y")
    if fig.get("has_estimates") and not fig.get("error_bars"):
        issues.append("показаны оценки без неопределённости")
    if fig.get("chart") == "bar" and fig.get("y_start", 0) != 0:
        issues.append("столбцы: ось Y не от нуля")
    if fig.get("palette") in ("jet", "rainbow"):
        issues.append("радужная палитра -> возьмите viridis")
    if fig.get("export") == "jpeg":
        issues.append("JPEG для графика -> PDF/PNG")
    return issues or ["OK: фигура прошла проверки"]

bad = {"chart": "bar", "y_start": 95, "xlabel_units": "с",
       "ylabel_units": None, "has_estimates": True,
       "error_bars": False, "palette": "jet", "export": "jpeg"}
good = {"chart": "line", "y_start": 0, "xlabel_units": "с",
        "ylabel_units": "мВ", "has_estimates": True,
        "error_bars": True, "palette": "viridis", "export": "pdf"}

print("плохая фигура:")
for i in validate(bad):
    print("  -", i)
print("хорошая фигура:")
for i in validate(good):
    print("  -", i)

Вывод:

плохая фигура:
  - нет единиц на оси Y
  - показаны оценки без неопределённости
  - столбцы: ось Y не от нуля
  - радужная палитра -> возьмите viridis
  - JPEG для графика -> PDF/PNG
хорошая фигура:
  - OK: фигура прошла проверки

Такой валидатор не заменит глаз, но ловит механические ошибки — встройте его в скрипт сборки фигур.

Как работает под капотом

Чек-лист — это сжатие всего курса в проверяемую процедуру. Каждый пункт опирается на конкретный принцип: единицы — на корректность, error bars — на честность оценки, ось от нуля — на верное кодирование длины, viridis — на перцептивную равномерность, вектор — на качество печати, скрипт — на воспроизводимость. Пройдя список, вы гарантируете, что фигура выполняет три задачи научного графика: точно показывает результат, не обманывает и может быть проверена.

Встраивание проверок в рабочий процесс

Чек-лист работает, только если им реально пользуются, поэтому стоит встроить его в привычку, а не держать в голове «на потом». Часть проверок автоматизируется прямо в скрипте сборки фигур: функция-валидатор может убедиться, что у осей заданы подписи с единицами, что палитра не jet, что формат экспорта вектор или PNG, что при наличии оценок есть планки погрешностей. Эти механические проверки ловят самые частые и стыдные ошибки до того, как фигура попадёт в статью.

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

Частые ошибки

  • Проверять «на глаз» в спешке — встройте автовалидатор в пайплайн.
  • Считать чек-лист бюрократией — он ловит ровно те ошибки, что отклоняют статьи.
  • Проверить одну фигуру и забыть про остальные — прогоняйте каждую.
  • Игнорировать пункт про воспроизводимость — без скрипта правки по рецензии станут мукой.

Итог

  • Семь проверок: тип, единицы, неопределённость, честная ось, палитра/доступность, воспроизводимость, экспорт.
  • Часть пунктов автоматизируется валидатором в скрипте сборки.
  • Чек-лист — сжатие всего курса в практическую процедуру.
  • Пройдя его, фигура точна, честна и воспроизводима.
Проверьте себя
1. Какой пункт чек-листа гарантирует, что среднее значение показано полно?
AВыбор цвета
BПоказана неопределённость (error bars или доверительный интервал)
CВысокий DPI
DВекторный экспорт
2. Зачем встраивать автоматический валидатор фигуры в скрипт сборки?
AЧтобы заменить глаз полностью
BЧтобы механически ловить ошибки: отсутствие единиц, обрезанную ось, jet, JPEG
CЧтобы ускорить рендеринг
DЭто не нужно
3. Почему чек-лист стоит прогонять для каждой фигуры статьи?
AДостаточно проверить одну
BКаждая фигура может содержать свои ошибки; список ловит ровно то, из-за чего отклоняют статьи
CЭто требование формата PDF
DЧтобы фигуры были одинаковыми