SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, and now iOS Charting & Android Chart Components

0 votes
0 answers
59 views

If you have multiple axes it appears that the order given isn’t honored on the screen.
If signals A, B, C, D are inserted into a list (inserting each item at the zeroth index) the resulting list is D,C,B,A. The order of the list is ignored and order observed is incorrectly: A,B,C,D. The order of the series/y-axes should reflect the order of the list (not the order in which they were inserted).

The following example has been added which shows this. (Clicking “Insert Signal at beginning” multiple times).

Currently we are using a work-around for which any list change, all signals are removed and re-added in the desired order to get the desired result. This is quite slow and causes flickering and flashing of elements on the screen.

0 votes
0 answers
95 views

I have a Chart with two Y-Axes, one on the left and one on the right for a SeriesvalueModifier.
i need to bind the VisibleRange to a Property in the ViewModel. Everything works fine, except for if i zoom via the MouseWheelZoomModifier.
It looks like the Chart gets “stretched” in Y direction. I guess the modifier zooms on both axes, so the property they are both bound to gets two updates, one for each axis.
When i bind the VisibleRange of Axis[A] to theVisibleRange of Axis[B] which is bound to the property also won’t work.
Do you have any idea how this could be fixed ?

what i want to achieve is this behavior:

https://www.scichart.com/questions/question/faq-how-to-have-two-yaxis-on-left-and-right-with-the-same-visiblerange-mirrored-yaxis

 Axis[A]
            <s:NumericAxis
                x:Name="NumericAxis_Mass"
                x:Key="NumericAxis_Mass"
                Id="NumericAxis_Mass"
                AxisTitle="{ext:Localization Chart_Axis_PartialPressure}"
                GrowBy="0.1,0.1"
                VisibleRange="{Binding YVisibleRange,
                                Mode=TwoWay,
                                UpdateSourceTrigger=PropertyChanged,
                                NotifyOnSourceUpdated=True,
                                NotifyOnTargetUpdated=True}" 
                AutoRange="{Binding AnalysesAutoRange_y,
                           Mode=TwoWay,
                           UpdateSourceTrigger=PropertyChanged,
                           NotifyOnSourceUpdated=True,
                           NotifyOnTargetUpdated=True}"
                AxisAlignment="Left"
                Style="{StaticResource Chart.NumericAxis.Style}" />

Axis[B]
                <s:NumericAxis
                x:Key="NumericAxis_Mass_Empty"
                x:Name="NumericAxis_Mass_Empty"
                GrowBy="0.1,0.1"
                TextFormatting="0.00E+00"
                VisibleRange="{Binding YVisibleRange,
                                Mode=TwoWay,
                                UpdateSourceTrigger=PropertyChanged,
                                NotifyOnSourceUpdated=True,
                                NotifyOnTargetUpdated=True}"            
                AutoRange="{Binding AnalysesAutoRange_y,
                           Mode=TwoWay,
                           UpdateSourceTrigger=PropertyChanged,
                           NotifyOnSourceUpdated=True,
                           NotifyOnTargetUpdated=True}"
                AxisAlignment="Right"
                Style="{StaticResource Chart.NumericAxis.Style}"
                DrawLabels="False"
                DrawMajorBands="False"
                DrawMajorGridLines="False"
                DrawMajorTicks="False"
                DrawMinorGridLines="False"
                DrawMinorTicks="False"
                Margin="35,0,0,0"
                Width="auto" />
  • Dirk Heyne asked 3 months ago
  • last active 3 months ago
1 vote
166 views

I have multiple series on a chart surface, each with their own y-axis. I do not want to display all y-axes as this would take up half the chart surface.

Is there a way to make the matching y-axis only visible when the mouse cursor hovers over a series (hit-test)? How would I go about that?

Thanks
Matt

  • bbmat asked 4 months ago
  • last active 3 months ago
0 votes
342 views

Hi,
I’m prototyping an application with two visible data series and an individual Y-axis for each data series. See the enclosed image.
The Stroke color of each data series, the TickTextBrush and the BorderBrush of the y-axis are updated by normal data Binding through the MVVM pattern.
The problem is that I am not able to data bind the Stroke property of the MajorTickLineStyle for the individual Y-axis.
Do You know if there is a workaround for this through data binding?
The project is enclosed.

  • andreasrep asked 8 months ago
  • last active 8 months ago
0 votes
0 answers
480 views

Is it possible to color fill between 2 data series with different Y scales?

1 vote
3k views

I’m implementing a toggle between joined and separated axes for my series and I’ve encountered a problem with my SeriesValueModifiers. The modifier seems to be connected to “DefaultAxisId”, when I have my series linked to an axis with that ID the values show up as expected. However, when I separate my series to individual axes the modifiers no longer appears.

Is it possible to collect and show all my SeriesValueModifiers on one axis (keeping the others invisible)? Or perhaps show modifiers on all the axes and stack them on top of each other, keeping labels invisible.

This is the code I’ve got right now:

Adding an axis in my constructor, this one will be used when all the series are using the same axis.

ChartYAxes.Add(new NumericAxis()
{
    Visibility = Visibility.Visible,
    AutoRange = AutoRange.Always,
});

Then I add a new axis for each series.

ChartYAxes.Add(new NumericAxis
{
    Id = tagName,
    Visibility = Visibility.Collapsed,
    AutoRange = AutoRange.Always
});

var renderableSeries = new FastLineRenderableSeries
{
    YAxisId = IsIsolatedCharts ? tagName : "DefaultAxisId"
};

Toggling between these works great, but I need the value labels for this to be useful in any way.

EDIT: In case it’s relevant, here’s the code for toggling.

private void SplitAxes()
{
    var count = Series.Count;
    for (int i = 0; i < count; i++)
    {
        var series = Series[i];
        var name = series.DataSeries.SeriesName;
        //The axes are also added to a dictionary for easy access.
        _axisDictionary[name].GrowBy = new DoubleRange(count - i - 1, i);
        series.RenderSeries.YAxisId = name;
    }
}

private void JoinAxes()
{
    foreach (var series in Series)
        series.RenderSeries.YAxisId = "DefaultAxisId";
}
0 votes
3k views

Someone recently asked the question on priority support tickets

Q: How do I have two YAxis on the left and right of the chart but with
the same VisibleRange?

e.g. how to mirror the YAxis on both sides of the chart

We are replicating the answer below for benefit of our userbase:

  • Andrew asked 2 years ago
  • last active 2 years ago
0 votes
0 answers
3k views

I want to implement a requirement to stack several different y-axes on top of a common x-axis that shows time and that all y-axes share. Like the examples “Vertically Stacked Axes”, “Multi-Pane Stock Charts” and “16-channel EEG”.
The one the is the most similar to what I need is the “Vertically stacked axes” but the lines overlap and are not truly separated (possibly implementation detail).
Now two of the examples use a SciChartGroup and several SciChartSurfaces and one uses one SciChartSurface and changes the Y-Axes.
It is a technical Chart and not used for Stocks. Like several temperature (or even mixing with a pressure) lines but in separate charts like “Vertically stacked Axes” and synced to the timeline axis.
But the y-Axes are configurable with different styles and some could be automatically adjusting the range and some not. They will not share the same visual and behavioral styles and must not overlap.

What would be the best way to go or recommended? SciChartGroup or one SciChartSurface. Would it be even possible to implement the behavior on one surface? Any alternatives?

Update
What makes me ask the question?
I had some code in xaml and could style and databind it but the more this gets configurable and unpredictable at design time I end up creating everything in code. I think especially when using multiple SciChartSurfaces. This deprives me of the possibilities of XAML I believe. I still want to have the possibility to style and bind it without coding tons of lines.

  • Uwe Hafner asked 2 years ago
  • last active 2 years ago
0 votes
3k views

I am using the Vertically Stacked Axis example and I would like to set the (initial?) maximum of all the y-axis to the maximum of all the y-axis and the minimum to the minimum of all y-axis. In other words I want that everything use the same YAxis scales. Is there a way to to do this easily? or do I just have to set y min and max in the code for all charts/channels?

  • Michel Moe asked 3 years ago
  • last active 3 years ago
1 vote
5k views

Hello everybody,

my project is very similar to “Quad Left-Right Y-Axes”-Example. If you have a look at this, the Gridlines only math the Left Axis 1. All other Axes have their Major/Minor Ticks randomly spread. It’s not easy to see fast what value has another series then the first because the Gridlines simply dont match.

Is there a way to have all the Major/Minor Ticks Aligned to the Left Axis 1 ones? (i attached a picture which it should look like) But the Series don’t have the same Range. So the Major steps should only match in Grid, not in value (except 0 should be on one line).

I hope you understand my problem.

thx in advance for help

PS: i use full dynamic MVVM approach, the only code in View is ->

<s:SciChartSurface
Style="{StaticResource SciChartSurfaceStyle}"
GridLinesPanelStyle="{StaticResource GridLinesPanelStyle}"
ChartModifier="{Binding chartModifier}"
SeriesSource="{Binding seriesSource}"
YAxes="{Binding yAxes}"
XAxes="{Binding xAxes}"
Annotations="{Binding annotations}"
>
</s:SciChartSurface>

1 vote
5k views

Hi, I am displaying no of BoxAnnotation , I want to link some of the BoxAnnotation randomly .I want to perform the operaton on annotation with relation.When it move BoxAnnotation,related link should also move accordingly.I am also performing Y axis with yaxisID so Annotation also move to Y direction with Y axis.
Please help me out.
Thanks

Showing 11 results
This template supports the sidebar's widgets. Add one or use Full Width layout.