Próbuję połączyć kilka diagramów w coś w rodzaju stołu. Myślę, że nazywa się to „drukiem indeksowym” - fotografowie robią to, gdy muszą przeglądać wiele fotografii jednocześnie. W każdym razie jest to kod:
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
Nie działa zgodnie z oczekiwaniami. Ale zbliżajmy się do tego stopniowo. Po pierwsze, oto rendering pojedynczego kafelka:
A teraz połączmy hcat
cztery płytki.
Dodaj drugi wiersz: (Zobacz, jak zagęszczają się niezmienne cechy skali ).
I tak to wygląda z 4 rzędami:
Na poczekaniu!
Wydaje mi się, że niezmienne cechy skali, takie jak groty strzałek, są skalowane proporcjonalnie do obszaru obrazu. Ale w tym przypadku muszę rozwinąć schemat bez ponownego skalowania tych funkcji. Jak mogę to osiągnąć?
źródło