我试图以某种方式复制范围条形图here。
我找到this reference但我没有完全掌握代码。
我所拥有的是一系列任务(有时在不同时期完成)。
let d = [("task1", DateTime.Parse("11/01/2014 08:30"), DateTime.Parse("12/01/2014 10:30"));
("task2", DateTime.Parse("15/01/2014 09:30"), DateTime.Parse("16/01/2014 10:30"));
("task3", DateTime.Parse("11/01/2014 08:30"), DateTime.Parse("16/01/2014 10:30"))]
let chart = d |> FSharp.Charting.Chart.RangeBar
chart.ShowChart()
我很难理解API的逻辑。
我也尝试过:
let chart = new Windows.Forms.DataVisualization.Charting.Chart(Dock = DockStyle.Fill)
let area = new ChartArea("Main")
chart.ChartAreas.Add(area)
let mainForm = new Form(Visible = true, TopMost = true, Width = 700, Height = 500)
mainForm.Controls.Add(chart)
let seriesColumns = new Series("NameOfTheSerie")
seriesColumns.ChartType <- SeriesChartType.RangeBar
type SupportToChart(serieVals: Series) =
member this.addPointXY(lbl, [<ParamArray>] yVals: Object[]) =
serieVals.Points.AddXY(lbl, yVals) |> ignore
let supporter = SupportToChart(seriesColumns)
supporter.addPointXY("AAA", DateTime.Parse("11/01/2014 08:30"), DateTime.Parse("12/01/2014 10:30") )
导致
System.ArgumentOutOfRangeException:您只能为其设置1个Y值 这个数据点。
从那时起API中有什么变化吗?
答案 0 :(得分:0)
我不完全确定F#Charting目前足够强大,能够重建上面的图表。但是,其中一个问题似乎是它将日期视为float
值(由于某种原因)并错误地猜测了范围。如果您使用以下内容,至少可以看到图表:
Chart.RangeBar(d)
|> Chart.WithYAxis(Min=41650.0, Max=41660.0)
请在GitHub上将此问题作为问题提交。如果你想更深入地了解F#Charting如何工作并帮助我们解决这个问题,那将是惊人的: - )
答案 1 :(得分:0)
诀窍是用
初始化系列let serie = new Series("Range", yValues)
其中yValues
定义“Y值”的最大数量。