I am trying to find the best way to add a secondary Y axis for a line series. An example of this would be a Fahrenheit secondary Y axis for a Celsius primary Y axis. The best way I have figured out so far is to create a dummy series that is not visible and that shares the same X axis and color as the primary axis. The minimum and maximum values are then set based on the ActualRange of the primary axis. This is not ideal because the secondary axis ticks aren't being generated on round numbers.
Is there a better way to do this?
Is there an event that I can use to update the secondary Y axis minimum and maximum when the ActualRange of the primary axis changes?
// Create data table with test data
DataTable dataTable =
new
DataTable();
dataTable.Columns.Add(
new
DataColumn(
"Date"
,
typeof
(DateTime) ));
dataTable.Columns.Add(
new
DataColumn(
"Temp"
,
typeof
(
float
) ));
dataTable.Rows.Add(
new
DateTime(2016, 2, 1), 245.0f);
dataTable.Rows.Add(
new
DateTime(2016, 3, 1), 248.0f);
dataTable.Rows.Add(
new
DateTime(2016, 4, 1), 238.0f);
// Create line series for test data
LineSeries lineSeries1 =
new
LineSeries();
lineSeries1.Name =
"Temperature"
;
lineSeries1.Spline =
false
;
lineSeries1.ValueMember =
"Temp"
;
lineSeries1.CategoryMember =
"Date"
;
lineSeries1.DataSource = dataTable;
// dummy line series for secondary axis
LineSeries dummyLineSeries =
new
LineSeries();
dummyLineSeries.Name =
"Dummy Temperature"
;
dummyLineSeries.Spline =
false
;
dummyLineSeries.IsVisible =
false
;
dummyLineSeries.BorderColor = lineSeries1.BorderColor;
// X Axis definition
DateTimeCategoricalAxis DTcategoricalAxis1 =
new
DateTimeCategoricalAxis();
DTcategoricalAxis1.PlotMode = AxisPlotMode.OnTicks;
DTcategoricalAxis1.LabelFormat =
"{0:MMMyy}"
;
DTcategoricalAxis1.Title =
"Month-Year"
;
DTcategoricalAxis1.AxisType = Telerik.Charting.AxisType.First;
// Primary Y Axis definition
LinearAxis linearAxis1 =
new
LinearAxis();
linearAxis1.Title =
"Temperature (°C)"
;
linearAxis1.AxisType = Telerik.Charting.AxisType.Second;
// Secondary Y Axis definition
LinearAxis linearAxis2 =
new
LinearAxis();
linearAxis2.Title =
"Temperature (°F)"
;
linearAxis2.AxisType = Telerik.Charting.AxisType.Second;
linearAxis2.HorizontalLocation = AxisHorizontalLocation.Right;
// Add Axes to the line series
lineSeries1.HorizontalAxis = DTcategoricalAxis1;
lineSeries1.VerticalAxis = linearAxis1;
dummyLineSeries.HorizontalAxis = DTcategoricalAxis1;
dummyLineSeries.VerticalAxis = linearAxis2;
// Add line series to chart
radChartView1.Series.AddRange( lineSeries1, dummyLineSeries);
// Force secondary axis range to match adjusted
linearAxis2.Minimum = linearAxis1.ActualRange.Minimum * 1.8 + 32.0;
linearAxis2.Maximum = linearAxis1.ActualRange.Maximum * 1.8 + 32.0;