Вышел Gribouille 0.3.0 — новый релиз библиотеки для построения графиков в Typst. Версия получилась уже, чем 0.2, зато добавила несколько очень нужных элементов управления.
Главная фича — управление направляющими (guides). Теперь не надо лезть в theme(), чтобы спрятать метки и деления на осях. guides(x: none) убирает тики и подписи по оси X, но оставляет линию, сетку и заголовок оси. Чтобы убрать и заголовок, добавляют labs(x: none). То же самое работает и для оси Y. Легенды тоже подчинились: guides(none) прячет легенду, guides(auto) возвращает настройки по умолчанию. Старую функцию guide-none() убрали. Если нужно скрыть все легенды разом, пишут guides(default: none).
Поддержку coord-radial тоже доработали. guides(theta: none) прячет всю круговую ось вместе с дугами и метками. guides(r: none) убирает только радиальные подписи, оставляя спицы.
В compose() появился параметр theme:. Он задаёт стиль для общего заголовка, легенды и меток панелей, а ещё автоматически применяется к панелям, у которых нет своей темы. Кроме того, plot(..., defer: true) заменили на defer(plot, ...). Панели внутри compose() теперь не принимают собственные width и height — размеры ячеек задаёт композиция.
geom-area() получил новые настройки по умолчанию: stat: "align" и position: "stack". Раньше для многослойной диаграммы с областями нужно было прописывать оба аргумента вручную. Теперь они стоят по умолчанию, и stat: "align" сам пересэмплирует группы с разными значениями X на общую сетку.
У annotate() появился параметр clip. По умолчанию он стоит true — всё, что вылезает за границы панели, обрезается. Если поставить clip: false, метка останется видимой даже за пределами осей. Раньше такие объекты молча пропадали, теперь рисуются.
Под капотом много исправлений. Починили легенды: горизонтальные с выравниванием по центру или правому краю теперь корректно позиционируют графический ключ. nrow и ncolumn заработали для непрерывных легенд размера. Выравнивание заголовка легенды наконец-то работает. Фон легенды наследует базовый rect. Если составная легенда не оставляет места для панелей, теперь выводится понятная ошибка, а не молчаливое наложение.
Поправили поведение статистик и шкал. stat-bin-2d и stat-bin-hex теперь считают плотность как долю от общего числа наблюдений, а не как непонятное количество на площадь. Трансформации sqrt и log10 проверяют область определения и выдают ошибку для неподходящих данных. Исправили фильтр выбросов — теперь он учитывает expand шкалы, и точки в пределах запаса не теряются.
Для редакторов кода в пакет добавили докстринги, совместимые с Tinymist. При наведении на функцию показываются параметры, возвращаемые значения и примеры, а не сырые @-теги. Для функций вроде guides() и theme() список допустимых ключей выводится явно.
Проект остаётся некоммерческим, API ещё меняется. Баг-репорты и идеи приветствуются, пул-реквесты пока не принимают.