Haskell 图表 SVG 文件的边距
Margin of a Haskell diagrams SVG file
我正在尝试这个图表示例:
funs = map (flip (^)) [2..6]
visualize f = stroke' (with & vertexNames .~ [[0 .. 6 :: Int]] )
(regPoly 7 1)
# lw none
# showLabels
# fontSize (Local 0.6)
<> star (StarFun f) (regPoly 7 1)
# stroke # lw thick # lc red
example = center . hcat' (with & sep .~ 0.5) $ map visualize funs
结果如下:
一切都像预期的那样,一些数字(或更准确地说,这些数字的中心)位于图像的边缘附近,所以最后它们看起来像是被切掉了。
有办法解决吗?
我通过创建一个新函数部分解决了这个问题addMargin
:
{-# LANGUAGE NoMonomorphismRestriction #-}
import Diagrams.Prelude
import Diagrams.Backend.SVG.CmdLine
funs = map (flip (^)) [2..6]
visualize f = stroke' (with & vertexNames .~ [[0 .. 6 :: Int]] )
p
# lw none
# showLabels
# fontSize (Local 1.6)
<> star (StarFun f) p
# stroke # lw thick # lc red
where
p = (regPoly 7 2)
example = center . hcat' (with & sep .~ 5) $ map visualize funs
addMargin m a = c where
c = s === b === s where
s = strutY m
b = s' ||| a ||| s' where
s' = strutX m
main = mainWith (addMargin 33 example :: Diagram B R2)
除了右侧的 0 不知何故仍然被某些东西覆盖外,一切看起来都很好。
问题是文本没有信封,所以它的大小没有被考虑在内。您可以使用向信封添加边框的 frame
函数来解决您的问题。
example = frame 2 . center . hcat' (with & sep .~ 5) $ map visualize funs
我正在尝试这个图表示例:
funs = map (flip (^)) [2..6]
visualize f = stroke' (with & vertexNames .~ [[0 .. 6 :: Int]] )
(regPoly 7 1)
# lw none
# showLabels
# fontSize (Local 0.6)
<> star (StarFun f) (regPoly 7 1)
# stroke # lw thick # lc red
example = center . hcat' (with & sep .~ 0.5) $ map visualize funs
结果如下:
一切都像预期的那样,一些数字(或更准确地说,这些数字的中心)位于图像的边缘附近,所以最后它们看起来像是被切掉了。
有办法解决吗?
我通过创建一个新函数部分解决了这个问题addMargin
:
{-# LANGUAGE NoMonomorphismRestriction #-}
import Diagrams.Prelude
import Diagrams.Backend.SVG.CmdLine
funs = map (flip (^)) [2..6]
visualize f = stroke' (with & vertexNames .~ [[0 .. 6 :: Int]] )
p
# lw none
# showLabels
# fontSize (Local 1.6)
<> star (StarFun f) p
# stroke # lw thick # lc red
where
p = (regPoly 7 2)
example = center . hcat' (with & sep .~ 5) $ map visualize funs
addMargin m a = c where
c = s === b === s where
s = strutY m
b = s' ||| a ||| s' where
s' = strutX m
main = mainWith (addMargin 33 example :: Diagram B R2)
除了右侧的 0 不知何故仍然被某些东西覆盖外,一切看起来都很好。
问题是文本没有信封,所以它的大小没有被考虑在内。您可以使用向信封添加边框的 frame
函数来解决您的问题。
example = frame 2 . center . hcat' (with & sep .~ 5) $ map visualize funs