如何控制尺度不变性?


9

我试图将几种图表放到一张桌子中。我认为这被称为“索引打印”,摄影人员在必须一次查看许多照片时会这样做。无论如何,这是代码:

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四个图块放在一起。

cat

添加第二行:(请参见比例不变特征如何变厚。)

平铺2

这就是四行的样子:

瓦

失控!

在我看来,缩放不变的功能(例如箭头)与图片的区域成比例地缩放。但是在这种情况下,我需要在不重新缩放这些功能的情况下扩展图表。我该如何实现?

Answers:


5

您想要查看的是关于测量单位用户手册部分。默认情况下,箭头之类的东西以“规格化”单位进行度量,并对其进行缩放,以便它们始终是整个图片大小的恒定比例。如果我正确理解了您的用例,我想您可能想使用本地单位。使用您正在使用的任何箭头功能的带底漆的变体,并给它一个选项,记录类似

(with & headLength .~ local 0.1)

但无论数量多少,都能使您的图片看起来像您想要的样子。有关箭头选项的更多信息,请参见箭头教程

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.