Я создаю приложение UWP, которое требует показа данных, в которых есть дата, но значение определенной даты может отсутствовать, поэтому я ожидаю разрыв между двумя разделами данных, которым назначено значение.
Я пытался добавить новую точку данных с пустым значением Y, но с правильно установленным DateTime.
Это мой класс C # с кодом для страницы, он использует код позади.
public sealed partial class MainPage : Page
{
ObservableCollection<DataPoint> Data { get; } = new ObservableCollection<DataPoint>();
public MainPage()
{
InitializeComponent();
MainChart.Loaded += MainChart_Loaded;
}
private void MainChart_Loaded(object sender, RoutedEventArgs e)
{
var now = new DateTime(2019, 11, 7, 19, 5, 50);
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(7)), 0.2));
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(6)), 0.1));
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(5))));
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(4))));
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(3))));
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(2)), 0.6));
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(1)), 0.7));
Data.Add(new DataPoint(now, 0.9));
}
}
public class DataPoint
{
public DataPoint(DateTime time, double? y = null)
{
Time = time;
Y = y;
}
public DateTime Time { get; set; }
public double? Y { get; set; }
}
Это часть, где я настраиваю диаграмму.
<Grid>
<telerik:RadCartesianChart x:Name="MainChart">
<telerik:RadCartesianChart.HorizontalAxis>
<telerik:DateTimeContinuousAxis />
</telerik:RadCartesianChart.HorizontalAxis>
<telerik:RadCartesianChart.VerticalAxis>
<telerik:LinearAxis />
</telerik:RadCartesianChart.VerticalAxis>
<telerik:LineSeries ItemsSource="{x:Bind Data}">
<telerik:LineSeries.ValueBinding>
<telerik:PropertyNameDataPointBinding PropertyName="Y" />
</telerik:LineSeries.ValueBinding>
<telerik:LineSeries.CategoryBinding>
<telerik:PropertyNameDataPointBinding PropertyName="Time" />
</telerik:LineSeries.CategoryBinding>
</telerik:LineSeries>
</telerik:RadCartesianChart>
</Grid>
Я также пытался использовать DateTimeCategoricalAxis
, но отображаются только категории, в которых есть данные.
И я также попытался установить основной шаг равным двум и единице, а единицу шага - секундами, но это только изменило способ отображения Xось.
На основе этого веб-сайта (https://www.telerik.com/universal-windows-platform-ui/chart), это поддерживаемое поведение, но я не смог найти документы, указывающие, как его следует реализовывать. Также данные, прежде чем вводить нулевые значения,не отображается.
Если я удаляю нулевые значения Y,
private void MainChart_Loaded(object sender, RoutedEventArgs e)
{
var now = new DateTime(2019, 11, 7, 19, 5, 50);
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(7)), 0.2));
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(6)), 0.1));
//Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(5))));
//Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(4))));
//Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(3))));
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(2)), 0.6));
Data.Add(new DataPoint(now.Subtract(TimeSpan.FromSeconds(1)), 0.7));
Data.Add(new DataPoint(now, 0.9));
}
Данные показывают и без пропуска, но это будет ожидаемое поведение.