Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MS Chart X Axis label repeated - showing multiple points for a single item [Range Bar]

I have created a RangeBar MS Chart control that binds with a datatable. This datatable is created based on the below list data. The problem is that x axis is showing multiple points for same item with different range.

List enter image description here
MS Chart
X axis represents the 1st column of the list and Y axis values are 3rd and 4th columns. "dt" is the datatable name

enter image description here

Code

chChart.Series["Series1"].ChartType = SeriesChartType.RangeBar;
chChart.Series["Series1"].Points.DataBind(dt.DefaultView, "Number", "Start Time,Stop Time","ToolTip=Name,Label=Name");

Tried binding as different series but still not working.

  var IETable = (dt as System.ComponentModel.IListSource).GetList();
             chChart.DataBindCrossTable(IETable, "Number", "Number", "Start Time,Stop Time","");

                foreach (Series sr in chChart.Series)
                {
                    sr.ChartType = SeriesChartType.RangeBar;
                    sr.YValueType = ChartValueType.Time;

                    sr.XValueType = ChartValueType.String;


                }

Is there a way to group x axis value for same item so that the bars are in same line?
Note - When using custom labels, only one value is shown for each x axis label.

like image 710
Thomas Mathew Avatar asked Nov 11 '22 00:11

Thomas Mathew


1 Answers

enter image description here

Add 1 Series into the chart. Then for the Series, make sure YValuesPerPoint = 2. Add new DataPoints so that the XValue represents the line (in the example for line ABC1, XValue = 1 and line ABC2, XValue = 2. For the DataPoint.AxisLabel you can set the label of that axis (in this case 'ABC1' and 'ABC2'). Then for the YValues, you specify values comma separated, for example 1,2 or 7,20.

Example:

        chChart.Series["Series1"].Points.Add(new DataPoint() { AxisLabel = "ABC1", XValue = 1, YValues = new double[] { 2,5 } });
        chChart.Series["Series1"].Points.Add(new DataPoint() { AxisLabel = "ABC1", XValue = 1, YValues = new double[] { 6,7 } });
        chChart.Series["Series1"].Points.Add(new DataPoint() { AxisLabel = "ABC1", XValue = 1, YValues = new double[] { 9,10 } });

        chChart.Series["Series1"].Points.Add(new DataPoint() { AxisLabel = "ABC2", XValue = 2, YValues = new double[] { 3,6 } });
        chChart.Series["Series1"].Points.Add(new DataPoint() { AxisLabel = "ABC2", XValue = 2, YValues = new double[] { 7,8 } });

So the key is that the XValue must be same (double?) for all the bars on same line.

like image 159
Jaska Avatar answered Nov 14 '22 22:11

Jaska