Я пытаюсь составить несколько диаграмм в виде таблицы. Я думаю, что это называется «индексная печать» , фотографы делают это, когда им приходится просматривать много фотографий одновременно. Во всяком случае, это код:
main :: IO ()
main = mainWith @(Diagram B)
$ (tile . fmap renderOne) examples
renderOne :: AnyGraph -> Diagram B
renderOne (AnyGraph gr) = ...
tile :: [Diagram B] -> Diagram B
tile xs = let columns = (ceiling . sqrt . fromIntegral . length) xs
in (vcat . fmap hcat . List.chunksOf columns) xs
Это не работает, как я ожидаю. Но давайте подойдем к этому постепенно. Во-первых, вот рендер одной плитки:
Теперь давайте hcat
вместе четыре плитки.
Добавьте вторую строку: (Посмотрите, как сгущаются инвариантные объекты масштаба .)
И вот как это выглядит с 4 рядами:
Из рук!
Мне кажется, что масштабные инвариантные элементы, такие как наконечники стрел, масштабируются пропорционально площади изображения. Но в этом случае мне нужно увеличить диаграмму, не масштабируя эти функции. Как я могу этого достичь?