<chart:SfChart x:Name="ChartControl" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" BackgroundColor="Black"
ChartPadding ="5" AreaBackgroundColor="Black"
AreaBorderColor="Black" AreaBorderWidth="3">
<chart:SfChart.PrimaryAxis>
<chart:DateTimeAxis x:Name="XAxis" Interval="14400" IntervalType="Seconds" CrossesAt="0" ShowMinorGridLines="False" ShowMajorGridLines="False" LabelCreated="OnXAxisLabelCreated">
<chart:DateTimeAxis.LabelStyle >
<chart:ChartAxisLabelStyle LabelFormat="hh tt" />
</chart:DateTimeAxis.LabelStyle>
</chart:DateTimeAxis>
</chart:SfChart.PrimaryAxis>
<chart:SfChart.SecondaryAxis>
<chart:NumericalAxis x:Name="YAxis" ShowMajorGridLines="False" ShowMinorGridLines="False" CrossesAt="{Binding Source={x:Static System:DateTime.Today}}">
</chart:NumericalAxis>
</chart:SfChart.SecondaryAxis>
<chart:SfChart.Series>
<chart:AreaSeries x:Name="ChartSeries" ItemsSource="{Binding Data}" XBindingPath="Time" YBindingPath="Value" />
</chart:SfChart.Series>
</chart:SfChart>
Code behind:
private void OnXAxisLabelCreated(object sender, ChartAxisLabelEventArgs e)
{
DateTimeAxis dateTimeAxis = (DateTimeAxis)sender;
dateTimeAxis.Minimum = DateTime.Today;
dateTimeAxis.Maximum = DateTime.Today.AddHours(23).AddMinutes(59).AddSeconds(59);
//hiding the end labels
if (e.LabelContent == "12 AM" || e.LabelContent == "11 PM")
{
e.LabelStyle = new ChartAxisLabelStyle();
e.LabelStyle.FontSize = 0.01f;
}
if (e.LabelContent == "12 PM")
{
e.LabelContent = "Noon";
}
}
Data coming from the model
myDataCaptured = new List<DataCaptured>()
{
new DataCaptured{ Time = new DateTime(2019, 05, 12, 3, 12,0), Value = 2.1 },
new DataCaptured{ Time = new DateTime(2019, 05, 12, 6, 32,0), Value = 2.3 },
new DataCaptured{ Time = new DateTime(2019, 05, 12, 5, 23,0), Value = 5.1 }
}.OrderBy(data=>data.Time).ToList();