Hello,
I have a two questions:
Thanks!
Attachment: question_4a455243.zip
|
<syncfusion:SfChart.SecondaryAxis>
<syncfusion:NumericalAxis Minimum="0" Maximum="200" x:Name="yaxis" />
</syncfusion:SfChart.SecondaryAxis> |
|
public class NumericalAxisExt : NumericalAxis
{
protected override void GenerateVisibleLabels()
{
base.GenerateVisibleLabels();
List<double> TickPosition = new List<double>();
double position;
if (VisibleLabels != null)
{
VisibleLabels.Clear();
//Considered that we need 10 labels. so divided by 10.
var interval = (VisibleRange.End - VisibleRange.Start) / 10;
PropertyInfo property = typeof(ChartAxis).GetProperty("TickPositions", BindingFlags.Instance | BindingFlags.NonPublic);
var start = VisibleRange.Start;
position = VisibleRange.Start - (VisibleRange.Start % interval);
while (start <= VisibleRange.End)
{
VisibleLabels.Add(new ChartAxisLabel(start, start.ToString()));//Set label format if needed.
start += interval;
TickPosition.Add(position);
position += interval;
}
property?.SetValue(this, TickPosition);
}
}
} |
|
<syncfusion:SfChart x:Name="chart">
…
<syncfusion:SfChart.SecondaryAxis>
<local:NumericalAxisExt x:Name="yaxis"
</syncfusion:SfChart.SecondaryAxis>
<syncfusion:SfChart.Series>
<syncfusion:FastLineSeries ItemsSource="{Binding LineData1}" XBindingPath="XValue" YBindingPath="YValue"/>
<syncfusion:FastLineSeries ItemsSource="{Binding LineData2}"
XBindingPath="XValue" YBindingPath="YValue">
<syncfusion:FastLineSeries.YAxis>
<local:NumericalAxisExt x:Name="yaxis1" OpposedPosition="True"/>
</syncfusion:FastLineSeries.YAxis>
</syncfusion:FastLineSeries>
</syncfusion:SfChart.Series>
</syncfusion:SfChart> |
|
yaxis.Minimum = double.NaN;
yaxis.Maximum = double.NaN; |
Hello,
Thanks for your reply. I still have some issues:
Once I set Min/Max to NaN to reset the axis; it no longer automatically autoscale the axis.
Example: if I do not specify Min/Max in the graph then it updates the axis correctly (automatically); but once I set Min/Max to NaN and re-plot a curve, it no longer updates the axis.
|
private void Button_Click1(object sender, RoutedEventArgs e)
{
yaxis.Minimum = null;
yaxis.Maximum = null;
} |