首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果在完成图表呈现之前调用FSharpChart.SaveAs (),则保存空白图像

如果在完成图表呈现之前调用FSharpChart.SaveAs (),则保存空白图像
EN

Stack Overflow用户
提问于 2013-10-29 04:12:58
回答 2查看 957关注 0票数 6

在F#互动中运行时,我希望下面的代码创建一个简单的饼图并将其保存到磁盘中:

代码语言:javascript
复制
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 2013中使用的是FSharpChart.fsx版本0.60。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-29 04:33:11

问题是,在将图表保存到文件之前,首先需要显示底层图表控件(这非常愚蠢,但遗憾的是,F#图表只是底层.NET图表库的轻量级包装器)。

我认为您可以在F#交互式中分别运行这两行,或者需要显式调用一些显示图表的方法(我相信有FSharpChart.Show或类似的东西)

我使用F# Charting (它是库的更新版本(有一些API更改,但有非常相似的想法)和以下工作(即使是在一个命令中全部执行)来测试这一点:

代码语言:javascript
复制
#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)
票数 8
EN

Stack Overflow用户

发布于 2017-05-25 15:35:51

我发现下面的工作很好,不需要显示。(FSharp.Charting,v0.90.14,.net 4.5)

代码语言:javascript
复制
open FSharp.Charting
// etc
let prices = getPriceData ()
let chart = Chart.Candlestick(prices)
Chart.Save @"C:\Charts\prices.png" chart

更新

代码语言:javascript
复制
let renderChart ch = 
    let frm = new Form(Visible = false, TopMost = true, Width = 700, Height = 500)
    let ctl = new ChartControl(ch, Dock = DockStyle.Fill)
    frm.Controls.Add(ctl)

在给定图表上调用此选项将允许您在没有任何窗体弹出的情况下呈现图表。

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

https://stackoverflow.com/questions/19649525

复制
相关文章

相似问题

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