我想在我的项目中使用FSharpChart和fsx脚本文件.我使用Nuget下载并引用了MSDN.FSharpChart.dll,我的代码如下所示
#r @"..\packages\MSDN.FSharpChart.dll.0.60\lib\MSDN.FSharpChart.dll"
open System.Drawing
open MSDN.FSharp.Charting
[for x in 0.0 .. 0.1 .. 6.0 -> sin x + cos (2.0 * x)]
|> FSharpChart.Line
Run Code Online (Sandbox Code Playgroud)
路径是正确的,因为VS 2012为我提供了intellisense并且知道MSDN.FSharp命名空间.问题是当我在FSI中运行此脚本时,没有显示任何内容.
怎么了?
我在使用FSharp.Charting和FSharp.Control.Reactive创建我的一些数据的动画可视化时遇到了麻烦.
基本上,我有一个无限的点生成器.我的实际生成器比下面的示例更复杂,但是这个简化的示例再现了这个问题:
let move points =
Seq.initInfinite (fun i -> points |> List.map (fun (x, y) -> x + i, y + i))
Run Code Online (Sandbox Code Playgroud)
此move
功能具有类型(int * int) list -> seq<(int * int) list>
.对于每次迭代,它将输入列表中的所有点都转换为1,以使点向上和向右移动.
我想在这上面展示一下LiveChart.Point
.生成的序列move
可以转换为适当的Observable
,但是它本身运行得非常快,所以我先把它慢一点:
// Slow down any sequence
let delay (duration : TimeSpan) xs = seq {
for x in xs do
duration.TotalMilliseconds |> int |> Async.Sleep |> Async.RunSynchronously
yield x }
Run Code Online (Sandbox Code Playgroud)
这使我能够从点序列中创建一个Observable:
let obs = …
Run Code Online (Sandbox Code Playgroud) open FSharp.Charting
open System
[<EntryPoint>]
let main argv =
printfn "%A" argv
let x = Chart.Line [ for x in -100 .. 100 -> x, pown x 3]
let y = Console.ReadKey();
0 //return an integer exit code
Run Code Online (Sandbox Code Playgroud)
您好,我正在尝试在PROJECT模式下使用F#而不是脚本.到目前为止,我有上面的代码以及它告诉我添加对System.Drawing的引用,我也做了.
编译时我有0个错误或警告,它运行得非常好.出现控制台屏幕但没有其他事情发生.图表没有显示或任何东西.
我已经在交互式窗口中尝试了这个,它在那里工作得很好.有任何想法吗?
我不明白如何创建图表控件并将图表放在现有表单中.我在网上找到的所有例子都以新的形式显示图表,但我想将图表添加到我现有的一个表格中.
我在考虑这样的事情:
let form = new Form(Text="My form")
let lbl = new Label(Text="my label")
let chart = Chart.Area ["a", 10; "b", 20]
form.Controls.Add lbl
form.Controls.Add chart
// ---> The type 'ChartTypes.GenericChart' is not compatible with the type 'Control'
Application.Run(form)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在使用FSharpChart在同一图形上打印移动平均线和库存量.问题是一个图形从20到50或更少,另一个从0到80万,所以当我将两者合并时,一个被分割到底部,这是没用的.我可以在Y轴上有两个不同的刻度,以便两个图形"合并"正确吗?
我正在尝试使用FSharp.Charting柱形图绘制一些类别/计数数据,除非列数达到10或更多,否则一切都按预期工作.
来自http://fslab.org/FSharp.Charting/BarAndColumnCharts.html.
let data =
[ "Africa", 1033043;
"Asia", 4166741;
"Europe", 732759;
"South America", 588649;
"North America", 351659;
"Oceania", 35838]
let chart = Chart.Column data
chart.ShowChart()
Run Code Online (Sandbox Code Playgroud)
所以要清楚,上面的代码很好,但如果我添加4个以上的区域,我没有得到所有的标签....
let data =
[ "Africa", 1033043;
"Asia", 4166741;
"Europe", 732759;
"South America", 588649;
"North America", 351659;
"Oceania", 35838;
"Africa2", 1033043;
"Asia2", 4166741;
"Europe2", 732759;
"South America2", 456789
]
let chart = Chart.Column data
chart.ShowChart()
Run Code Online (Sandbox Code Playgroud)
有谁知道如何让所有列名出现?我无法在文档中看到任何有用的内容.
Chart.Line [ for x in 1.0 .. 100.0 -> (x, x ** 2.0) ]
Run Code Online (Sandbox Code Playgroud)
我多次尝试将Fsharp的图表视为F#Charting
我安装了一些我认为需要的扩展:
但对我来说,这似乎还不够.你能给我一些有用的指导吗?非常感谢你 .
我正在尝试使用FSharp.Charting组合一些柱形图,但我卡住了.
每次我的递归函数执行某些操作时,它都会创建一个图表(ChartTypes.GenericChart).然后,我将这个新图表添加到列表(ChartTypes.GenericChart列表).实际上一切看起来都很不错.一旦函数离开递归操作,它就会创建图表.问题是我无法将列表中的所有图表组合在一起,所以会发生的事情是我最终得到了大量的列图,每个列表项都有一个.
我正在尝试这样的事情:
for x in chartList do
Chart.Combine ([
x
|> Chart.WithXAxis (LabelStyle = ChartTypes.LabelStyle(Interval=1.0))
|> Chart.WithYAxis (Min=0.75)
]
)
|> Chart.Show
Run Code Online (Sandbox Code Playgroud)
正如我所说..输出是所有图形分离,而不仅仅是一个组合.有人有想法吗?
谢谢.