Kev*_* D. 6 f# dotnetcharting f#-charting
在F#Interactive中运行时,我希望以下代码创建一个简单的饼图并将其保存到磁盘:
let pie = FSharpChart.Pie([("Apples",1);("Oranges",2);("Bananas",3)])
FSharpChart.SaveAs "test.png" ChartImageFormat.Png pie
Run Code Online (Sandbox Code Playgroud)
但是,实际保存在"test.png"中的是一个空白图像.如果我将图表管道输入FShartChart.SaveAs函数,也会发生同样的情况.但是,如果我首先只执行图表创建代码并在手动执行SaveAs之前给图表提供时间,则图像会按预期保存.
有没有办法阻止对FSharpChart.Pie的调用,直到渲染完成?我在Visual Studio 2013中使用FSharpChart.fsx版本0.60.
问题是底层图表控件首先需要显示才能将图表保存到文件中(这非常愚蠢,但遗憾的是,F#图表只是基础.NET图表库的轻量级包装).
我想你可以在F#interactive中分别运行两行,或者你需要显式调用一些显示图表的方法(我相信有FSharpChart.Show
或类似的东西)
我使用F#Charting进行了测试,这是一个较新版本的库(有一些API更改,但非常相似的想法)和以下工作(即使在单个命令中执行所有):
#load @"packages\FSharp.Charting.0.87\FSharp.Charting.fsx"
open FSharp.Charting
let pie = Chart.Pie([("Apples",1);("Oranges",2);("Bananas",3)])
pie.ShowChart()
pie.SaveChartAs("D:\\temp\\test.png", ChartTypes.ChartImageFormat.Png)
Run Code Online (Sandbox Code Playgroud)