public async Task LoadChart() { var stockInfo = new StockInfoItem { Id = StockValueContext.Id, MarketType = StockValueContext.ExchangeTypeKey, Name = StockValueContext.Name }; StockChartModel chartModel = await _queryService.GetRealTimeTradeChartAsync(stockInfo); // Set the start and end value to y axis SetOpenCloseTimeToCharAxis(chartModel); // Set the top and bottom value for the chart SetUpDownLimitLineToChart(chartModel.StockMessage); // Draw the middle, up and down extra line for the chart DrawExtraLines(chartModel.StockMessage); // 設定股價座標顯示的區間次數 SetPriceTickInterval(Convert.ToDouble(chartModel.StockMessage.LimitUp), Convert.ToDouble(chartModel.StockMessage.LimitDown), 5); // Add stock point to chart foreach (var point in chartModel.ChartData) { DateTime xDateTime = DateTimeUtils.UnixTimeStampToDateTime(Convert.ToDouble(point.Timestemp)); var axisPoint = DateTimeAxis.CreateDataPoint(xDateTime, Convert.ToDouble(point.Value)); ChartDataCollection.Add(axisPoint); } }
public static PlotModel DaylightSavingsBreak() { var m = new PlotModel(); var xa = new DateTimeAxis { Position = AxisPosition.Bottom }; // TimeZone not available in PCL... m.Axes.Add(xa); m.Axes.Add(new LinearAxis { Position = AxisPosition.Left }); var ls = new LineSeries { MarkerType = MarkerType.Circle }; m.Series.Add(ls); // set the origin of the curve to 2013-03-31 00:00:00 (UTC) var o = new DateTime(2013, 3, 31, 0, 0, 0, DateTimeKind.Utc); // add points at 10min intervals // at 2am the clocks are turned forward 1 hour (W. Europe Standard Time) for (int i = 0; i < 400; i += 10) { var time = o.AddMinutes(i); ls.Points.Add(DateTimeAxis.CreateDataPoint(time, i)); } return(m); }
public GraficoMexico() { InitializeComponent(); List <EstadisticaPais> datos = new GenericRepository <List <EstadisticaPais> >().TraerDatos("dayone/country/mexico").Result; PlotModel grafica = new PlotModel(); DateTimeAxis ejetiempo = new DateTimeAxis(); LineSeries infectadosSerie = new LineSeries(); LineSeries recuperadosSerie = new LineSeries(); LineSeries muertosSerie = new LineSeries(); foreach (var item in datos) { infectadosSerie.Points.Add(DateTimeAxis.CreateDataPoint(item.Date.DateTime, item.Confirmed)); recuperadosSerie.Points.Add(DateTimeAxis.CreateDataPoint(item.Date.DateTime, item.Recovered)); muertosSerie.Points.Add(DateTimeAxis.CreateDataPoint(item.Date.DateTime, item.Deaths)); } infectadosSerie.Title = "Infectados: " + datos[datos.Count - 1].Confirmed; recuperadosSerie.Title = "Recuperdos: " + datos[datos.Count - 1].Recovered; muertosSerie.Title = "Muertos: " + datos[datos.Count - 1].Deaths;; grafica.Axes.Add(ejetiempo); grafica.Series.Add(infectadosSerie); grafica.Series.Add(recuperadosSerie); grafica.Series.Add(muertosSerie); plotgrafica.Model = grafica; }
public HistoryDataWindow() { this.InitializeComponent(); this.Points = new List <DataPoint>(); var random = new Random(); for (var i = 10; i != 0; i--) { var dt = DateTime.Now.Subtract(TimeSpan.FromSeconds(i)); var v = random.NextDouble() * 40; this.Points.Add(DateTimeAxis.CreateDataPoint(dt, v)); } this.pltData.InvalidatePlot(); var timer = new DispatcherTimer( TimeSpan.FromSeconds(1), DispatcherPriority.Background, (_, __) => { var r = new Random(); this.Points.Add(DateTimeAxis.CreateDataPoint(DateTime.Now, r.NextDouble() * 40)); this.Points.RemoveAt(0); this.pltData.InvalidatePlot(); }, this.Dispatcher); }
private void CreateSeriesPoints(ISparqlQueryResult result) { AreaSeries series = CreateSeries("Facts x 1000", OxyColor.Parse("#119eda")); int d = 0; int n = 0; double y0 = 0; double y1 = 0; foreach (BindingSet binding in result.GetBindings()) { DateTime x = DateTime.Parse(binding["time"].ToString()); double y = Convert.ToInt32(binding["facts"]); if (n == 0) { y0 = y; } if (d != x.DayOfYear) { d = x.DayOfYear; n++; } y1 = y; series.Points.Add(DateTimeAxis.CreateDataPoint(x, y / 1000)); } AverageDelta = n > 0 ? (y1 - y0) / n : 0; Model.Series.Add(series); }
public MainViewModel() { TempDataPoints = new ObservableCollection <DataPoint>(); HumiDataPoints = new ObservableCollection <DataPoint>(); Model = new PlotModel() { Title = "Simple Example", Subtitle = "using OxyPlot" }; var series1 = new LineSeries { Title = "梁業", MarkerType = MarkerType.Circle, Smooth = true }; var series2 = new LineSeries { Title = "物業", MarkerType = MarkerType.Star, Smooth = true, MarkerStroke = OxyColors.Red }; var dateTimeAxis1 = new DateTimeAxis(); dateTimeAxis1.Title = "Time"; Model.Axes.Add(dateTimeAxis1); Model.Series.Add(series1); Model.Series.Add(series2); Random rd = new Random(); Task.Run( () => { while (true) { series1.Points.Add(DateTimeAxis.CreateDataPoint(DateTime.Now, rd.Next(10, 30))); series2.Points.Add(DateTimeAxis.CreateDataPoint(DateTime.Now, rd.Next(10, 30))); if (series1.Points.Count > 100) { series1.Points.RemoveAt(0); series2.Points.RemoveAt(0); } Model.InvalidatePlot(true); Thread.Sleep(1000); } }); Task.Run( () => { while (true) { var date = DateTime.Now; App.Current.Dispatcher.BeginInvoke(new Action(() => { TempDataPoints.Add(DateTimeAxis.CreateDataPoint(date, (double)(rd.Next(100, 500) / 10.0))); HumiDataPoints.Add(DateTimeAxis.CreateDataPoint(date, (double)(rd.Next(500, 800) / 10.0))); if (TempDataPoints.Count > 300) { TempDataPoints.RemoveAt(0); HumiDataPoints.RemoveAt(0); } })); Thread.Sleep(1000); } }); }
public static PlotModel DaylightSavingsBreak() { var m = new PlotModel(); var xa = new DateTimeAxis(AxisPosition.Bottom); #if PCL // TimeZone is not available in PCL... #else #if !SILVERLIGHT //TEST xa.TimeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"); xa.TimeZone = new MyTimeZoneInfo(TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")); #endif #endif m.Axes.Add(xa); m.Axes.Add(new LinearAxis(AxisPosition.Left)); var ls = new LineSeries { MarkerType = MarkerType.Circle }; m.Series.Add(ls); // set the origin of the curve to 2013-03-31 00:00:00 (UTC) var o = new DateTime(2013, 3, 31, 0, 0, 0, DateTimeKind.Utc); // add points at 10min intervals // at 2am the clocks are turned forward 1 hour (W. Europe Standard Time) for (int i = 0; i < 400; i += 10) { var time = o.AddMinutes(i); ls.Points.Add(DateTimeAxis.CreateDataPoint(time, i)); } return(m); }
private IDisposable CreateSymbolLineSeries(SymbolObservationViewModel symbol) { var lineSeries = CreateLineSeriesAndAxis(symbol); var disposable = new CompositeDisposable(); RescaleAxisDistances(); dataPoints[symbol.Name] = new List <DataPoint> { DateTimeAxis.CreateDataPoint(DateTime.Now, Convert.ToDouble(symbol.Value)) }; Observable.FromEventPattern <PropertyChangedEventHandler, PropertyChangedEventArgs>( handler => handler.Invoke, h => symbol.PropertyChanged += h, h => symbol.PropertyChanged -= h) .Where(args => args.EventArgs.PropertyName == "Value" && pause == false) .ObserveOnDispatcher() .Subscribe(x => { UpdateDatapoints(symbol); }).AddDisposableTo(disposable); Observable.Interval(TimeSpan.FromSeconds(1)) .Where(x => pause == false) .ObserveOnDispatcher() .Subscribe(x => { UpdateLineseries(symbol, lineSeries); }) .AddDisposableTo(disposable); raisePropertyChanged("PlotModel"); // Need to invalidate oxyplot graph after removal of line series in order to have it really removed from UI Disposable.Create(() => PlotModel.InvalidatePlot(true)) .AddDisposableTo(disposable); return(disposable); }
public List <DataPoint>[] getDataForOpenHighLowCloseForShares(string symbol, string tsType, string interval) { List <DataPoint>[] dataPoints = new List <DataPoint> [5]; for (int i = 0; i < dataPoints.Length; i++) { dataPoints[i] = new List <DataPoint>(); } Dictionary <DateTime, TimeSerie> data = getDataForShares(symbol, tsType, interval); if (data == null) { return(null); } DataPoint dp; foreach (KeyValuePair <DateTime, TimeSerie> kv in data) { dp = DateTimeAxis.CreateDataPoint(kv.Key, kv.Value.Open); dataPoints[0].Add(dp); dp = DateTimeAxis.CreateDataPoint(kv.Key, kv.Value.High); dataPoints[1].Add(dp); dp = DateTimeAxis.CreateDataPoint(kv.Key, kv.Value.Low); dataPoints[2].Add(dp); dp = DateTimeAxis.CreateDataPoint(kv.Key, kv.Value.Close); dataPoints[3].Add(dp); dp = DateTimeAxis.CreateDataPoint(kv.Key, kv.Value.Volume); dataPoints[4].Add(dp); } return(dataPoints); }
public void ShowBytes(IList <byte> bytes) { _debugBytes = bytes; // TODO: rework for big endian and little endian archs var value1 = _addPoints1AsSigned ? ConvertHelp.ToInt16(_debugBytes[0], _debugBytes[1]) * 1.0 : ConvertHelp.ToUInt16(_debugBytes[0], _debugBytes[1]) * 1.0; var value2 = _addPoints2AsSigned ? ConvertHelp.ToInt16(_debugBytes[2], _debugBytes[3]) * 1.0 : ConvertHelp.ToUInt16(_debugBytes[2], _debugBytes[3]) * 1.0; var value3 = _addPoints3AsSigned ? ConvertHelp.ToInt16(_debugBytes[4], _debugBytes[5]) * 1.0 : ConvertHelp.ToUInt16(_debugBytes[4], _debugBytes[5]) * 1.0; var value4 = _addPoints4AsSigned ? ConvertHelp.ToInt16(_debugBytes[6], _debugBytes[7]) * 1.0 : ConvertHelp.ToUInt16(_debugBytes[6], _debugBytes[7]) * 1.0; _points1.Points.Add(DateTimeAxis.CreateDataPoint(DateTime.Now, value1)); _points2.Points.Add(DateTimeAxis.CreateDataPoint(DateTime.Now, value2)); _points3.Points.Add(DateTimeAxis.CreateDataPoint(DateTime.Now, value3)); _points4.Points.Add(DateTimeAxis.CreateDataPoint(DateTime.Now, value4)); PlotVm.InvalidatePlot(true); }
private void CreateSeriesPoints(ISparqlQueryResult result) { AreaSeries series = CreateSeries("Size / MB", OxyColors.Orange); int d = 0; int n = 0; double y0 = 0; double y1 = 0; foreach (BindingSet binding in result.GetBindings()) { DateTime x = DateTime.Parse(binding["time"].ToString()); double y = Convert.ToDouble(binding["size"]); if (n == 0) { y0 = y; } if (d != x.DayOfYear) { d = x.DayOfYear; n++; } y1 = y; series.Points.Add(DateTimeAxis.CreateDataPoint(x, ToMegaByte(y, 2))); } AverageDelta = n > 0 ? ToKiloByte((y0 - y1) / n, 2) : 0; Model.Series.Add(series); }
public void UpdateDataPoints() { Application.Current.Dispatcher.Invoke(() => { var machineData = GetMachineData(_currentIngotID, _startID, _availableProcessIDs); if (machineData != null && machineData.Item1.Count > 0) { _startID = machineData.Item2 + 1; if (!ShowPlot) { ShowPlot = true; RaisePropertyChanged("ShowPlot"); } foreach (var target in DataSeries) { var dataPoints = GetDataPoints(_plantName, target.Key, machineData.Item1); foreach (var data in dataPoints) { target.Value.Add(DateTimeAxis.CreateDataPoint(data.Timestamp, data.Value)); } } } }); }
public void C02_DateTimeAxis_WithSomeUndefinedPoints() { var plot = new PlotModel("DateTime axis") { PlotMargins = new OxyThickness(100, 40, 20, 100) }; var xaxis = new DateTimeAxis(AxisPosition.Bottom, "DateTime X", null, DateTimeIntervalType.Days) { Angle = -46, MajorStep = 1 }; var yaxis = new DateTimeAxis(AxisPosition.Left, "DateTime Y", null, DateTimeIntervalType.Days) { Angle = -45, MajorStep = 1 }; plot.Axes.Add(xaxis); plot.Axes.Add(yaxis); var ls = new LineSeries(); ls.Points.Add(DateTimeAxis.CreateDataPoint(new DateTime(2011, 1, 1), new DateTime(2011, 3, 1))); ls.Points.Add(DateTimeAxis.CreateDataPoint(double.NaN, new DateTime(2011, 3, 8))); ls.Points.Add(DateTimeAxis.CreateDataPoint(new DateTime(2011, 1, 6), new DateTime(2011, 3, 12))); ls.Points.Add(DateTimeAxis.CreateDataPoint(new DateTime(2011, 1, 10), double.NaN)); ls.Points.Add(DateTimeAxis.CreateDataPoint(new DateTime(2011, 1, 19), new DateTime(2011, 3, 14))); plot.Series.Add(ls); OxyAssert.AreEqual(plot, "C02"); }
private List <DataPoint> getDataPoints(Dictionary <DateTime, Dictionary <string, string> > dataCrypto, string partOfKey) { List <DataPoint> dataPoints = new List <DataPoint>(); if (dataCrypto == null) { return(dataPoints); } DataPoint dp; foreach (KeyValuePair <DateTime, Dictionary <string, string> > kv1 in dataCrypto) { foreach (KeyValuePair <string, string> kv2 in kv1.Value) { if (kv2.Key.Contains(partOfKey)) { try { dp = DateTimeAxis.CreateDataPoint(kv1.Key, Double.Parse(kv2.Value)); dataPoints.Add(dp); } catch { } break; } } } return(dataPoints); }
private void FillSeries(ObservableCollection <DataPoint> target, IList <DataPointViewModel> dataPoints) { target.Clear(); foreach (var data in dataPoints) { target.Add(DateTimeAxis.CreateDataPoint(data.Timestamp, data.Value)); } }
private void PlotUnitKills(PlotModel m) { if (EmpiresUnitKills == null) { return; } AddXDatesAxis(m); LinearAxis citiesY = new LinearAxis(); citiesY.Title = Labels.KilledUnits; citiesY.Key = "units_kills"; citiesY.Position = AxisPosition.Right; m.Axes.Add(citiesY); long lastKills = -1; double killsValue = 0; foreach (var empire in EmpiresUnitKills.OrderBy(x => x.Key.UnitsKillsRank)) { lastKills = -1; killsValue = 0; OxyPlot.Series.StairStepSeries s = new OxyPlot.Series.StairStepSeries(); s.XAxisKey = "x"; s.YAxisKey = "units_kills"; s.VerticalStrokeThickness = 0.2; s.MarkerType = MarkerType.None; s.Title = string.Format("{0} ({1})", empire.Key.PlayerName, empire.Key.AlianceName); foreach (var hr in empire.Value.OrderBy(x => x.CreateDT.Value)) { if (DiffKillsScore) { if (lastKills < 0) { //pierwszy wynik, zaczynam od zera lastKills = hr.Score; killsValue = 0; } else { killsValue = hr.Score - lastKills; lastKills = hr.Score; } } else { killsValue = hr.Score; } s.Points.Add(DateTimeAxis.CreateDataPoint(hr.CreateDT.Value, killsValue)); } m.Series.Add(s); } }
private void UpdateDatapoints(SymbolObservationViewModel symbol) { var refreshTime = DateTime.Now; dataPoints[symbol.Name].Add(DateTimeAxis.CreateDataPoint(refreshTime, Convert.ToDouble(symbol.Value))); var expireLimit = DateTimeAxis.ToDouble(DateTime.Now.Subtract(ExpiresAfter)); dataPoints[symbol.Name].RemoveAll(point => point.X < expireLimit); }
private void LoadActivities(string fileUrl) { SuspendLayout(); string queryString = @" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX nfo: <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#> PREFIX prov: <http://www.w3.org/ns/prov#> SELECT ?agent ?startTime ?endTime WHERE { ?activity prov:qualifiedAssociation ?association . ?activity prov:startedAtTime ?startTime . ?activity prov:endedAtTime ?endTime . ?activity prov:used ?entity . ?association prov:agent ?agent . ?entity nfo:fileUrl """ + Uri.EscapeUriString(fileUrl) + @""" . } ORDER BY DESC(?startTime)"; IModel model = Models.GetAllActivities(); SparqlQuery query = new SparqlQuery(queryString); ISparqlQueryResult result = model.ExecuteQuery(query, true); foreach (BindingSet binding in result.GetBindings()) { Agent agent = new Agent(new Uri(binding["agent"].ToString())); DateTime startTime = ((DateTime)binding["startTime"]).RoundToMinute(); DateTime endTime = ((DateTime)binding["endTime"]).RoundToMinute(); OxyColor color = _palette[agent]; // Since we're going backward in time, we see the close activities first. PolygonAnnotation annotation = new PolygonAnnotation(); annotation.Layer = AnnotationLayer.BelowAxes; annotation.Fill = OxyColor.FromArgb(125, color.R, color.G, color.B); annotation.Points.Add(DateTimeAxis.CreateDataPoint(startTime, 0)); annotation.Points.Add(DateTimeAxis.CreateDataPoint(startTime, 2)); annotation.Points.Add(DateTimeAxis.CreateDataPoint(endTime, 2)); annotation.Points.Add(DateTimeAxis.CreateDataPoint(endTime, 0)); Model.Annotations.Add(annotation); } ResumeLayout(); }
public static LineSeries LineSeries(string seriesTitle, DateTime[] x, double[] y, System.Drawing.Color markerColor, MarkerType mType) { var lineSeries = new LineSeries(); lineSeries.Title = seriesTitle; for (int i = 0; i < x.Length; i++) { var b = DateTimeAxis.CreateDataPoint(x[i], y[i]); lineSeries.Points.Add(b); } lineSeries.Color = OxyColor.FromRgb(markerColor.R, markerColor.G, markerColor.B); //lineSeries.MarkerFill = lineSeries.MarkerType = mType; return lineSeries; }
private void RecordValue(Channel channel, double value, DateTime time) { if (channelSeriesMap.ContainsKey(channel)) { var seriesList = channelSeriesMap[channel]; seriesList.ForEach(series => { if (series.Points.Count >= NumPoints) { series.Points.RemoveAt(0); } series.Points.Add(DateTimeAxis.CreateDataPoint(time, value)); series.PlotModel?.InvalidatePlot(true); }); } }
private void PlotOffRep(PlotModel m) { if (OffReputations == null) { return; } //miasta LinearAxis yAxis = new LinearAxis(); yAxis.Title = Labels.OffReputation; yAxis.Key = "off_rep"; yAxis.Position = AxisPosition.Right; yAxis.MajorGridlineStyle = LineStyle.None; yAxis.MinorGridlineStyle = LineStyle.None; m.Axes.Add(yAxis); foreach (var empire in OffReputations.OrderBy(x => x.Key.OffReputation)) { var s = new OxyPlot.Series.StairStepSeries(); s.XAxisKey = "x"; s.YAxisKey = "off_rep"; s.LineStyle = LineStyle.Dash; //s.VerticalStrokeThickness = 0.2; s.MarkerType = MarkerType.Diamond; s.Title = string.Format("A: {0} ({1})", empire.Key.PlayerName, empire.Key.AlianceName); DateTime?lastTime = null; long lastScore = 0; foreach (var hr in empire.Value.OrderBy(x => x.CreateDT.Value)) { s.Points.Add(DateTimeAxis.CreateDataPoint(hr.CreateDT.Value, hr.Score)); lastScore = hr.Score; lastTime = hr.CreateDT; } //sztucznie dodaję pomiar, żeb widać było poziomą kreskę if (lastTime.HasValue) { s.Points.Add(DateTimeAxis.CreateDataPoint(lastTime.Value.AddHours(1), lastScore)); } m.Series.Add(s); } }
/// <summary> /// Timer-Tick-Event of the OHM-Service /// </summary> /// <param name="args"></param> private void OpenHardwareMonitorManagementServiceTimerTickEventHandler(OpenHardwareMonitorManagementServiceTimerTickEventArgs args) { var areaSeries = (AreaSeries)this.CPUPlot.Series[0]; if (areaSeries.Points.Count > 60) { areaSeries.Points.RemoveAt(0); } if (this.openHardwareManagementService.CPU != null) { // Update CPU-Values this.openHardwareManagementService.CPU.Update(); // Get CPU-Temperature this.CPUTemperature = (this.openHardwareManagementService.CPUTemperatureSensor.Value != null) ? (double)this.openHardwareManagementService.CPUTemperatureSensor.Value : default(double); // Update values this.OnPropertyChanged(() => this.CPUPowerConsumption); this.OnPropertyChanged(() => this.CPUCoreWorkloadSensors); this.OnPropertyChanged(() => this.CPUCoreClockSpeedSensors); this.OnPropertyChanged(() => this.CPUCoreTemperatureSensors); this.OnPropertyChanged(() => this.CPUCorePowerConsumption); } // Update-Plot //double x = areaSeries.Points.Count > 0 ? areaSeries.Points[areaSeries.Points.Count - 1].X + 1 : 0; double percentage = default(double); if (this.openHardwareManagementService.CPUWorkloadSensor.Value != null && this.openHardwareManagementService.CPUWorkloadSensor.Value.HasValue) { percentage = (double)this.openHardwareManagementService.CPUWorkloadSensor.Value; } areaSeries.Points.Add(new DataPoint(DateTimeAxis.ToDouble(this.time), percentage)); areaSeries.Points2.Add(DateTimeAxis.CreateDataPoint(this.time, 0)); time = time.AddSeconds(1); this.CPUUtilization = percentage / 100; this.CPUClockSpeed = this.openHardwareManagementService.CPUClockSpeed; this.CPUPlot.InvalidatePlot(true); }
private List <DataPoint> getVolumes(Dictionary <DateTime, TimeSerie> data) { List <DataPoint> dataPoints = new List <DataPoint>(); if (data == null) { return(dataPoints); } DataPoint dp; foreach (KeyValuePair <DateTime, TimeSerie> kv in data) { dp = DateTimeAxis.CreateDataPoint(kv.Key, kv.Value.Volume); dataPoints.Add(dp); } return(dataPoints); }
/// <summary> /// 更新气压曲线 /// </summary> public void UpDataPrePoints(object sender, EventArgs e) { if (IsUpDataPrePoint) { var date = DateTime.Now; var injects = injectorDevice.GetSeleteced(); int pressure = 0; ObservableCollection <DataPoint>[] prepoints = { Pre1Points, Pre2Points, Pre3Points, Pre4Points }; Random rd = new Random(); foreach (var inject in injects) { pressure = injectorDevice.GetPressure(inject.Index); prepoints[inject.Index].Add(DateTimeAxis.CreateDataPoint(date, (double)pressure)); if (prepoints[inject.Index].Count > 50) { prepoints[inject.Index].RemoveAt(0); } } } }
public void SetPositionMarker(DateTime time) { DataPoint p0 = DateTimeAxis.CreateDataPoint(time, -5); DataPoint p1 = DateTimeAxis.CreateDataPoint(time, _y.Maximum + 5); _positionMarker.StrokeThickness = 2; _positionMarker.LineStyle = LineStyle.Solid; _positionMarker.LineJoin = LineJoin.Miter; _positionMarker.Color = Palette.AccentColor.ToOxyColor(); _positionMarker.Points.Clear(); _positionMarker.Points.Add(p0); _positionMarker.Points.Add(p1); if (!Model.Annotations.Contains(_positionMarker)) { Model.Annotations.Add(_positionMarker); } Model.InvalidatePlot(false); }
private void UpdateLineseries(SymbolObservationViewModel symbol, LineSeries lineSeries) { var newPoints = dataPoints[symbol.Name] .Where(point => !lineSeries.Points.Select(oldPoint => oldPoint.X).Contains(point.X)); if (!newPoints.Any() && dataPoints[symbol.Name].Any()) { var lastPoint = dataPoints[symbol.Name].LastOrDefault(); newPoints = new[] { DateTimeAxis.CreateDataPoint(DateTime.Now, lastPoint.Y) }; } lineSeries.Points.AddRange(newPoints); var expireLimit = DateTimeAxis.ToDouble(DateTime.Now.Subtract(ExpiresAfter)); lineSeries.Points.RemoveAll(point => point.X < expireLimit); PlotModel.InvalidatePlot(true); raisePropertyChanged("PlotModel"); }
/* * If we are graphing the time, we have to treat this a little differently * There is only one time per date,so we will be using a line graph * */ private PlotModel CreateTimeModel() { List <WorkoutTimeDB> data = (List <WorkoutTimeDB>)database.GetWorkoutTimes(); var model = new PlotModel { Title = name, LegendPlacement = LegendPlacement.Outside, LegendPosition = LegendPosition.BottomCenter, LegendOrientation = LegendOrientation.Horizontal, LegendBorderThickness = 0 }; var series = new LineSeries() { Color = OxyColors.SkyBlue, MarkerType = MarkerType.Circle, MarkerSize = 6, MarkerStroke = OxyColors.White, MarkerFill = OxyColors.SkyBlue, MarkerStrokeThickness = 1.5 }; DateTimeAxis xaxis = new DateTimeAxis { Position = AxisPosition.Bottom }; xaxis.StringFormat = "M/d"; xaxis.Minimum = DateTimeAxis.ToDouble(DateTime.Parse(data[0].Date)); DateTimeAxis yaxis = new DateTimeAxis { Position = AxisPosition.Left }; model.Axes.Add(xaxis); model.Axes.Add(yaxis); foreach (WorkoutTimeDB _data in data) { series.Points.Add(DateTimeAxis.CreateDataPoint(DateTime.Parse(_data.Date), DateTime.Parse(_data.Time))); } model.Series.Add(series); return(model); }
private List <DataPoint> getUsd(Dictionary <DateTime, Dictionary <string, string> > dataCrypto) { List <DataPoint> dataPoints = new List <DataPoint>(); if (dataCrypto == null) { return(dataPoints); } DataPoint dp; foreach (KeyValuePair <DateTime, Dictionary <string, string> > kv in dataCrypto) { try { dp = DateTimeAxis.CreateDataPoint(kv.Key, Double.Parse(kv.Value["1b. price (USD)"])); dataPoints.Add(dp); } catch { } } return(dataPoints); }
private void Graficar() { PlotModel grafica = new PlotModel(); DateTimeAxis ejeTiempo = new DateTimeAxis(); LineSeries temperatura = new LineSeries(); LineSeries humeadadAmbiental = new LineSeries(); LineSeries luminosidad = new LineSeries(); foreach (var item in model.LecturasDelDispositivo) { temperatura.Points.Add(DateTimeAxis.CreateDataPoint(item.FechaHora, item.Temperatura)); humeadadAmbiental.Points.Add(DateTimeAxis.CreateDataPoint(item.FechaHora, item.Humedad)); luminosidad.Points.Add(DateTimeAxis.CreateDataPoint(item.FechaHora, item.Luminosidad)); } temperatura.Title = "Temperatura °C"; humeadadAmbiental.Title = "Humedad ambiental %"; luminosidad.Title = "Luminosidad"; grafica.Axes.Add(ejeTiempo); grafica.Series.Add(temperatura); grafica.Series.Add(humeadadAmbiental); grafica.Series.Add(luminosidad); plotGrafica.Model = grafica; }
/// <summary> /// Update network speed plot /// </summary> private void UpdateNetworkSpeedPlot() { var areaSeries = (AreaSeries)this.NetworkSpeedPlot.Series[0]; if (areaSeries.Points.Count > 60) { areaSeries.Points.RemoveAt(0); } areaSeries.Points.Add(new DataPoint(DateTimeAxis.ToDouble(this.time), this.DownloadSpeedBytesPerSecond)); areaSeries.Points2.Add(DateTimeAxis.CreateDataPoint(this.time, 0)); var speedAxe = NetworkSpeedPlot.Axes.Where(a => a is LinearAxis).FirstOrDefault(); if (speedAxe != null) { speedAxe.Title = this.DownloadSpeedFormatted; } time = time.AddSeconds(1); this.NetworkSpeedPlot.UpdateData(); }