If I zoom in to the chart I end up with multiple X-Axis ticks with duplicate values.
I have stepped through the LinearAxisModel code using Reflector and found that in the GenerateTicks method it has a ZoomWidth of ~50.0 and a MajorStep of 20.0.
Which over a range of min = 0, Max = 140 ends up with it generating far too many ticks for the data range.
Is there a way to control the number of ticks that are generated so that only one tick per distinct data value are displayed?
Thanks
I have stepped through the LinearAxisModel code using Reflector and found that in the GenerateTicks method it has a ZoomWidth of ~50.0 and a MajorStep of 20.0.
Which over a range of min = 0, Max = 140 ends up with it generating far too many ticks for the data range.
Is there a way to control the number of ticks that are generated so that only one tick per distinct data value are displayed?
Thanks
3 Answers, 1 is accepted
0
Hello Dominic,
There is a way depending on the axis you are using. Please, check the corresponding online help topic.
Regards,
Rosko
Telerik
There is a way depending on the axis you are using. Please, check the corresponding online help topic.
Regards,
Rosko
Telerik
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
0

Dominic
Top achievements
Rank 1
answered on 13 Jun 2013, 11:49 AM
Hi,
I think the issue is that I dont want to start showing fractional values in the graph under different zoom levels.
Here is a very simple example.
Once I start to zoom the MajorStep value is forgotten about and I start getting values at 1.2, 1.4, 1.6 etc.
I dont want that. I just want it to stick with 1,2,3,4
I think the issue is that I dont want to start showing fractional values in the graph under different zoom levels.
Here is a very simple example.
Once I start to zoom the MajorStep value is forgotten about and I start getting values at 1.2, 1.4, 1.6 etc.
I dont want that. I just want it to stick with 1,2,3,4
public class ViewModel
{
public ObservableCollection<
TenorDataPoint
> DataPoints { get; set; }
public ViewModel()
{
this.DataPoints = CreateTestData();
}
private ObservableCollection<
TenorDataPoint
> CreateTestData()
{
var list = new[]
{
new TenorDataPoint{TenorDate=DateTime.Today,Value = 1.0},
new TenorDataPoint{TenorDate=DateTime.Today.AddDays(1),Value = 2.0},
new TenorDataPoint{TenorDate=DateTime.Today.AddDays(2),Value = 3.0},
new TenorDataPoint{TenorDate=DateTime.Today.AddDays(3),Value = 4.0},
new TenorDataPoint{TenorDate=DateTime.Today.AddDays(4),Value = 5.0},
new TenorDataPoint{TenorDate=DateTime.Today.AddDays(5),Value = 6.0},
new TenorDataPoint{TenorDate=DateTime.Today.AddDays(6),Value = 7.0},
new TenorDataPoint{TenorDate=DateTime.Today.AddDays(7),Value = 8.0},
new TenorDataPoint{TenorDate=DateTime.Today.AddDays(8),Value = 9.0},
new TenorDataPoint{TenorDate=DateTime.Today.AddDays(9),Value = 10.0}
};
return new ObservableCollection<
TenorDataPoint
>(list);
}
}
<
Window
x:Class
=
"RadChartTest.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:radChartTest
=
"clr-namespace:RadChartTest"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
>
<
Window.Resources
>
<
radChartTest:ViewModel
x:Key
=
"TestModel"
/>
</
Window.Resources
>
<
Grid
x:Name
=
"Root"
DataContext
=
"{StaticResource TestModel}"
>
<
telerik:RadCartesianChart
>
<
telerik:RadCartesianChart.Behaviors
>
<
telerik:ChartPanAndZoomBehavior
ZoomMode
=
"Both"
PanMode
=
"Both"
/>
</
telerik:RadCartesianChart.Behaviors
>
<
telerik:ScatterLineSeries
ItemsSource
=
"{Binding DataPoints}"
>
<
telerik:ScatterLineSeries.VerticalAxis
>
<
telerik:LinearAxis
x:Name
=
"VerticalAxis"
Title
=
"€"
></
telerik:LinearAxis
>
</
telerik:ScatterLineSeries.VerticalAxis
>
<
telerik:ScatterLineSeries.HorizontalAxis
>
<
telerik:LinearAxis
x:Name
=
"HorizontalAxis"
Title
=
"Time"
MajorStep
=
"1"
Minimum
=
"0"
Maximum
=
"10"
></
telerik:LinearAxis
>
</
telerik:ScatterLineSeries.HorizontalAxis
>
<
telerik:ScatterLineSeries.XValueBinding
>
<
telerik:PropertyNameDataPointBinding
PropertyName
=
"Tenor"
>
</
telerik:PropertyNameDataPointBinding
>
</
telerik:ScatterLineSeries.XValueBinding
>
<
telerik:ScatterLineSeries.YValueBinding
>
<
telerik:PropertyNameDataPointBinding
PropertyName
=
"Value"
>
</
telerik:PropertyNameDataPointBinding
>
</
telerik:ScatterLineSeries.YValueBinding
>
</
telerik:ScatterLineSeries
>
</
telerik:RadCartesianChart
>
</
Grid
>
</
Window
>
public class TenorDataPoint
{
/// <
summary
>
/// Gets or sets Tenor.
/// </
summary
>
public int Tenor
{
get
{
return TenorDate.Subtract(DateTime.Today).Days;
}
}
/// <
summary
>
/// Gets or sets TenorDate.
/// </
summary
>
public DateTime TenorDate { get; set; }
/// <
summary
>
/// Gets or sets Value.
/// </
summary
>
public double Value { get; set; }
}
0
Hi Dominic,
In your scenario you should better use a categorical series with a categorical axis to achieve the desired effect. Please check the code snippet below for further details.
Regards,
Rosko
Telerik
In your scenario you should better use a categorical series with a categorical axis to achieve the desired effect. Please check the code snippet below for further details.
<
telerik:RadCartesianChart
ZoomChanged
=
"RadCartesianChart_ZoomChanged"
>
<
telerik:RadCartesianChart.Behaviors
>
<
telerik:ChartPanAndZoomBehavior
ZoomMode
=
"Both"
PanMode
=
"Both"
/>
</
telerik:RadCartesianChart.Behaviors
>
<
telerik:LineSeries
ItemsSource
=
"{Binding DataPoints}"
>
<
telerik:LineSeries.VerticalAxis
>
<
telerik:LinearAxis
x:Name
=
"VerticalAxis"
Title
=
"€"
/>
</
telerik:LineSeries.VerticalAxis
>
<
telerik:LineSeries.HorizontalAxis
>
<
telerik:CategoricalAxis
x:Name
=
"HorizontalAxis"
/>
</
telerik:LineSeries.HorizontalAxis
>
<
telerik:LineSeries.CategoryBinding
>
<
telerik:PropertyNameDataPointBinding
PropertyName
=
"Tenor"
/>
</
telerik:LineSeries.CategoryBinding
>
<
telerik:LineSeries.ValueBinding
>
<
telerik:PropertyNameDataPointBinding
PropertyName
=
"Value"
/>
</
telerik:LineSeries.ValueBinding
>
</
telerik:LineSeries
>
</
telerik:RadCartesianChart
>
Regards,
Rosko
Telerik
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.