private SfChart GeneratePositionsMagneticFieldChart() { var magneticFieldData = LocaleData.Where(data => data.SignalType == SignalType.Magnetometer).ToList(); MagneticFieldData = new ObservableCollection <PositionSignalData>(magneticFieldData); return(ChartsFactory.CreatePositionSignalDataScatterChart( AppResources.Magnetic_field, AppResources.Magnetic_Y_Intensity, AppResources.Magnetic_Z_Intensity, MagneticFieldData, "Z", "Y", "StandardDeviationZ", "StandardDeviationX", ErrorBarMode.Both )); }
private void AddPositionsSignalsCharts(StackLayout stackLayout) { SignalNames.ForEach(signalName => { var signalData = LocaleData.Where(data => data.SignalId == signalName).ToList(); var minimum = signalData.Min(signalData => signalData.Strength - signalData.StandardDeviation); var maximum = signalData.Max(signalData => signalData.Strength + signalData.StandardDeviation); var primaryAxis = new CategoryAxis() { Title = new ChartAxisTitle() { Text = AppResources.Position } }; var secondaryAxis = new NumericalAxis() { Minimum = minimum, Maximum = maximum, LabelStyle = new ChartAxisLabelStyle() { LabelFormat = "##" }, Title = new ChartAxisTitle() { Text = AppResources.RSSI_dB } }; var chart = ChartsFactory.CreatePositionSignalDataScatterChart( signalName, AppResources.RSSI_dB, AppResources.Position, signalData, "PositionId", "Strength", "", "StandardDeviation", ErrorBarMode.Vertical, primaryAxis, secondaryAxis, height: 400 + ((int)Math.Floor(signalData.Count / 2.0) * 30)); stackLayout.Children.Add(chart); }); }
private void AggregateData() { Locale.Zones?.ForEach(zone => zone.Positions?.ForEach(position => { position.Zone = zone; position.PositionSignalData?.ForEach(data => { data.Position = position; LocaleData.Add(data); }); })); SignalNames = LocaleData .Where(data => data.SignalType != SignalType.Magnetometer && !string.IsNullOrEmpty(data.SignalId)) .GroupBy(data => data.SignalId) .Select(data => new { SignalId = data.Key, Samples = data.Sum(positionSignalData => positionSignalData.Samples) }) .OrderByDescending(signal => signal.Samples) .Select(signal => signal.SignalId) .ToHashSet(); }