lambda - 绘图 Deedle 框架

标签 lambda f# key-value deedle

我有以下代码:

let mychart = frame.GetAllSeries() |> Seq.iter(fun key value -> Chart.Line(value, Name=key) |> Chart.Combine

哪里frame.GetAllSeries()返回 seq<KeyValuePair> .我想直接在图表中传递序列。 我以为我可以遍历序列。问题是我找不到可以直接插入 lambda 表达式的惯用方法来分别访问键和值。

谢谢。

编辑

这个有效:

let chart = frame.GetAllSeries() |> Seq.map( fun (KeyValue(k,v)) -> Chart.Line(v |> Series.observations, Name=k)) |> Chart.Combine

.. 它能变得更简单吗?我有一个大型数据集,我担心性能会受到如此多的转换的影响。

最佳答案

如您所知,使用 Series.observations 可以为您提供系列中的一系列键值对,然后您可以将其传递给 Chart.Line 等。

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

[<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)

如果你包含这个,你可以直接绘制系列:

let s = series [ for x in 0.0 .. 0.1 .. 1.0 -> x, sin x ]
Chart.Line(s)

您还可以通过包含这些重载的实验包“FsLab”引用 Deedle & F# Charting(参见 here)

关于lambda - 绘图 Deedle 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20093815/

相关文章:

javascript - 使用 JS 匹配简单的正则表达式模式(键 : value)

python - 如何确定对象是否是 PySpark 中的有效键值对

lambda - Java8,将带有条件的for循环转换为lambda

java - ()->System.out.println ("done") 是什么意思?

F#点自由风格划分

c - hashlife alg 如何在 Golly 永远持续下去?

F# 可变函数参数

lisp - 一个 Lisp "association list"和 Java 的 Map 这样的键值映射有什么关系?

c++ - 通过通用引用传递的函数的 std::forward?

lambda - 计算素数(流和 lambda)