Как настроить качество сеток для xaxis grid в Fsharp.Charting?
Я использую данные Yahoo Finance для сравнения цены двух компаний:
#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 год. Можно ли настроить сетку таким образом?
1 ответ
Решение
Вы можете использовать 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 в настоящее время работает только по дням.
Было бы замечательно, если бы вы могли проверить это, представить проблему или, возможно, даже посмотреть, как внести вклад в F# Charting, чтобы это исправить:-)