我一直在阅读Haskell Chart package的源代码,因为我发现它创建的图表非常好。但我很难理解它是如何运作的。
特别是render
函数使用了type PickFn
:
type PickFn a = Point -> Maybe a
data Renderable a = Renderable {
minsize :: ChartBackend RectSize,
render :: RectSize -> ChartBackend (PickFn a)
}
class ToRenderable a where
toRenderable :: a -> Renderable ()
PickFn
的评论是“将设备坐标中的点映射到某个值的函数。”,遗憾的是这对我来说没有任何意义。
我的最终目标是能够按照代码来了解它如何绘制图表,但我想从“什么是选择函数”开始,这样我至少可以理解这些类型。
答案 0 :(得分:2)
选择功能对图表库的客户端来说非常方便 - 它允许您从结果图像中的某个点向后映射到该位置的事物(即Maybe a
)。
例如,Graphics.Rendering.Chart.Layout.layoutToRenderable会返回Renderable (LayoutPick x y y)
,以便您可以将图片中的某个点反射回布局的特定组件 - 其图例,轴标题,绘图区域,等