Document Layout Tutorials
Text Flow Tutorials
PageElement Abstract Class
Frame : PageElement Class
TextBlock : PageElement Class
ImageBlock : PageElement Class
Box : PageElement Class
Rule : PageElement Class
Using Date and Time axes
Timeseries data from Excel or from a database query is often held internally as floating-point numbers where the integer part represents the date (the number of days elapsed since 30 December 1899) and the decimal part the time of day. This scheme is accurate to around 2 sec with normal floating-point precision and is equivalent to the OLE date format, and can be obtained by the System.DateTime.ToOADate method.
For example day number 35414 is actually 15/12/96 (in DD/MM/YY format) so 35414.5 would be 15/12/96 12:00, as times run from midnight to 23:59 spanning the range 0-1. SharpPlot can accept ‘Date’ and ‘Time’ styles (or both together) on either the X axis or Y axis, and will format the labels accordingly. The dates are shown by default in the format of your current Windows ‘short date’ setting and the times are normally shown as ‘HH:MM’ on a 24-hour clock.
Value ... Style ... Shown as
For more detailed control over the presentation of the date/time combination, you can use the XDateFormat and XTimeFormat properties, for example to label tickmarks ‘Jan-01’ ‘Feb-01’ .... ‘Dec 02’ (in your local language) a suitable format would be “MMM-yy”.
The full reference can be found in the MSDN on Custom Date and Time Format Strings.
The X-axis will also accept integers in the range 19000000 to 20991231 and (if the XAxisStyle is one of Date/Annual/Monthly) treat these as if they are OLE date values. This may be convenient if you have imported your dates from an old time-series database, as this was a very common format in many database designs.
Tickmarks, Datum lines, etc are always given in data units, so OLE dates here.
Default tickmarks normally look for intervals which divide into 10, but for time-based axes the choice is made between values which divide into 12 which gives a better selection of intervals.
In addition to ‘Date’ you can set the XAxisStyle (only) to ‘AnnualTicks’ which will put tickmarks at the year boundaries (so the tick spacing will be very slightly irregular). In this case the tick interval gives the number of years, so to mark decades you could use:
sp.XAxisStyle = XAxisStyles.AnnualTicks; sp.SetXTickMarks(10);
This style would very likely go along with MiddleLabels to get the labels written between the tick marks. The style ‘MonthlyTicks’ works in a similar way – in this case the tickmark setting is the interval between months.
See also ...
Duration Label formatting | SharpPlot.XAxisStyle Property | SharpPlot.XDateFormat Property | SharpPlot.XTimeFormat Property | SharpPlot.YAxisStyle Property | SharpPlot.YDateFormat Property | SharpPlot.YTimeFormat Property