首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制Deedle框架

绘制Deedle框架
EN

Stack Overflow用户
提问于 2013-11-20 10:48:31
回答 1查看 497关注 0票数 3

我有以下代码:

代码语言:javascript
复制
let mychart = frame.GetAllSeries() |> Seq.iter(fun key value -> Chart.Line(value, Name=key) |> Chart.Combine

其中frame.GetAllSeries()返回一个seq<KeyValuePair>。我想把顺序直接排在图表上。我想我可以迭代这个序列。问题是,我无法找到一种独立访问键和值的独立方法,可以直接插入lambda表达式。

谢谢。

编辑

这样做是可行的:

代码语言:javascript
复制
let chart = frame.GetAllSeries() |> Seq.map( fun (KeyValue(k,v)) -> Chart.Line(v |> Series.observations, Name=k)) |> Chart.Combine

。。能更简单点吗?我有一个很大的数据集,恐怕性能会受到这么多转换的影响。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-20 21:07:46

正如您已经知道的,使用Series.observations可以从系列中获得一系列键值对,然后可以传递给Chart.Line等。

这绝对是不应该需要的东西,您可以使用扩展方法使代码更简单,这样就可以自动绘制一系列代码:

代码语言:javascript
复制
[<AutoOpen>]
module FsLabExtensions =
  type FSharp.Charting.Chart with
    static member Line(data:Series<'K, 'V>, ?Name, ?Title, ?Labels, ?Color, ?XTitle, ?YTitle) =
      Chart.Line(Series.observations data, ?Name=Name, ?Title=Title, ?Labels=Labels, ?Color=Color, ?XTitle=XTitle, ?YTitle=YTitle)

如果将此包括在内,则可以直接绘制系列:

代码语言:javascript
复制
let s = series [ for x in 0.0 .. 0.1 .. 1.0 -> x, sin x ]
Chart.Line(s)

您还可以参考Deedle & F#图表,通过包含这些重载的实验包"FsLab“(参见这里)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20093815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档