在哈斯克爾圖表中,您如何改變軸線的範圍?現在看來似乎有事情做與鏡頭和視口,但作爲哈斯克爾初學者,我有一個很難讀API:哈斯克爾軸線範圍圖表
http://hackage.haskell.org/package/Chart-0.14/docs/Graphics-Rendering-Chart-Axis-Types.html
感謝您的幫助!
在哈斯克爾圖表中,您如何改變軸線的範圍?現在看來似乎有事情做與鏡頭和視口,但作爲哈斯克爾初學者,我有一個很難讀API:哈斯克爾軸線範圍圖表
http://hackage.haskell.org/package/Chart-0.14/docs/Graphics-Rendering-Chart-Axis-Types.html
感謝您的幫助!
我一定會喜歡更好的方式做這個信息或更多信息如何這與透鏡(我仍然不明白這是做什麼)。
我會盡力去做的。這將是一個粗略的解釋,不僅僅是爲了保持簡單,而且還因爲我仍然得到鏡頭的掛鉤。在開始之前,請注意,您已鏈接到圖表0.14文檔,該版本早於將API轉換爲鏡頭。這裏是the current docs,你應該參考。現在,你的片段:
layout_y_axis . laxis_generate .~ scaledAxis def (0,1)
這是一個適用於你的佈局的功能。其中,layout_y_axis
和laxis_generate
是鏡頭。鏡片是參考;在這種情況下,引用數據類型中的字段。在簡單的用例中,鏡頭看起來很多字段標籤,除了不同於唱片公司,它們是一流的,可以用它們做很多有趣的事情。事實上,鏡頭是可以與(.)
合成的功能;然而,這個構圖是從左到右完成的,與通常的Haskell練習相反。因此,在:
layout_y_axis . laxis_generate
layout_y_axis
是在佈局中一個場的參考,laxis_generate
是在軸線到一個場的基準(以下簡稱「功能生成所述軸數據」,根據該文檔);組成它們(以反向/ OO順序)給出了對佈局Y軸的生成函數的引用。
除了鏡片本身,您片段的另一個關鍵部分是(.~)
,其中很多lens operators之一。它產生setter函數;也就是說,它需要一個引用和一個值併產生一個函數來設置引用的目標。在你的情況下,你會得到一個函數,使scaledAxis def (0,1)
成爲佈局Y軸的生成函數。現在
,如果你檢查的Graphics.Rendering.Chart.Layout的文檔,你會發現不僅僅是鏡頭,而且還_layout_y_axis
和_laxis_generate
,它們分別Layout
和LayoutAxis
領域。他們是鏡頭的後盾領域;實際上鏡頭可以是,並且在這種情況下是從它們自動生成的。鑑於模塊導出字段標籤,你可以寫你的函數沒有透鏡,僅使用記錄語法:
\lay -> lay
{ _layout_y_axis =
(\yax -> yax { _laxis_generate = scaledAxis def (0,1) })
$ _layout_y_axis lay
}
然而,這實在是太醜陋。 鏡頭可以做更多比改善討厭的語法;在任何情況下,對於像Chart
這樣的圖書館來說,其中的字段操作是在整個API上完成的,只是用通常的嵌套記錄語法替換一些整潔和可組合的東西已經是非常好的了。
我只是想通了。如果你有一些y軸,那麼通過追加'$ layout_y_axis'laxis_generate。〜scaledAxis def(0,1)'到佈局函數,我可以強制軸的範圍在0和1之間的值。我肯定會讚賞有關如何更好地完成此操作的信息或有關如何與鏡頭配合使用的更多信息我仍然不明白這是怎麼回事)。 – Craig