在 F# Interactive 中运行时,我希望以下代码创建一个简单的饼图并将其保存到磁盘:
let pie = FSharpChart.Pie([("Apples",1);("Oranges",2);("Bananas",3)])
FSharpChart.SaveAs "test.png" ChartImageFormat.Png pie
然而,“test.png”中实际保存的是一张空白图像。如果我将图表通过管道传输到 FShartChart.SaveAs 函数,也会发生同样的情况。但是,如果我首先仅执行图表创建代码并在手动执行 SaveAs 之前给予图表渲染时间,则图像将按预期保存。
有没有办法阻止对 FSharpChart.Pie 的调用,直到渲染完成?我在 Visual Studio 2013 中使用 FSharpChart.fsx 版本 0.60。
问题在于,首先需要显示底层图表控件,然后才能将图表保存到文件中(这非常愚蠢,但遗憾的是,F# 图表只是底层 .NET 图表库的轻量级包装器)。
我认为您可以在 F# 交互式中单独运行这两行,或者您需要显式调用一些显示图表的方法(我相信有FSharpChart.Show
或类似的东西)
我用这个测试了F# 图表 http://www.nuget.org/packages/FSharp.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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)