这节课,直接讲多轴共享的基础
====================www.ayjs.net 杨洋 wpfui.com ayui ay aaronyang=======请不要转载谢谢了。=========
继续之前的demo,添加第二个Y轴
之前只有1个y轴如下,
<s:SciChartSurface.YAxis>
<s:NumericAxis AxisTitle="Value" GrowBy="0.1,0.1" VisibleRange="-1.1, 1.1"/>
</s:SciChartSurface.YAxis>
修改如下
<s:SciChartSurface.YAxes>
<s:NumericAxis AxisTitle="Value" GrowBy="0.1, 0.1" VisibleRange="-1.1, 1.1"/>
<s:NumericAxis Id="Axis2"
AxisTitle="Secondary" GrowBy="0.1,0.1"
VisibleRange="-2.0, 2.0"
AxisAlignment="Left"/>
</s:SciChartSurface.YAxes>
这里有个ID了,Axis2,其他的都好理解
默认所有的线都在 默认轴上,如果需要到指定的轴,就需要声明 ID,然后线指定AxisId了
<s:XyScatterRenderableSeries x:Name="ScatterSeries" YAxisId="Axis2">
这样轴与呈现的图表就绑定了。效果如下:
接下来把注解 放到第二个y轴上:
默认AnnotationBase.XAxisId和AnnotationBase.YAxisId 匹配 AxisBase.DefaultAxisId.
修改后台代码:
sciChartSurface.Annotations.Add(new InfoAnnotation()
{
X1 = i,
Y1 = 0.0,
YAxisId = i % 200 == 0 ? AxisBase.DefaultAxisId : "Axis2"
});
效果就是, 当x轴的值是200的倍数,就是第一个y轴的注解,其他的都是Axis2这个名字的y轴参考 添加注解。
就是调整第二个y轴宽高,会发现点状的会跟着变化,200倍数的是 默认y轴的注解,说明此时绑定的y轴 是有效果的。
同样共享X轴,你也会了。
接下来讲解下表的垂直翻转
新建空白wpf项目,添加引用,和xmlns:s, 添加如下代码,2个在上方的y轴,一个在左侧的x轴。
<s:SciChartSurface Name="sciChartLeft" Grid.Column="0" Margin="0 0 10 0"
s:HorizontalGroupHelper.HorizontalChartGroup="MyHorizontalGroup">
<!-- Define the XAxis for this chart on the Left -->
<s:SciChartSurface.XAxis>
<s:NumericAxis AxisAlignment="Left" AxisTitle="X-Axis" DrawMajorBands="True"/>
</s:SciChartSurface.XAxis>
<!-- Define multiple YAxis on the top -->
<s:SciChartSurface.YAxes>
<s:NumericAxis AxisAlignment="Top" AxisTitle="Gray Line"
BorderBrush="DarkGray" BorderThickness="0,0,0,1"
Id="Top1" TickTextBrush="DarkGray"/>
<s:NumericAxis AxisAlignment="Top" AxisTitle="Brown Line"
BorderBrush="Brown" BorderThickness="0,0,0,1"
Id="Top2" TickTextBrush="Brown"/>
</s:SciChartSurface.YAxes>
</s:SciChartSurface>
当然你也可以
<s:SciChartSurface.XAxes>
<s:NumericAxis Id="X1" AxisAlignment="Left" AxisTitle="Left XAxis"
TickTextBrush="Orange"/>
<s:NumericAxis Id="X2" AxisAlignment="Bottom" AxisTitle="Bottom XAxis"
TickTextBrush="SteelBlue"/>
</s:SciChartSurface.XAxes>
<s:SciChartSurface.YAxes>
<s:NumericAxis Id="Y1" AxisAlignment="Top" AxisTitle="Top YAxis"
TickTextBrush="Orange"/>
<s:NumericAxis Id="Y2" AxisAlignment="Right" AxisTitle="Right YAxis"
TickTextBrush="SteelBlue"/>
</s:SciChartSurface.YAxes>
接下来我们再添加一个SciChartSurface,把他们动起来
把界面分成3行,第一行是以前的chart,第二个代码如下,第三个是滚动条
<s:SciChartSurface x:Name="sciChartSurface1" Grid.Row="1">
<s:SciChartSurface.XAxis>
<s:NumericAxis AxisTitle="Number of Samples (per Series)"/>
</s:SciChartSurface.XAxis>
<s:SciChartSurface.YAxes>
<s:NumericAxis AxisTitle="Value" GrowBy="0.1,0.1" VisibleRange="-1.1, 1.1"/>
<s:NumericAxis Id="Axis2" AxisTitle="Secondary" GrowBy="0.1,0.1"
VisibleRange="-2.0, 2.0" AxisAlignment="Left"/>
</s:SciChartSurface.YAxes>
</s:SciChartSurface>
后台代码增加mountainSeries.DataSeries = scatterData; ,我这里为了偷懒,所以数据用 点的数据了。
运行后,发现下面的不动
给第下面的图表的 x轴增加 可视范围的绑定,等于上面那个图的x轴,然后运行效果如下
<s:NumericAxis AxisTitle="Number of Samples (per Series)" VisibleRange="{Binding ElementName=sciChartSurface, Path=XAxis.VisibleRange, Mode=TwoWay}"/>
接下来增加鼠标 一致性
我们给下面图表增加 modifier
<s:SciChartSurface.ChartModifier>
<s:ModifierGroup>
<s:RubberBandXyZoomModifier ExecuteOn="MouseLeftButton"
RubberBandFill="#33FFFFFF" RubberBandStroke="#AAFFFFFF"
RubberBandStrokeDashArray="2 2"/>
<s:ZoomPanModifier ExecuteOn="MouseRightButton" ClipModeX="None" />
<s:YAxisDragModifier DragMode="Scale"/>
<s:XAxisDragModifier DragMode="Pan"/>
<s:MouseWheelZoomModifier/>
<s:ZoomExtentsModifier ExecuteOn="MouseDoubleClick" />
<s:RolloverModifier ExecuteOn="MouseMove" ShowTooltipOn="Always"/>
</s:ModifierGroup>
</s:SciChartSurface.ChartModifier>
运行后,还是没同步
接下来使用MouseManager.MouseEventGroup附加属性
找到第一个图表,找到ModifierGroup增加附加属性
s:MouseManager.MouseEventGroup="aymousegroup"
同样,找到需要同步操作的表,也增加该附加属性, 组名要一致就表示同组。
更复杂的可以看 https://www.scichart.com/documentation/v5.x/Synchronizing%20Multiple%20Charts.html
====================www.ayjs.net 杨洋 wpfui.com ayui ay aaronyang=======请不要转载谢谢了。=========
推荐您阅读更多有关于“SCICHARTS,”的文章