いくつかの図を一種のテーブルにまとめようとしています。これは「インデックスプリント」と呼ばれていると思います。写真を撮る人は、一度に多くの写真を確認する必要があるときにそうします。とにかく、これはコードです:
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つのタイルを並べてみましょう。
2行目を追加します(スケール不変の特徴がどのように厚くなるかを確認してください)。
そして、これは4行でどのように見えるかです:
手を離れて!
矢印のような縮尺不変の特徴は、画像の面積に比例して縮尺されているように思えます。ただし、この場合、これらの機能を再スケーリングせずに図を拡大する必要があります。どうすればそれを達成できますか?