如何在 Fsharp.Charting 中设置 xaxis 网格的质量?
How to set the quality of grids for xaxis grid in Fsharp.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))
这是我得到的:
问题:
如图所示,只有两条网格线(年份 2012/1/1 和 2014/1/1)。我想在 X 轴上有一个更精细的网格:从 2010 年到 2015 年每年一行。是否可以这样设置网格?
您可以使用 Grid
类型的 Interval
参数:
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 做贡献来解决这个问题:-)
我使用雅虎财经数据比较两家公司的收盘价:
#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))
这是我得到的:
问题:
如图所示,只有两条网格线(年份 2012/1/1 和 2014/1/1)。我想在 X 轴上有一个更精细的网格:从 2010 年到 2015 年每年一行。是否可以这样设置网格?
您可以使用 Grid
类型的 Interval
参数:
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 做贡献来解决这个问题:-)