我使用下面的示例代码对F#互动中的值列表进行基本绘图。当绘制更多的点时,显示所需的时间急剧增加。在下面的示例中,10^4分在4秒内显示,而4.10^4分则需要耐心测试53秒才能显示。总的来说,绘制N点的时间大致以N^2为单位。
结果是,我可能会在代码前面添加一个内插层,但是
1)我想知道谁知道FSharpChart和Windows.Forms的工作原理,是否能解释是什么导致了这种行为?(数据是有界的,因此似乎排除了需要调整比例的显示。)
(2)除了自己插值数据外,还有其他简单的补救办法吗?
let plotl (f:float list) =
let chart = FSharpChart.Line(f, Name = "")
|> FSharpChart.WithSeries.Style(Color = System.Drawing.Color.Red, BorderWidth = 2)
let form = new Form(Visible = true, TopMost = true, Width = 700, Height = 500)
let ctl = new ChartControl(chart, Dock = DockStyle.Fill)
form.Controls.Add(ctl)
let z1 = [for i in 1 .. 10000 do yield sin(float(i * i))]
let z2 = [for i in 1 .. 20000 do yield sin(float(i * i))]
plotl z1
plotl z2发布于 2015-03-22 14:43:41
首先,FSharpChart是一个在库的旧版本中使用的名称。最新版本名为F#制图,附带了一个新文档,只使用Chart。
要回答你的问题,Chart.Line和Chart.Points对于大量的分数来说是相当慢的。库中还有Chart.FastLine和Chart.FastPoints (它们不支持许多特性,但速度更快)。因此,尝试获取F#图表的最新版本,并使用该方法的“快速”版本。
https://stackoverflow.com/questions/29194547
复制相似问题