Hi All,
Although this issue isn’t currently stopping me doing what I need to do I’m just a tad worried that I’m doing something more fundamental wrong which probably will. Anyway the question…
I have a chart with a DateTime axis to which I add two series (red and blue points) from the code behind as per the code snippet. When I run it both series are displayed correctly but the rollover bar only snaps to the second series points. If a run the mouse over a point from the first series it seems to be acknowledged as the fill colour changes but the rollover doesn’t snap to it.
The method is invoked by a button press on a parent control
public void AddTestDataSeries(double seedvalue)
{
DateTime StartPoint = DateTime.Now;
DateTime[] Axis = new DateTime[] { StartPoint.AddMinutes(1), StartPoint.AddMinutes(2), StartPoint.AddMinutes(3), StartPoint.AddMinutes(4), StartPoint.AddMinutes(5), StartPoint.AddMinutes(6), StartPoint.AddMinutes(7), StartPoint.AddMinutes(8) };
double[] Series1 = new double[]{1,2,3,5,7,12,19,37};
double[] Series2 = new double[]{10,20,30,40,50,60,70,80};
XyDataSeries<DateTime, double> dataSeries1 = new XyDataSeries<DateTime, double> { SeriesName = "Series1" };
for (int x = 0; x < Series1.Count(); x++)
{
dataSeries1.Append(Axis[x], Series1[x]);
}
XyScatterRenderableSeries scatterRenderSeries1 = new XyScatterRenderableSeries();
scatterRenderSeries1.DataSeries = dataSeries1;
scatterRenderSeries1.PointMarker = new EllipsePointMarker()
{
Fill = Colors.Red,
Stroke = Colors.White,
StrokeThickness = 2,
Width = 10,
Height = 10,
};
this.UserControlSciChartSurface.RenderableSeries.Add(scatterRenderSeries1);
XyDataSeries<DateTime, double> dataSeries2 = new XyDataSeries<DateTime, double> { SeriesName = "Series2" };
for (int x = 0; x < Series2.Count(); x++)
{
dataSeries2.Append(Axis[x].AddSeconds(30), Series2[x]);
}
XyScatterRenderableSeries scatterRenderSeries2 = new XyScatterRenderableSeries();
scatterRenderSeries2.DataSeries = dataSeries2;
scatterRenderSeries2.PointMarker = new EllipsePointMarker()
{
Fill = Colors.Blue,
Stroke = Colors.White,
StrokeThickness = 2,
Width = 10,
Height = 10,
};
this.UserControlSciChartSurface.RenderableSeries.Add(scatterRenderSeries2);
}
And the XAML is simply
<UserControl
x:Class="SummaryDrillDownCharting.SummaryDataChartUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:s="http://schemas.abtsoftware.co.uk/scichart"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<s:SciChartSurface x:Name="UserControlSciChartSurface" s:ThemeManager.Theme="Chrome">
<s:SciChartSurface.XAxis>
<s:DateTimeAxis GrowBy="0.1, 0.1"/>
</s:SciChartSurface.XAxis>
<s:SciChartSurface.YAxis>
<s:NumericAxis GrowBy="0.1, 0.1" DrawMajorBands="True"/>
</s:SciChartSurface.YAxis>
<s:SciChartSurface.ChartModifier>
<s:ModifierGroup>
<s:RolloverModifier IsEnabled="True"></s:RolloverModifier>
</s:ModifierGroup>
</s:SciChartSurface.ChartModifier>
</s:SciChartSurface>
</Grid>
ADDITIONAL INFO: I Just ran the same code changing the scatter to a FastLineRenderableSeries – same problem exists.
- You must login to post comments
Hi Stuart,
Thank you for your inquiry. Unfortunately, RolloverModifier expects all series to have the same X values, so it cannot handle your use-case properly.
I would suggest creating a custom rollover to you, which would have the desired behavior. We provide a bunch of articles about custom modifiers, please refer to this one about custom Rollover where you can learn more about how to implement it.
Hope this helps!
Best regards,
Yuriy
- Guest answered 10 years ago
-
Hi Yuriy - Not a problem, now that I know what it does I can work with that in my series data. I'm actually using a vertical line annotation to work in a similar way (i.e. snap to points) but that leaves itself as a marker on the chart. I've overridden the VerticalLineAnnotation class MoveAnnotationTo() function as per another example I found on here but it's currently restricted to finding the nearest point on the selected series. you wouldn't be able to suggest an efficient way of finding the next nearest point on any visible series would you?
- You must login to post comments
Please login first to submit.