Steps to reproduce: 1. Add a chart to a form 2. Add a bar series with some data 3. Set the gapLength of the horizontal axis to 0 Run the project and resize the chart. You will see that the gaps between bars are inconsistent.
Steps to reproduce: 1. Add a chart to a form 2. Add a PanZoomController with ChartPanZoomMode set to Both 3. Add a series with some data 4. Set the LabelFitMode of the horizontal axis to Rotate 5. Run the project and zoom in on the chart and then pan. You will see that when you pan vertically the labels of the horizontal axis will move in the wrong direction.
If one removes the trackball controller while the trackball info element is visible it will remain on the chart. Steps to reproduce: 1. Add a chart to a form 2. Add series and data points 3. Subscribe for the chart MouseClick event 4. In the event handler change the value of the chart ShowTrackball property (from false to true or vice versa) Start the project and click several times on the chart. You will see that trackball info elements will remain on the chart.
If one sets the LabelsOffsetFromCenter property to any value there will be no change in the series labels on the chart.
Currently the axis data flows from left to right starting with the smallest values and increasing. There should be a way to verse this flow and the most left values to be the biggest.
Add HLC (high-low-close) Series to RadChartView
Add Renko Series to RadChartView
Add Kagi Series to RadChartView
Add Point and Figure Series to RadChartView
Add method to zoom by specified parameters
To reproduce: this.chart.Controllers.Add(new ChartTrackballController()); this.chart.Dock = DockStyle.Fill; this.chart.AreaType = ChartAreaType.Cartesian; LineSeries lineSeries1 = new LineSeries(); lineSeries1.Name = "Line 1"; lineSeries1.DataPoints.Add(new CategoricalDataPoint(10, "1")); lineSeries1.DataPoints.Add(new CategoricalDataPoint(4, "2")); lineSeries1.DataPoints.Add(new CategoricalDataPoint(23, "3")); lineSeries1.DataPoints.Add(new CategoricalDataPoint(11, "4")); lineSeries1.DataPoints.Add(new CategoricalDataPoint(15, "5")); lineSeries1.DataPoints.Add(new CategoricalDataPoint(10, "6")); lineSeries1.DataPoints.Add(new CategoricalDataPoint(4, "7")); lineSeries1.DataPoints.Add(new CategoricalDataPoint(7, "8")); lineSeries1.DataPoints.Add(new CategoricalDataPoint(11, "9")); lineSeries1.DataPoints.Add(new CategoricalDataPoint(15, "10")); this.chart.Series.Add(lineSeries1); LineSeries lineSeries2 = new LineSeries(); lineSeries2.Name = "Line 2"; lineSeries2.DataPoints.Add(new CategoricalDataPoint(6, "1")); lineSeries2.DataPoints.Add(new CategoricalDataPoint(20, "2")); lineSeries2.DataPoints.Add(new CategoricalDataPoint(7, "3")); lineSeries2.DataPoints.Add(new CategoricalDataPoint(8, "4")); lineSeries2.DataPoints.Add(new CategoricalDataPoint(4, "5")); lineSeries2.DataPoints.Add(new CategoricalDataPoint(10, "6")); lineSeries2.DataPoints.Add(new CategoricalDataPoint(24, "7")); lineSeries2.DataPoints.Add(new CategoricalDataPoint(17, "8")); lineSeries2.DataPoints.Add(new CategoricalDataPoint(18, "9")); lineSeries2.DataPoints.Add(new CategoricalDataPoint(43, "10")); this.chart.Series.Add(lineSeries2); this.chart.ShowTrackBall = true; For workaround, use this class: public class MyTrackBallController : ChartTrackballController { protected override string GetTrackballText(List<DataPointInfo> points) { StringBuilder result = new StringBuilder("<html>"); SortedDictionary<Telerik.WinControls.UI.ChartSeries, List<DataPoint>> visiblePoints = new SortedDictionary<Telerik.WinControls.UI.ChartSeries, List<DataPoint>>(new ChartSeriesComparer()); foreach (DataPointInfo pointInfo in points) { if (visiblePoints.ContainsKey(pointInfo.Series)) { visiblePoints[pointInfo.Series].Add(pointInfo.DataPoint); } else { visiblePoints.Add(pointInfo.Series, new List<DataPoint>() { pointInfo.DataPoint }); } } int counter = 0; foreach (Telerik.WinControls.UI.ChartSeries series in visiblePoints.Keys) { for (int i = 0; i < visiblePoints[series].Count; i++) { Color pointColor = this.GetColorForDataPoint(series, visiblePoints[series][i]); string color = string.Format("{0},{1},{2},{3}", pointColor.A, pointColor.R, pointColor.G, pointColor.B); result.AppendFormat("<color={0}>{1}", color, this.GetPointText(visiblePoints[series][i])); if (i < visiblePoints[series].Count) { result.Append(" "); } } counter++; if (counter < visiblePoints.Keys.Count) { result.Append("\n"); } } result.Append("</html>"); return result.ToString(); } class ChartSeriesComparer : IComparer<Telerik.WinControls.UI.ChartSeries> { public int Compare(Telerik.WinControls.UI.ChartSeries x, Telerik.WinControls.UI.ChartSeries y) { if (!(x is IndicatorBase) && y is IndicatorBase) { return -1; } else if (x is IndicatorBase && !(y is IndicatorBase)) { return 1; } if (x.Equals(y)) { return 0; } return 1; } } }
Now I got stuck when trying to give the Y-values displayed in the Chart another format (currency): I`m setting LineSeries instance properties "DisplayMember" without achieving an effect i.e. the values are displayed the same way as if DisplayMember was not set (f.e. 4995148.92 instead of 4.995.148.92 €).
The last one or two characters of axis titles are cut off.
Zooming out of RadChartView affects the vertical axis labels
To reproduce: -add RadChartView and use the following code: public Form1() { InitializeComponent(); radChartView1.SelectionMode = ChartSelectionMode.MultipleDataPoints; MessageBox.Show(radChartView1.SelectionMode.ToString()); radChartView1.SelectionMode = ChartSelectionMode.MultipleDataPoints; MessageBox.Show(radChartView1.SelectionMode.ToString()); }
To reproduce: -add RadChartView and use the following code: this.radChartView1.AreaType = ChartAreaType.Pie; PieSeries series = new PieSeries(); series.DataPoints.Add(new PieDataPoint(50, "Germany")); series.DataPoints.Add(new PieDataPoint(70, "United States")); series.DataPoints.Add(new PieDataPoint(40, "France")); series.DataPoints.Add(new PieDataPoint(25, "United Kingdom")); series.ShowLabels = true; this.radChartView1.Series.Add(series); Workaround: recreate the ChartDataPointElementController: this.radChartView1.AreaType = ChartAreaType.Pie; this.radChartView1.Controllers.RemoveAt(0); this.radChartView1.Controllers.Add(new ChartDataPointElementController()); PieSeries series = new PieSeries(); series.DataPoints.Add(new PieDataPoint(50, "Germany")); series.DataPoints.Add(new PieDataPoint(70, "United States")); series.DataPoints.Add(new PieDataPoint(40, "France")); series.DataPoints.Add(new PieDataPoint(25, "United Kingdom")); series.ShowLabels = true; this.radChartView1.Series.Add(series);
The Step Line chart type is similar to the Line chart type, but it does not use the shortest distance to connect two data points. Instead, this chart type uses vertical and horizontal lines to connect the data points in a series forming a step-like progression.
To reproduce: 1.Add RadChartView 2.Set vertical axis to be LinearAxis 3.Add DataPoints with value with 14 or more digits. 4.Set FormatLabel = {0:C} or {0:F0} 5.Run project and will see that labels overlaps vertical axis. Workaround: Use custom format provider this.radChartView1.Axes[1].LabelFormatProvider = new MyFormatProvider();
To reproduce: AddChartView(); radChartView1.ShowGrid = true; CartesianGrid grid = ((CartesianGrid)radChartView1.GetArea<CartesianArea>().Grid); grid.DrawVerticalFills = true; grid.AlternatingHorizontalColor = false; grid.AlternatingVerticalColor = false; grid.BackColor = Color.Red; grid.ForeColor = Color.Blue; grid.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
Use the code below and reduce the Form size to see the extra line: public Form1() { InitializeComponent(); radChartView1.Parent = this; radChartView1.Dock = DockStyle.Fill; radChartView1.ShowLegend = true; radChartView1.ShowGrid = true; CartesianGrid grid = ((CartesianGrid)radChartView1.GetArea<CartesianArea>().Grid); grid.DrawVerticalFills = true; grid.AlternatingHorizontalColor = false; grid.AlternatingVerticalColor = false; grid.BackColor = Color.Red; grid.ForeColor = Color.Blue; grid.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Solid; DateTimeContinuousAxis horizontalAxis = new DateTimeContinuousAxis(); horizontalAxis.MajorStepUnit = Telerik.Charting.TimeInterval.Day; horizontalAxis.MajorStep =2; horizontalAxis.LabelFormat = "{0:dd/MM/yyyy}"; LinearAxis verticalAxis1 = new LinearAxis(); verticalAxis1.AxisType = AxisType.Second; LinearAxis verticalAxis2 = new LinearAxis(); verticalAxis2.AxisType = AxisType.Second; verticalAxis2.HorizontalLocation = AxisHorizontalLocation.Right; LineSeries line1 = new LineSeries(); line1.HorizontalAxis = horizontalAxis; line1.VerticalAxis = verticalAxis1; LineSeries line2 = new LineSeries(); line2.HorizontalAxis = horizontalAxis; line2.VerticalAxis = verticalAxis2; line1.DataPoints.Add(new CategoricalDataPoint(26d, DateTime.Now.AddDays(-6))); line1.DataPoints.Add(new CategoricalDataPoint(20d, DateTime.Now.AddDays(-5))); line1.DataPoints.Add(new CategoricalDataPoint(12d, DateTime.Now.AddDays(-4))); line1.DataPoints.Add(new CategoricalDataPoint(15d, DateTime.Now.AddDays(-2))); line1.DataPoints.Add(new CategoricalDataPoint(21d, DateTime.Now.AddDays(-1))); line2.DataPoints.Add(new CategoricalDataPoint(32d, DateTime.Now.AddDays(-6))); line2.DataPoints.Add(new CategoricalDataPoint(52d, DateTime.Now.AddDays(-4))); line2.DataPoints.Add(new CategoricalDataPoint(35d, DateTime.Now.AddDays(-3))); line2.DataPoints.Add(new CategoricalDataPoint(36d, DateTime.Now.AddDays(-2))); line2.DataPoints.Add(new CategoricalDataPoint(11d, DateTime.Now.AddDays(-1))); line1.LegendTitle = "line1"; line2.LegendTitle = "line2"; this.radChartView1.Series.Add(line1); this.radChartView1.Series.Add(line2); }