【发布时间】:2016-05-06 06:05:15
【问题描述】:
在 XAMARIN iOS Oxyplot 中,我想建立一些图表来显示电池趋势。它大约有 2000 个数据点。添加时,oxyplot 试图将它们全部添加到可见区域。然而,我希望它平移和下降。
代码如下
plotModel.Axes.Add (new LinearAxis {
Position = AxisPosition.Left,
MajorGridlineStyle = LineStyle.Dot,
Minimum = -2,
Maximum = 8,
AbsoluteMinimum = -2,
AbsoluteMaximum = 8,
MinorStep = 10,
MajorStep = 2
});
DateTimeAxis dtx = new DateTimeAxis {
Position = AxisPosition.Bottom,
MajorGridlineStyle = LineStyle.Dot,
AbsoluteMinimum = DateTimeAxis.ToDouble (batteryGraph.Min (v => v.LogTimeStamp)) - (0.5d / 60),
MajorStep = 5d,
StringFormat = "MM-dd-yy",
AbsoluteMaximum = DateTimeAxis.ToDouble (batteryGraph.Max (v => v.LogTimeStamp)) + (0.5d / 6),
Minimum = DateTimeAxis.ToDouble (batteryGraph.Min (v => v.LogTimeStamp)) - (0.5d / 60),
Maximum = DateTimeAxis.ToDouble (batteryGraph.Max (v => v.LogTimeStamp)) + (0.5d / 6)
};
plotModel.Axes.Add (dtx);
//For Low voltage alarm limit adding one line series
var limitSeries = new LineSeries {
Color = OxyColor.FromRgb (205, 92, 92),
};
var series = new LineSeries {
MarkerType = OxyPlot.MarkerType.Circle,
MarkerSize = 2,
MarkerStroke = OxyColor.FromRgb (0, 158, 214),
MarkerStrokeThickness = 2,
MarkerFill = OxyColors.White,
Color = OxyColor.FromRgb (0, 158, 214),
Smooth = true,
//DataFieldX2 = "X",
//ConstantY2 = 0,
IsPanEnabled=true
//Fill = OxyColor.FromArgb (30, 0, 158, 214),
};
plotModel.TouchStarted += (s, e) => {
//var point = series.InverseTransform(e.Position);
var point = series.GetNearestPoint (e.Position, true);
if (point == null && point.Item != null)
return;
var dataPoint = ((DataPoint)point.Item);
plotModel.Subtitle = "Date is= " + DateTimeAxis.ToDateTime (dataPoint.X) + " and Value = " + dataPoint.Y;
plotModel.InvalidatePlot (false);
e.Handled = false;
};
plotModel.InvalidatePlot (true);
//For Low voltage alarm limit adding one line series add some panning to left
limitSeries.Points.Add (DateTimeAxis.CreateDataPoint ((batteryGraph.Min (v => v.LogTimeStamp)).AddDays (-1), double.Parse (lowVoltAlarmLimit)));
foreach (var batteryInfo in batteryGraph) {
double batteryValue;
if (double.TryParse (batteryInfo.AuditItemData [0].Value.ToString (), out batteryValue))
;
series.Points.Add (DateTimeAxis.CreateDataPoint (batteryInfo.LogTimeStamp.ToLocalTime (), batteryValue));
//For Low voltage alarm limit adding one line series with same value
limitSeries.Points.Add (DateTimeAxis.CreateDataPoint (batteryInfo.LogTimeStamp.ToLocalTime (), double.Parse (lowVoltAlarmLimit)));
//series.Points2.Add (DateTimeAxis.CreateDataPoint (batteryInfo.LogTimeStamp.ToLocalTime (), -5));
}
plotModel.Series.Add (series);
////For Low voltage alarm limit adding one line series adding some panning to right
limitSeries.Points.Add (DateTimeAxis.CreateDataPoint ((batteryGraph.Max (v => v.LogTimeStamp)).AddDays (1), double.Parse (lowVoltAlarmLimit)));
//limitSeries.Points.Add (DateTimeAxis.CreateDataPoint (batteryGraph.Max (v => v.LogTimeStamp)) + 1d, double.Parse (lowVoltAlarmLimit)));
plotModel.Series.Add (limitSeries);
plotView.Model = plotModel;
graphView.AddSubview (plotView);
我已将 IsPanenabled 与系列系列相关联。但是 id 没有按预期工作。一次添加所有点是否有问题?我确定我做错了什么。我需要使用 Line 系列以外的其他系列吗?请指教..
【问题讨论】:
标签: c# xamarin.ios oxyplot