如何在Fsharp.Charting中设置xaxis网格的网格质量?

时间:2015-01-23 06:52:46

标签: f# fsharpchart f#-charting

我使用雅虎财经数据来比较两家公司的收盘价:

#load "C:\Users\Nick\Documents\Visual Studio 2013\packages\FSharp.Charting.0.90.9\FSharp.Charting.fsx"
open FSharp.Data
open FSharp.Charting
open System
open System.Drawing
open System.Windows.Forms.DataVisualization.Charting

type Stocks = CsvProvider<"http://ichart.finance.yahoo.com/table.csv?s=FB">

let plotprice nasdaqcode =
    let url = "http://ichart.finance.yahoo.com/table.csv?s=" + nasdaqcode
    let company = Stocks.Load(url)
    let companyPrices = 
        [ for r in company.Rows do
            if r.Date > DateTime(2010, 1, 1) (* && r.Date < DateTime(2015, 1, 1) *) then
        yield r.Date, r.Close ]

    Chart.Line(companyPrices,Name=nasdaqcode) 
    |> Chart.WithLegend(Enabled=true,Docking=ChartTypes.Docking.Bottom, InsideArea=false)

Chart.Combine ([plotprice "VLKPY";plotprice "TM"])
|> Chart.WithXAxis(LabelStyle = ChartTypes.LabelStyle(Angle = -45),MajorGrid=ChartTypes.Grid(Enabled=true, LineColor=Color.LightGray))
|> Chart.WithYAxis(MajorGrid=ChartTypes.Grid(Enabled=true, LineColor=Color.LightGray))

这就是我得到的:

VM and Toyota Close price

问题:

如图所示,只有两条网格线(2012/1/1和2014/1/1)。我想在X轴上有一个更精细的网格:从2010年到2015年每年一条线。是否有可能以这种方式设置网格?

1 个答案:

答案 0 :(得分:3)

您可以使用Interval类型的Grid参数:

Chart.Combine ([plotprice "VLKPY";plotprice "TM"])
|> Chart.WithXAxis
    ( MajorGrid = ChartTypes.Grid( Enabled=true, 
                                   LineColor=Color.LightGray, 
                                   Interval=365.0 ) )

您还可以将IntervalOffsetType参数设置为DateTimeIntervalType.Years,但这对我来说似乎不起作用 - 所以看起来F#Charting目前只适用于几天。

如果您可以验证这一点,submit an issue或者甚至可能考虑为F#Charting做出贡献来解决这个问题,那将会很棒: - )