private void plotter_Loaded(object sender, RoutedEventArgs e) { innerPlotter.ViewportBindingConverter = new InjectedPlotterVerticalSyncConverter(innerPlotter); if (Record != null && !string.IsNullOrEmpty(Record.Id)) { Record = MySession.Session.Get<Exerciserecord>(Record.Id); if (Record != null) { float[] targetLine = null; float[] actionLine = null; float[] powerLine = null; int xLength = int.MaxValue; if (Record.Record1 != null && !string.IsNullOrEmpty(Record.Record1)) //目标轨迹 { var temp = record.Record1.Split('|'); targetLine = new float[temp.Length]; for (int i = 0; i < temp.Length; i++) { if (!string.IsNullOrEmpty(temp[i])) { targetLine[i] = Convert.ToSingle(temp[i]); } } if (temp.Length < xLength) xLength = temp.Length; } if (Record.Record2 != null && !string.IsNullOrEmpty(Record.Record2)) //实际运动轨迹 { var temp = record.Record2.Split('|'); actionLine = new float[temp.Length]; for (int i = 0; i < temp.Length; i++) { if (!string.IsNullOrEmpty(temp[i])) { actionLine[i] = Convert.ToSingle(temp[i]); } } if (temp.Length < xLength) xLength = temp.Length; } if (Record.Record3 != null && !string.IsNullOrEmpty(Record.Record3)) //力量 { var temp = record.Record3.Split('|'); powerLine = new float[temp.Length]; for (int i = 0; i < temp.Length; i++) { if (!string.IsNullOrEmpty(temp[i])) { powerLine[i] = Convert.ToSingle(temp[i]); } } if (temp.Length < xLength) xLength = temp.Length; } if (xLength < int.MaxValue) { //添加X轴 var xs = Enumerable.Range(1, xLength).Select(i => i * 1).ToArray(); //var xds = xs.AsXDataSource(); plotter.Visible = DataRect.Create(0, -60, xLength, 60); //添加目标轨迹 if (targetLine != null) { var target = targetLine.Take(xLength).ToArray(); //var tl = target.Join(xds); var tl = new List<Point>(); for (int i = 0; i < xLength; i++) { Point p = new Point(xs[i], target[i]); tl.Add(p); } var ds = new EnumerableDataSource<Point>(tl); ds.SetXYMapping(pt => pt); plotter.AddLineGraph(ds, Colors.Red, 2, "目标轨迹"); } //添加运动轨迹 if (actionLine != null) { var action = actionLine.Take(xLength).ToArray(); //var al = action.Join(xds); var al = new List<Point>(); for (int i = 0; i < xLength; i++) { Point p = new Point(xs[i], action[i]); al.Add(p); } var ds = new EnumerableDataSource<Point>(al); ds.SetXYMapping(pt => pt); plotter.AddLineGraph(ds, Colors.Blue, 2, "运动轨迹"); } //添加力量 if (powerLine != null) { var power = powerLine.Take(xLength).ToArray(); //var pl = power.Join(xds); var pl = new List<Point>(); for (int i = 0; i < xLength; i++) { Point p = new Point(xs[i], power[i]); pl.Add(p); } var ds = new EnumerableDataSource<Point>(pl); ds.SetXYMapping(pt => pt); innerPlotter.AddLineGraph(ds, Colors.Yellow, 2, "力量"); } } //添加分组训练信息(图2) if (record.GroupRecord != null) { List<ClusteredBarData> barData = new List<ClusteredBarData>(); var group = record.GroupRecord.Split('|'); var groupRecords = new List<RecordData>(); for (int i = 0; i < group.Length; i++) { ClusteredBarData cbd = new ClusteredBarData(); var temp = group[i].Split(','); BarData bd = new BarData { YMin = Convert.ToSingle(temp[1]), YMax = Convert.ToSingle(temp[2]) }; bd.BrushColor = Colors.Blue; cbd.X = Convert.ToInt32(temp[0]); cbd.BarDatas = new List<BarData>(); cbd.BarDatas.Add(bd); barData.Add(cbd); } EnumerableDataSource<ClusteredBarData> ds = new EnumerableDataSource<ClusteredBarData>(barData); ds.SetXMapping(x => x.X); ds.SetYMapping(y => y.BarDatas[0].YMax); DataContext = ds; } } } }
/// <summary> /// 柱状图 /// </summary> /// <param name="gvColumn"></param> /// <param name="ColumnScroll"></param> /// <param name="LineScroll"></param> public void Column(Grid gvColumn, ScrollViewer ColumnScroll) { #region 初始化 ColumnScroll.Visibility = Visibility.Visible; Grid Column_Range = gvColumn.Children[0] as Grid; Grid Column_ParticipationStrength = gvColumn.Children[1] as Grid; Column_Range.Children.Clear(); Column_ParticipationStrength.Children.Clear(); Color[] colors = new Color[] { Colors.Red, Colors.LawnGreen, Colors.Blue, Colors.Yellow, Colors.Magenta, Colors.Black, Colors.Brown, Colors.DimGray }; data = new List<ClusteredBarData>(); #endregion #region 实例图表 //最大力量 Chart chart1 = new Chart(); chart1.DataPointWidth = 2; chart1.Width = 870; Axis xaxis1 = new Axis(); AxisLabels xal1 = new AxisLabels { Enabled = true, Angle = -45 }; xaxis1.AxisLabels = xal1; chart1.AxesX.Add(xaxis1); SetTitle(chart1, "主动参与力量"); chart1.Rendered += new EventHandler(c_Rendered); Chart chart3 = new Chart(); //主动/被动关节活动度 SetTitle(chart3, "活动范围"); chart3.DataPointWidth = 2; chart3.Width = 870; Axis xaxis3 = new Axis(); AxisLabels xal3 = new AxisLabels { Enabled = true, Angle = -45 }; xaxis3.AxisLabels = xal3; chart3.AxesX.Add(xaxis3); chart3.Rendered += new EventHandler(c_Rendered); #endregion #region 被动运动集合 if (CkGuided.IsChecked.Value==true) { #region 活动范围 //活动范围 if (CkGuided_RangeList.Count > 0) { DataSeries ds = new DataSeries(); ds.RenderAs = RenderAs.Column; SolidColorBrush brush = new SolidColorBrush(Colors.Red); ds.Color = brush; ds.Name = "被动运动模式"; foreach (var item in CkGuided_RangeList) { DataPoint dp = new DataPoint(); dp.YValue = Convert.ToDouble(item.Value); dp.AxisXLabel = item.Key.ToString(); ds.DataPoints.Add(dp); } chart3.Series.Add(ds); } #endregion #region 活动范围 对比 //活动范围 if (CkGuided_RangeList.Count > 0) { var groupRecords = new List<RecordData>(); //int count=0; foreach (var item in CkGuided_RangeList) { bool flag = true; string date = Convert.ToDateTime(item.Key).ToString("yyyy/MM/dd"); var x = dateAxis.ConvertToDouble(Convert.ToDateTime(date)); for (int i = 0; i < data.Count; i++) { if (data[i].X == x) { BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; bd.BrushColor = colors[0]; data[i].BarDatas.Add(bd); flag = false; break; } } if (flag) { ClusteredBarData cbd = new ClusteredBarData(); List<BarData> barDatas = new List<BarData>(); cbd.X = x; BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; bd.BrushColor = colors[0]; barDatas.Add(bd); cbd.BarDatas = barDatas; data.Add(cbd); } } } #endregion #region 参与力量 //参与力量 if (CkGuided_ParticipationStrengthList.Count > 0) { DataSeries ds = new DataSeries(); ds.RenderAs = RenderAs.Column; SolidColorBrush brush = new SolidColorBrush(Colors.Red); ds.Color = brush; ds.Name = "被动运动模式"; foreach (var item in CkGuided_ParticipationStrengthList) { DataPoint dp = new DataPoint(); dp.YValue = Convert.ToDouble(item.Value); dp.AxisXLabel = item.Key.ToString(); ds.DataPoints.Add(dp); } chart1.Series.Add(ds); } #endregion } #endregion #region 主动运动集合 //if (CkFree.IsChecked.Value == true) //{ // #region 活动范围 // //活动范围 // if (CkFree_RangeList.Count > 0) // { // DataSeries ds = new DataSeries(); // ds.RenderAs = RenderAs.Column; // SolidColorBrush brush = new SolidColorBrush(Colors.LawnGreen); // ds.Color = brush; // ds.Name = "主动运动"; // foreach (var item in CkFree_RangeList) // { // DataPoint dp = new DataPoint(); // dp.YValue = Convert.ToDouble(item.Value); // dp.AxisXLabel = item.Key.ToString(); // ds.DataPoints.Add(dp); // } // chart3.Series.Add(ds); // } // #endregion // #region 活动范围 对比 // //活动范围 // if (CkFree_RangeList.Count > 0) // { // var groupRecords = new List<RecordData>(); // //int count=0; // foreach (var item in CkFree_RangeList) // { // bool flag = true; // string date = Convert.ToDateTime(item.Key).ToString("yyyy/MM/dd"); // var x = dateAxis.ConvertToDouble(Convert.ToDateTime(date)); // for (int i = 0; i < data.Count; i++) // { // if (data[i].X == x) // { // BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; // bd.BrushColor = colors[1]; // data[i].BarDatas.Add(bd); // flag = false; // break; // } // } // if (flag) // { // ClusteredBarData cbd = new ClusteredBarData(); // List<BarData> barDatas = new List<BarData>(); // cbd.X = x; // BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; // bd.BrushColor = colors[1]; // barDatas.Add(bd); // cbd.BarDatas = barDatas; // data.Add(cbd); // } // } // } // #endregion // #region 参与力量 // //参与力量 // if (CkFree_ParticipationStrengthList.Count > 0) // { // DataSeries ds = new DataSeries(); // ds.RenderAs = RenderAs.Column; // SolidColorBrush brush = new SolidColorBrush(Colors.LawnGreen); // ds.Color = brush; // ds.Name = "主动运动"; // foreach (var item in CkFree_ParticipationStrengthList) // { // DataPoint dp = new DataPoint(); // dp.YValue = Convert.ToDouble(item.Value); // dp.AxisXLabel = item.Key.ToString(); // ds.DataPoints.Add(dp); // } // chart1.Series.Add(ds); // } // #endregion //} #endregion #region 助动运动集合 //if (CkInitiated.IsChecked.Value == true) //{ // #region 活动范围 // //活动范围 // if (CkInitiated_RangeList.Count > 0) // { // DataSeries ds = new DataSeries(); // ds.RenderAs = RenderAs.Column; // SolidColorBrush brush = new SolidColorBrush(Colors.Blue); // ds.Color = brush; // ds.Name = "助动运动"; // foreach (var item in CkInitiated_RangeList) // { // DataPoint dp = new DataPoint(); // dp.YValue = Convert.ToDouble(item.Value); // dp.AxisXLabel = item.Key.ToString(); // ds.DataPoints.Add(dp); // } // chart3.Series.Add(ds); // } // #endregion // #region 活动范围 对比 // //活动范围 // if (CkInitiated_RangeList.Count > 0) // { // var groupRecords = new List<RecordData>(); // //int count=0; // foreach (var item in CkInitiated_RangeList) // { // bool flag = true; // string date = Convert.ToDateTime(item.Key).ToString("yyyy/MM/dd"); // var x = dateAxis.ConvertToDouble(Convert.ToDateTime(date)); // for (int i = 0; i < data.Count; i++) // { // if (data[i].X == x) // { // BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; // bd.BrushColor = colors[2]; // data[i].BarDatas.Add(bd); // flag = false; // break; // } // } // if (flag) // { // ClusteredBarData cbd = new ClusteredBarData(); // List<BarData> barDatas = new List<BarData>(); // cbd.X = x; // BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; // bd.BrushColor = colors[2]; // barDatas.Add(bd); // cbd.BarDatas = barDatas; // data.Add(cbd); // } // } // } // #endregion // #region 参与力量 // //参与力量 // if (CkInitiated_ParticipationStrengthList.Count > 0) // { // DataSeries ds = new DataSeries(); // ds.RenderAs = RenderAs.Column; // SolidColorBrush brush = new SolidColorBrush(Colors.Blue); // ds.Color = brush; // ds.Name = "助动运动"; // foreach (var item in CkInitiated_ParticipationStrengthList) // { // DataPoint dp = new DataPoint(); // dp.YValue = Convert.ToDouble(item.Value); // dp.AxisXLabel = item.Key.ToString(); // ds.DataPoints.Add(dp); // } // chart1.Series.Add(ds); // } // #endregion //} #endregion #region 主动配重块集合 if (CkFreeCounterWeight.IsChecked.Value == true) { #region 活动范围 //活动范围 if (CkFreeCounterWeight_RangeList.Count > 0) { DataSeries ds = new DataSeries(); ds.RenderAs = RenderAs.Column; SolidColorBrush brush = new SolidColorBrush(Colors.Yellow); ds.Color = brush; ds.Name = "向心、离心运动模式"; foreach (var item in CkFreeCounterWeight_RangeList) { DataPoint dp = new DataPoint(); dp.YValue = Convert.ToDouble(item.Value); dp.AxisXLabel = item.Key.ToString(); ds.DataPoints.Add(dp); } chart3.Series.Add(ds); } #endregion #region 活动范围 对比 //活动范围 if (CkFreeCounterWeight_RangeList.Count > 0) { var groupRecords = new List<RecordData>(); //int count=0; foreach (var item in CkFreeCounterWeight_RangeList) { bool flag = true; string date = Convert.ToDateTime(item.Key).ToString("yyyy/MM/dd"); var x = dateAxis.ConvertToDouble(Convert.ToDateTime(date)); for (int i = 0; i < data.Count; i++) { if (data[i].X == x) { BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; bd.BrushColor = colors[3]; data[i].BarDatas.Add(bd); flag = false; break; } } if (flag) { ClusteredBarData cbd = new ClusteredBarData(); List<BarData> barDatas = new List<BarData>(); cbd.X = x; BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; bd.BrushColor = colors[3]; barDatas.Add(bd); cbd.BarDatas = barDatas; data.Add(cbd); } } } #endregion #region 参与力量 //参与力量 if (CkFreeCounterWeight_ParticipationStrengthList.Count > 0) { DataSeries ds = new DataSeries(); ds.RenderAs = RenderAs.Column; SolidColorBrush brush = new SolidColorBrush(Colors.Yellow); ds.Color = brush; ds.Name = "向心、离心运动模式"; foreach (var item in CkFreeCounterWeight_ParticipationStrengthList) { DataPoint dp = new DataPoint(); dp.YValue = Convert.ToDouble(item.Value); dp.AxisXLabel = item.Key.ToString(); ds.DataPoints.Add(dp); } chart1.Series.Add(ds); } #endregion } #endregion #region 主动恒阻力集合 if (CkFreeConstantResistance.IsChecked.Value == true) { #region 活动范围 //活动范围 if (CkFreeConstantResistance_RangeList.Count > 0) { DataSeries ds = new DataSeries(); ds.RenderAs = RenderAs.Column; SolidColorBrush brush = new SolidColorBrush(Colors.Magenta); ds.Color = brush; ds.Name = "等张运动模式"; foreach (var item in CkFreeConstantResistance_RangeList) { DataPoint dp = new DataPoint(); dp.YValue = Convert.ToDouble(item.Value); dp.AxisXLabel = item.Key.ToString(); ds.DataPoints.Add(dp); } chart3.Series.Add(ds); } #endregion #region 活动范围 对比 //活动范围 if (CkFreeConstantResistance_RangeList.Count > 0) { var groupRecords = new List<RecordData>(); //int count=0; foreach (var item in CkFreeConstantResistance_RangeList) { bool flag = true; string date = Convert.ToDateTime(item.Key).ToString("yyyy/MM/dd"); var x = dateAxis.ConvertToDouble(Convert.ToDateTime(date)); for (int i = 0; i < data.Count; i++) { if (data[i].X == x) { BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; bd.BrushColor = colors[4]; data[i].BarDatas.Add(bd); flag = false; break; } } if (flag) { ClusteredBarData cbd = new ClusteredBarData(); List<BarData> barDatas = new List<BarData>(); cbd.X = x; BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; bd.BrushColor = colors[4]; barDatas.Add(bd); cbd.BarDatas = barDatas; data.Add(cbd); } } } #endregion #region 参与力量 //参与力量 if (CkFreeConstantResistance_ParticipationStrengthList.Count > 0) { DataSeries ds = new DataSeries(); ds.RenderAs = RenderAs.Column; SolidColorBrush brush = new SolidColorBrush(Colors.Magenta); ds.Color = brush; ds.Name = "等张运动模式"; foreach (var item in CkFreeConstantResistance_ParticipationStrengthList) { DataPoint dp = new DataPoint(); dp.YValue = Convert.ToDouble(item.Value); dp.AxisXLabel = item.Key.ToString(); ds.DataPoints.Add(dp); } chart1.Series.Add(ds); } #endregion } #endregion #region 等长A集合 if (CkIsotonicA.IsChecked.Value == true) { #region 活动范围 //活动范围 if (CkIsotonicA_RangeList.Count > 0) { DataSeries ds = new DataSeries(); ds.RenderAs = RenderAs.Column; SolidColorBrush brush = new SolidColorBrush(Colors.Black); ds.Color = brush; ds.Name = "等长运动模式"; foreach (var item in CkIsotonicA_RangeList) { DataPoint dp = new DataPoint(); dp.YValue = Convert.ToDouble(item.Value); dp.AxisXLabel = item.Key.ToString(); ds.DataPoints.Add(dp); } chart3.Series.Add(ds); } #endregion #region 活动范围 对比 //活动范围 if (CkIsotonicA_RangeList.Count > 0) { var groupRecords = new List<RecordData>(); //int count=0; foreach (var item in CkIsotonicA_RangeList) { bool flag = true; string date = Convert.ToDateTime(item.Key).ToString("yyyy/MM/dd"); var x = dateAxis.ConvertToDouble(Convert.ToDateTime(date)); for (int i = 0; i < data.Count; i++) { if (data[i].X == x) { BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; bd.BrushColor = colors[5]; data[i].BarDatas.Add(bd); flag = false; break; } } if (flag) { ClusteredBarData cbd = new ClusteredBarData(); List<BarData> barDatas = new List<BarData>(); cbd.X = x; BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; bd.BrushColor = colors[5]; barDatas.Add(bd); cbd.BarDatas = barDatas; data.Add(cbd); } } } #endregion #region 参与力量 //参与力量 if (CkIsotonicA_ParticipationStrengthList.Count > 0) { DataSeries ds = new DataSeries(); ds.RenderAs = RenderAs.Column; SolidColorBrush brush = new SolidColorBrush(Colors.Black); ds.Color = brush; ds.Name = "等长运动模式"; foreach (var item in CkIsotonicA_ParticipationStrengthList) { DataPoint dp = new DataPoint(); dp.YValue = Convert.ToDouble(item.Value); dp.AxisXLabel = item.Key.ToString(); ds.DataPoints.Add(dp); } chart1.Series.Add(ds); } #endregion } #endregion #region 等长B集合 if (CkIsotonicB.IsChecked.Value == true) { #region 活动范围 //活动范围 if (CkIsotonicB_RangeList.Count > 0) { DataSeries ds = new DataSeries(); ds.RenderAs = RenderAs.Column; SolidColorBrush brush = new SolidColorBrush(Colors.Brown); ds.Color = brush; ds.Name = "协调性训练模式"; foreach (var item in CkIsotonicB_RangeList) { DataPoint dp = new DataPoint(); dp.YValue = Convert.ToDouble(item.Value); dp.AxisXLabel = item.Key.ToString(); ds.DataPoints.Add(dp); } chart3.Series.Add(ds); } #endregion #region 活动范围 对比 //活动范围 if (CkIsotonicB_RangeList.Count > 0) { var groupRecords = new List<RecordData>(); //int count=0; foreach (var item in CkIsotonicB_RangeList) { bool flag = true; string date = Convert.ToDateTime(item.Key).ToString("yyyy/MM/dd"); var x = dateAxis.ConvertToDouble(Convert.ToDateTime(date)); for (int i = 0; i < data.Count; i++) { if (data[i].X == x) { BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; bd.BrushColor = colors[6]; data[i].BarDatas.Add(bd); flag = false; break; } } if (flag) { ClusteredBarData cbd = new ClusteredBarData(); List<BarData> barDatas = new List<BarData>(); cbd.X = x; BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; bd.BrushColor = colors[6]; barDatas.Add(bd); cbd.BarDatas = barDatas; data.Add(cbd); } } } #endregion #region 参与力量 //参与力量 if (CkIsotonicB_ParticipationStrengthList.Count > 0) { DataSeries ds = new DataSeries(); ds.RenderAs = RenderAs.Column; SolidColorBrush brush = new SolidColorBrush(Colors.Brown); ds.Color = brush; ds.Name = "协调性训练模式"; foreach (var item in CkIsotonicB_ParticipationStrengthList) { DataPoint dp = new DataPoint(); dp.YValue = Convert.ToDouble(item.Value); dp.AxisXLabel = item.Key.ToString(); ds.DataPoints.Add(dp); } chart1.Series.Add(ds); } #endregion } #endregion #region 推箱子集合 //if (CkSokoban.IsChecked.Value == true) //{ // #region 活动范围 // //活动范围 // if (CkSokoban_RangeList.Count > 0) // { // DataSeries ds = new DataSeries(); // ds.RenderAs = RenderAs.Column; // SolidColorBrush brush = new SolidColorBrush(Colors.DimGray); // ds.Color = brush; // ds.Name = "推箱子"; // foreach (var item in CkSokoban_RangeList) // { // DataPoint dp = new DataPoint(); // dp.YValue = Convert.ToDouble(item.Value); // dp.AxisXLabel = item.Key.ToString(); // ds.DataPoints.Add(dp); // } // chart3.Series.Add(ds); // } #endregion #region 活动范围 对比 // //活动范围 // if (CkSokoban_RangeList.Count > 0) // { // var groupRecords = new List<RecordData>(); // //int count=0; // foreach (var item in CkSokoban_RangeList) // { // bool flag = true; // string date = Convert.ToDateTime(item.Key).ToString("yyyy/MM/dd"); // var x = dateAxis.ConvertToDouble(Convert.ToDateTime(date)); // for (int i = 0; i < data.Count; i++) // { // if (data[i].X == x) // { // BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; // bd.BrushColor = colors[7]; // data[i].BarDatas.Add(bd); // flag = false; // break; // } // } // if (flag) // { // ClusteredBarData cbd = new ClusteredBarData(); // List<BarData> barDatas = new List<BarData>(); // cbd.X = x; // BarData bd = new BarData { YMin = Convert.ToDouble(item.Value2), YMax = Convert.ToDouble(item.Value) }; // bd.BrushColor = colors[7]; // barDatas.Add(bd); // cbd.BarDatas = barDatas; // data.Add(cbd); // } // } // } #endregion // #region 参与力量 // //参与力量 // if (CkSokoban_ParticipationStrengthList.Count > 0) // { // DataSeries ds = new DataSeries(); // ds.RenderAs = RenderAs.Column; // SolidColorBrush brush = new SolidColorBrush(Colors.DimGray); // ds.Color = brush; // ds.Name = "推箱子"; // foreach (var item in CkSokoban_ParticipationStrengthList) // { // DataPoint dp = new DataPoint(); // dp.YValue = Convert.ToDouble(item.Value); // dp.AxisXLabel = item.Key.ToString(); // ds.DataPoints.Add(dp); // } // chart1.Series.Add(ds); // } // #endregion //} //#endregion #region 添加图表到容器 Column_Range.Children.Add(chart3); Column_ParticipationStrength.Children.Add(chart1); #endregion #region 添加数据 EnumerableDataSource<ClusteredBarData> value = new EnumerableDataSource<ClusteredBarData>(data); value.SetXMapping(k => k.X); value.SetYMapping(k => k.BarDatas[0].YMax); DataContext = value; #endregion }
/// <summary> /// 柱状图 /// </summary> /// <param name="gvColumn"></param> /// <param name="ColumnScroll"></param> /// <param name="LineScroll"></param> public void Column() { #region 活动范围 //活动范围 if (RangeList.Count > 0) { List<ClusteredBarData> data = new List<ClusteredBarData>(); Color[] colors = new Color[] { Colors.Red, Colors.Blue, Colors.Yellow }; foreach (var item in RangeList) { ClusteredBarData cbd = new ClusteredBarData(); List<BarData> barDatas = new List<BarData>(); string date = Convert.ToDateTime(item.Key).ToString("yyyy/MM/dd"); cbd.X = dateAxis.ConvertToDouble(Convert.ToDateTime(date)); BarData bd = new BarData { YMin =Convert.ToDouble(item.Value2), YMax =Convert.ToDouble(item.Value) }; bd.BrushColor = colors[0]; barDatas.Add(bd); cbd.BarDatas = barDatas; data.Add(cbd); } EnumerableDataSource<ClusteredBarData> value = new EnumerableDataSource<ClusteredBarData>(data); value.SetXMapping(k => k.X); value.SetYMapping(k => k.BarDatas[0].YMax); DataContext = value; } #endregion }