转载

AY SCICHARTS 教程 4

这节课,直接讲多轴共享的基础

====================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,其他的都好理解

AY SCICHARTS 教程 4

默认所有的线都在 默认轴上,如果需要到指定的轴,就需要声明 ID,然后线指定AxisId了

<s:XyScatterRenderableSeries x:Name="ScatterSeries" YAxisId="Axis2">

AY SCICHARTS 教程 4

这样轴与呈现的图表就绑定了。效果如下:

AY SCICHARTS 教程 4

接下来把注解 放到第二个y轴上:

默认AnnotationBase.XAxisId和AnnotationBase.YAxisId 匹配 AxisBase.DefaultAxisId.

修改后台代码:

   sciChartSurface.Annotations.Add(new InfoAnnotation()
                        {
                            X1 = i,
                            Y1 = 0.0,
                            YAxisId = i % 200 == 0 ? AxisBase.DefaultAxisId : "Axis2"
                        });

AY SCICHARTS 教程 4

效果就是,  当x轴的值是200的倍数,就是第一个y轴的注解,其他的都是Axis2这个名字的y轴参考 添加注解。

就是调整第二个y轴宽高,会发现点状的会跟着变化,200倍数的是 默认y轴的注解,说明此时绑定的y轴 是有效果的。

AY SCICHARTS 教程 4

同样共享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>

AY SCICHARTS 教程 4

当然你也可以

         <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>

AY SCICHARTS 教程 4

接下来我们再添加一个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>

AY SCICHARTS 教程 4

后台代码增加mountainSeries.DataSeries = scatterData; ,我这里为了偷懒,所以数据用 点的数据了。

AY SCICHARTS 教程 4

运行后,发现下面的不动

AY SCICHARTS 教程 4

给第下面的图表的 x轴增加 可视范围的绑定,等于上面那个图的x轴,然后运行效果如下

    <s:NumericAxis AxisTitle="Number of Samples (per Series)" VisibleRange="{Binding ElementName=sciChartSurface, Path=XAxis.VisibleRange, Mode=TwoWay}"/>

AY SCICHARTS 教程 4

接下来增加鼠标 一致性

我们给下面图表增加 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"

AY SCICHARTS 教程 4

同样,找到需要同步操作的表,也增加该附加属性, 组名要一致就表示同组。

更复杂的可以看 https://www.scichart.com/documentation/v5.x/Synchronizing%20Multiple%20Charts.html

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

推荐您阅读更多有关于“SCICHARTS,”的文章

原文  http://www.ayjs.net/post/686.html
正文到此结束
Loading...