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

Welcome to the SciChart Community Forums!

Please use the forums below to ask questions about SciChart. Take a moment to read our Question asking guidelines on how to ask a good question and our support policy. We also have a tag=SciChart on Stackoverflow.com where you can earn rep for your questions!

Please note: SciChart team will only answer questions from customers with active support subscriptions. Expired support questions will be ignored. If your support status shows incorrectly, contact us and we will be glad to help.

0 votes
6 views

Hi,

A problem appears changing Axis Alignment if Annotations exists, look this simple example:

NumericAxis x, y;
    SciChartSurface c;
    public Sci()
    {
        InitializeComponent();

        c = new SciChartSurface();


        c.XAxes.Add(x = new NumericAxis() { Id = "x" });
        c.YAxes.Add(y = new NumericAxis() { Id = "y" });

        //some limits
        y.VisibleRange = new DoubleRange(-5, 5);
        y.VisibleRangeLimitMode = RangeClipMode.MinMax;

        //a series
        var s = new FastLineRenderableSeries() { XAxisId="x", YAxisId="y"};
        c.RenderableSeries.Add(s);

        //some datapoints
        var ds = new XyDataSeries<double>();
        ds.Append(1, 1);
        ds.Append(2, 2);
        ds.Append(3, 1);
        ds.Append(4, 2);
        s.DataSeries = ds;

        //Add an annotation
        var a = new HorizontalLineAnnotation() { Y1 = 1.5d, YAxisId = "y", Stroke = Brushes.Red, StrokeThickness = 1 };
        c.Annotations.Add(a);

        //appending the chart on a grid
        mG.Children.Add(c);


    }

If you run it all works good. Now, add a button that flip chart, with this code:

private void Button_Click(object sender, RoutedEventArgs e)
    {
        c.Annotations.Clear();

        if (x.AxisAlignment == AxisAlignment.Left)
        {
            x.AxisAlignment = AxisAlignment.Bottom;
            y.AxisAlignment = AxisAlignment.Left;

            var a = new HorizontalLineAnnotation() { Y1 = 1.5d, YAxisId = "y", Stroke = Brushes.Red, StrokeThickness = 1 };
            c.Annotations.Add(a);
        }
        else
        {
            x.AxisAlignment = AxisAlignment.Left;
            y.AxisAlignment = AxisAlignment.Bottom;


            var a = new VerticalLineAnnotation() { Y1 = 1.5d, YAxisId = "y", Stroke = Brushes.Red, StrokeThickness = 1 };
            c.Annotations.Add(a);
        }

    }

Now nothing works good…
Can you solve it?

Thanks.
marc.

0 votes
0 answers
11 views

I am trying to develop a realtime moving chart which reads data and plots. It has four channels. Both X and Y axis intervals are dynamic. ie, required to change the axis interval runtime so that graph plots accordingly.
I implemetd it. Y axis is ok. As it is an moving chart I need to reset the visible range so as to move the chart along X axis . Even if I change the interval of X axis, when I reset the visible it changes to old value.

Following is the code:

On Load:
double SclX=10; // no of intervals in x axis(major ticks)

sciChartSurface.XAxis.AutoTicks = false;
sciChartSurface.XAxis.AutoRange = AutoRange.Never;
sciChartSurface.XAxis.MajorDelta = 100; //Convert.ToDouble(trackFactorX[XCur, 1])
sciChartSurface.XAxis.MinorDelta = 20; //((Convert.ToDouble(trackFactorX[XCur, 1]) /SclX)*2)
XCurMin = 100; // Convert.ToDouble(trackFactorX[XCur, 1]);
XCurMax = 1000; //SclX * Convert.ToDouble(trackFactorX[XCur, 1]);
sciChartSurface.XAxis.VisibleRange = new DoubleRange(XCurMin, XCurMax );

Resetting visible range to implement moving chart

timer.Interval = TimeSpan.FromMilliseconds(1);
timer.Tick += (s, e) =>
{
if (i > XCurMax)
{
XCurMin = XCurMin + Convert.ToDouble(trackFactorX[XCur, 1]);
XCurMax = XCurMin + (SclX * Convert.ToDouble(trackFactorX[XCur, 1]));
sciChartSurface.XAxis.VisibleRange = new DoubleRange(XCurMin, XCurMax);
}
};

Changing interval from 100 to 200 (button click)

sciChartSurface.XAxis.AutoTicks = false;
sciChartSurface.XAxis.MajorDelta = 200; //Convert.ToDouble(trackFactorX[XCur, 1]);
sciChartSurface.XAxis.MinorDelta = 40; // ((Convert.ToDouble(trackFactorX[XCur, 1]) / SclX) * 2);
XCurMin = XCurMin;
XCurMax = XCurMin + (SclX * Convert.ToDouble(trackFactorX[XCur, 1]));

sciChartSurface.XAxis.VisibleRange = new DoubleRange(XCurMin, XCurMax);

Please check any thing else is required.

0 votes
0 answers
20 views

Tooltips from my TooltipModifier were being clipped at the SciChartSurface’s boundaries when they were long, which I didn’t like. I poked around a bit and discovered SciChartSurface.ClipModifierSurface. After setting this to false, the tooltips were allowed to spill over the boundaries as desired. Yay! However, certain elements including (but perhaps not limited to) the GridLinesPanel’s border lines and gridlines from adjacent plots end up rendering on top of the tooltip (see screenshot; it’s showing two surfaces stacked vertically, with a tooltip from the top one spilling over onto the one below it). Is there anything I can do to prevent this? Things that didn’t work were using a custom TooltipContainerStyle with the new container’s opacity set to 1.0 and its Panel.ZIndex to 100.

0 votes
34 views

We are considering using SciChart (WPF), but only if its performance is ‘reasonable’ across Remote Desktop / or via Citrix Server. Have you addressed the known problems of using WPF applications across RDP / Citrix? If so, could you provide some stats as to the performance across RDP?

The reason we are asking is that our current software in which we are using our own high speed rendering is doing fine with a lot of data on the local machine, but is not doing so well across RDP. This is not a huge surprise given the known issues of WPF and RDP (for example see https://stackoverflow.com/a/1005739/246758). We may need to deal with this slowness as more of our customers are using Citrix-servers to run our software.

Any feedback on performance of SciChart across RDP / or using Citrix would be much appreciated!

0 votes
0 answers
36 views

Hey,

I have followed the 50 EEG example in creating a group of graphs which is populated using a listbox and a data template. The graphs are created and populated correctly. The issue arises when creating graph modifiers (eg Rollover, Zoom). Is there an issue with selecting these graphs or adding modifiers.

Thank You

0 votes
43 views

Hi,

I am trying to show a 2D Scatter series having 4 points that form a square. Like (0;0), (1;0), (1;1) and (0;1). Is there a way to tell the chart to keep this thing square when I resize the surface, use zoom extent, rubber zoom etc? I basically need X/Y ratio to be fixed.

Thanks

0 votes
68 views

I’m using a rollover tooltip to display series info.
Tooltips are shown in the same order data points are hit, so it changes while i would like to fix it so the user always see the series in the same position throughout the chart.

Thank you

0 votes
94 views

When showing a new view, there are some annotations (from an AnnotationCollection) on the panel, but the RenderableSeries is empty. Is it possible to use the scrollbar to zoom in details of annotations?

  • yi zheng asked 2 weeks ago
  • last active 2 weeks ago
1 vote
86 views

Hi all. I would like to add tooltips to my chart, but have them behave a bit differently than they do by default. Specifically, they should

  1. Appear on left-click rather than on hover
  2. Stay open until the user clicks outside them (or the mouse leaves the chart area)
  3. Not appear if another ToolTip is already open (mostly follows from #2)

The existing ToolTipModifier can give me #1, but not #2 or #3, as far as I can tell.

So what’s the best way for me to implement this behavior? Can I get to it by subclassing the existing ToolTipModifier, or do I need to start from scratch? And if deriving is the answer, what would I need to override?

My motivation is that I would like to place buttons/hyperlinks in the tooltip for performing actions related to the clicked datapoint, so if there are completely different ways to achieve this that don’t involve tooltips at all, I’m open to suggestions.

0 votes
146 views

The Annotation API mentions adding borders and border colors to this annotation; however, I can find them. Do I need to create an annotation type of my own by extending from the TextAnnotationViewModel?

0 votes
147 views

Is it possible to scale annotations? I’ve included a couple screenshots. The first is our old, ugly legacy chart. The next few are SciChart. One challenge we have is to place labels on a chart at different locations relative to specific locations on the series. They need to be annotations that the user DOES NOT have permission to edit before he saves the chart to a PNG.

The purple and red lines on my chart look exceptional and “scale” correctly because their XY values scale as the chart is resized matching the series as it scales.

The red, purple and orange annotations however do not. I understand why it’s happening as I’m placing the annotations at exact locations via XY. So as I magnify or resize the window the XY doesn’t change; however, the original location of my annotation “appears to the user” to move. I understand that it’s not really moving as it is still located at the same exact XY where it was placed.

Is there a simpler way to scale it to a relative position during a window resize? Or am I stuck having to redraw the annotations as this happens?

1 vote
0 answers
181 views

I am developing a WPF application with multiple series on a single surface.
I would like to have a legend displaying for each series a value based on user’s choice (e.g. first point, last point, average, min, max and so on).

How can i achieve this?

Thank you

1 vote
201 views

I saw in the examples where a “gain” and “loss” affected the color of a series. This took a bit of time; however, I figured out was you were doing and was able to implement it.

Please see the attached image. There are 2 sections in my series that are “Green” whereas the remainder of the series is gray. I’d like to be able to do 2 things ONLY to the green area.

  • Show point markers ONLY on the points in the green area.
  • Increase the stroke thickness.
0 votes
221 views

We have a different legacy chart in our older applications. In this chart zooming happens when we pull down and to the right. We remove the zoom (zoom out to initial size) when we pull up to the left. Of course, this is all with the left mouse button pressed.

SciChart zooms, in my opinion, much better and more specific. However I’m sure my company would prefer the mouse down, pull up to the left to reset the zoom much like our legacy product.

Is this possible? Can I override the zoom effect?

0 votes
233 views

Hi,

I was checking the feasibility, where user can add curve line, same as if he is adding a line via line annotation, but I could not find a way to achieve this.

So wanted to check, if it is possible to have a curve line annotation or something ? I am not quite sure if we can achieve this via custom annotation or custom chart modifier.

Any help would be appreciated.

Thanks.

0 votes
0 answers
292 views

Microsoft has announced that it plans to retire the XPS file format and remove the XPS viewer in future Windows installations. I presume this mean the “Export to XPS” feature will not be useful for much longer. Given this news, does SciChart have plans to support a different vector format like SVG instead?

0 votes
333 views

I can’t establish a runtime license in my application because the method doesn’t show up in the intellisense.

SciChartSurface.SetRuntimeLicenseKey.

In fact, no methods exist for this class (I’m assuming this is a static class and method). I’m getting this class via…

SciChart.Charting.Visuals.SciChartSurface.

I’m guessing that this is not where this class is located, but I can’t figure out where it is.

0 votes
568 views

We are investigating the SciChart 3D trial in order to upgrade an application already using SciChart 2D. In the process, we found that SciChart 3D downloads and depends on a DLL at:

%LocalAppData%\SciChart\Dependencies\v5.2.0\x86\SciChart3DNative.dll

Our production environment doesn’t have internet access nor can users load DLLs downloaded into the users folder.

Is there a way to package SciChart3DNative.dll with SciChart 3D for offline usage? We have already tried copying the DLL and every permutation of the above folder path next to the compiled application, but this didn’t affect SciChart downloading and depending on the %LocalAppData% DLL.

0 votes
0 answers
590 views

The exception happens on the GC finalizer thread and has the following call stack:

SharpDX.dll!SharpDX.ComObject.SharpDX.IUnknown.Release() Line 256 C#
SharpDX.dll!SharpDX.ComObject.Dispose(bool disposing) Line 286 C#
SharpDX.dll!SharpDX.DisposeBase.CheckAndDispose(bool disposing =
false) Line 59 C# SharpDX.dll!SharpDX.DisposeBase.~DisposeBase() Line
28 C# [Native to Managed Transition]
kernel32.dll!00007ffc5c1b1fe4() Unknown
ntdll.dll!00007ffc5d1fcb31() Unknown

I have a single SciChartSurface that is plotting a single FastImpulseRenderableSeries, which is bound using MVVM (SeriesBinding/ImpulseRenderableSeriesViewModel). Only debug builds appear to be affected.

Do I need to be disposing or otherwise cleaning up any of the SciChart objects I create?

0 votes
548 views

I’m evaluating the WPF chart and have an issue when using series binding. In our first test app we added a series directly via code and that worked.

Now I’m using binding and have an issue with the series and gridlines not displaying.

I’m fairly confident it is binding because I can move the CursorModifier around on the chart and see appropriate tooltips which match the data I would expect to see given the XY axes.

Also, before binding a series the chart shows the gridlines correctly. Only after I bind a series does the lines disappear and the series to not draw.

I’ve attached the source, the XAML styles I’m using and images between a grid that looks correct (no series bound) and one that is invisible (IS bound).

Any ideas?

UPDATE: in this application even normal series won’t work. I’m using the same method I used in my original test application of adding to a series using the var series = new XyDataSeries<double, decimal>(); and appending points to a series I’ve predefined on the chart in the XAML file.

0 votes
593 views

Hi,
I have a 2D graph with single X-Axis and single Y-Axis. I want to have the Y-Axis always zoom to fit the data, but also want to force a minimum span, so that tiny fluxtuations in the trace dont get amplified when the trace is running at a steady value. Currently I’m using a derived ViewportManager like this:

class MinYSpanViewportManager : DefaultViewportManager
{
    public double MinSpan { get; set; } = 0.0;

    public override void AttachSciChartSurface(ISciChartSurface scs)
    {
        base.AttachSciChartSurface(scs);
        ParentSurface = scs;
    }

    public ISciChartSurface ParentSurface { get; private set; }


    protected override IRange OnCalculateNewYRange(IAxis yAxis, RenderPassInfo renderPassInfo)
    {
        if (ParentSurface.ZoomState == ZoomStates.UserZooming)
        {
            return yAxis.VisibleRange.AsDoubleRange();
        }

        var range = yAxis.GetMaximumRange().AsDoubleRange();

        var currentSpan = range.Diff;

        if (currentSpan >= MinSpan)
        {
            return yAxis.GetMaximumRange().AsDoubleRange();
        }

        double delta = MinSpan - currentSpan;

        return new DoubleRange(range.Min - delta / 2, range.Max + delta / 2);
    }
}

Is this the best way to implement this feature? I’ve seen a property on the NumericAxis called MinimalZoomConstrain, which sounds like it does what I want. But when I tried setting it to a value, the YAxis no longer automatically zoomed to fit the data, even if AutoRange=”Always” was set.

Best regards,
Jonathan

0 votes
588 views

I want to print the odd numbers 1,3,5,7,9,11 into the y axis of my chart using xaml in wpf.

0 votes
630 views

I managed to be able to render the EllipsePointMarkers, but here is the thing: It only works when I declare the PointMarker in my view model inside the constructor of the XyScatterRenderableSeriesViewModel. The Style with the PointerMarkerTemplate is NOT APPLIED for some reason. Could this be a bug? Please note that in the following code in the view model I specify the color to be “Red” (ARGB(255, 255, 0, 0) but in xaml the template specifies yellow for the fill and stroke.

I absolutely need the PointMarker Template to work because I want to be able to change the color and thickness of the Scatter points during runtime via UI (function in my custom legend).

The following are code snippets from my view model and the corresponding xaml:

ChartSeries.Add(new XyScatterRenderableSeriesViewModel()
                {
                    DataSeries = dataSeries,
                    //Stroke = color,
                    //StrokeThickness = 10,
                    IsVisible = isVisible,
                    AntiAliasing = useAntiAliasing,
                    IsSelected = isSelected,
                    XAxisId = "DateTimeAxis",
                    YAxisId = yAxisId,
                    PointMarker = new EllipsePointMarker()
                    {
                        Fill = Color.FromArgb(255, 255, 0, 0),
                        Stroke = Color.FromArgb(255, 255, 0, 0),
                        StrokeThickness = 5
                    }

                });


<UserControl.Resources>

    <Style TargetType="{x:Type s:XyScatterRenderableSeries}">
        <Setter Property="PointMarkerTemplate">
            <Setter.Value>
                <ControlTemplate>
                    <s:EllipsePointMarker Fill="Yellow" Stroke="Yellow" StrokeThickness="15"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <s:EffectConverter x:Key="EffectConverter"/>

    <DropShadowEffect x:Key="LegendDropShadow" BlurRadius="10" Direction="-45" ShadowDepth="5" Color="Black"/>

    <SolidColorBrush x:Key="LegendTextBrush"  Color="#5F5F5F"/>

    <resources:VisibilityToBooleanConverter x:Key="VisibilityToBooleanConverter"/>

    <resources:CustomCategoryDateTimeAxisLabelProvider x:Key="LabelProvider"/>

</UserControl.Resources>
  • bbmat asked 3 weeks ago
  • last active 3 weeks ago
0 votes
587 views

Hi,

I’m trialing SciChart as a replacement to IOComp’s plot pack, which I’m trying to migrate away from since our move to WPF 2 years ago. I have a few questions, heres the first:

Does the PinchZoomModifier work currently? I suspect that it doesn’t, as I’ve followed this page from the documentation:
https://www.scichart.com/documentation/v5.x/webframe.html#PinchZoomModifier.html to no avail. I tested the program on two different PC’s with two different types of touch screen.

If it isn’t fully implemented yet, do you have an ETA on its arrival? If it is fully implemented, please can you provide a working example, I’ve looked through the samples program, but didn’t find any touch based examples.

Best regards,
Jonathan

0 votes
627 views

Hi

I am new to Scichart. I started using it after trying another control to plot a realtime, high speed moving graph. Graph contains 4 channels or series. Each channel will have a common interval at x axis but different intervals at y axis. WPF application receives data at a serial port at a speed of 100 points every 24 milliseconds. I need to plot this realtime, moving. I also need to change intervals of x and y axis when running graph so the graph continues to plot at new interval.

Further more I also need to read values from x or y axis ie, Xa, Xb or Ya,Yb by moving cursor.

All these features where implemented using the previous control. but speed of plotting was low when comparing with speed of data received so buffering occurs.

Can all these be implemented using Scichart? If so can suggest some example so that I can refer it. What urgently required is changing divisions along x and y axis.
I need the appearance to be as in the image attached.

Thanks in advance!

  • Sophiya K asked 3 weeks ago
  • last active 3 weeks ago
0 votes
540 views

I just purchased a license for WPF 2D+3D (Pro) and tried to use a scichartsurface without DirectX and it works fine but as soon as I include

s3D:DirectXHelper.TryApplyDirectXRenderer="True"
                s3D:DirectXHelper.FallbackType="{x:Type s:HighSpeedRenderSurface}"

I get the following runtime error:

System.Windows.Markup.XamlParseException: ‘Could not load file or assembly ‘SciChart.Drawing.DirectX, PublicKeyToken=b55dd9efe817e823′ or one of its dependencies. The system cannot find the file specified.’

What am I doing wrong? I installed the newest Scichart version on the Nuget channel. In Nuget I can see that “SciChart”, “SciChart3D”, “SciChart.DirectX” and a bunch of SharpDX libraries were installed.

  • bbmat asked 3 weeks ago
  • last active 3 weeks ago
0 votes
578 views

I want to handle mouse click event on ChartSurface. I need to detect when clicked on chart whether series was clicked or chartsurface was clicked. I handled previewmouseleftbutton on chartsurface but it is not giving clicked element information. Can you pls help?

  • KC asked 4 weeks ago
  • last active 4 weeks ago
0 votes
0 answers
579 views

Hi,

I am playing with the heatmap chart and stumbled upon an IndexOutOfRange exception when updating the chart.

I initialise my chart where Height=2 and Width=3:

var data = new double[Height, Width]; // 2 rows, 3 columns
double d = 0.0;
for (int y = 0; y < Height; y++)
{
    for (int x = 0; x < Width; x++)
    {
        data[y, x] = d++;
    }
}

heatmapSeries.DataSeries = new UniformHeatmapDataSeries<int, int, double>(data, 0, 1, 0, 1);

Calling the following line returns 5 which is equivalent to getting the value with data[1,2] (all good so far):

dataseries.GetZValue(yIndex: 1, xIndex: 2);

Now let’s update that value to, say 7.1, with:

dataseries.UpdateZValue(xIndex: 2, yIndex: 1, zValue: 7.1);

Executing the above line throws an IndexOutOfRangeException. Looking at the source code, the UpdateZValue() method does:

_zValues[xIndex, yIndex] = zValue;
// ...

No wonder why the exception gets thrown… I reckon it should be _zValues[yIndex, xIndex] = zValue; (xIndex and yIndex swapped).

0 votes
636 views

I’m trying to figure out the best approach to this. Basically I have line series which is defining a limit, may only have points at X=0 & max rather than individual points. My 2nd value I want to fill with one color when it’s below that limit and if it goes above the limit then only the portion above that limit should be colored differently (blue in example).

Anybody able to set me on the right track for this? I can think of ways to do it if I break the 2nd value up and display as two series (would basically be a stacked mountain then. and just limit one to not go above the limit value. Is there a way to avoid breaking this up to separate series and just style it?

Chart example

  • meaka asked 4 weeks ago
  • last active 4 weeks ago
0 votes
549 views

What I need to achieve is to allow the user to change the thickness of the axis line for example, the font size of the axis legend, the background color, the grid lines visibility, etc.

My first idea would be to create a ViewModel with all these properties and bind them to the plot, so that when the user changes them via some other control like a slider or a textbox, they get updated in the plot.
Is that the right way to do it ?

0 votes
614 views

SciChart WPF control

I’m trying to configure the axis range using VisibleRange. Is it possible that in Visible range, I set only min value and then max value is set automatically by tracking the maximum value series has? Same way, if I set max value of VisibleRange then min value is set automatically by tracking min value of the series? How to achieve the VisibleRange setting by just setting one of Min/Max value?

  • KC asked 4 weeks ago
  • last active 4 weeks ago
0 votes
615 views

Hello,
I would like to ZoomOut immedeatly after new data is rendered.
I would like to have flexibility in Zooming Out, therefore I cannot use AutoRange.Always.
I have implemented ZoomOut in SciChartSurface.Rendered, but that seems to be too early, as it doesnt react on the new data, instead zooms out based on the old data.
I have to wait 100 ms, then it works and it zooms out based on the new data.
Is there an event even after SciChartSurface.Rendered that is better suited to call the ZoomOut function?

I have used the technique described in the answer below. However, I am awaiting the dataChange and then call ZoomOut. It still doesnt work.

In my Code behind:

            await viewModel.DisplayData();
            viewModel.ZoomOut();

DisplayData adds LineRenderableSeriesViewModel with DataSeries to the RenderableSeries Observable Collection.

And in my ViewModel:

    internal void ZoomOut()
    {
        if (RenderableSeries.Count() > 0)
        {
            var parentSurface = ((LineRenderableSeriesViewModel)RenderableSeries.ElementAt(0)).DataSeries.ParentSurface;
            var viewportManager = parentSurface.ViewportManager;
            viewportManager.BeginInvoke(() =>
                {
                    viewportManager.AnimateZoomExtents(TimeSpan.FromMilliseconds(250));
                });

        }
    }

This way it works:

            await viewModel.DisplayData();
            await Task.Run(()=>System.Threading.Thread.Sleep(TimeSpan.FromMilliseconds(500)));
            viewModel.ZoomOut();

But that can’t be the solution – I need an event that fires when all the data is known to sciChartSurface.

Thanks,
Holger

0 votes
610 views

I just started trying SciChart recently. I would like to know whether it is possible to add markers as in the picture. Basically, one can add as many markers as he wants (like marker 1, 2, 3, 4 in the picture) on line series. X and Y values of these marker will be shown somewhere on the chart (it can be freely moved around too). Also all the markers can be dragged along the series to different locations. One can also double click a marker to enter X value to move the marker to new location.

0 votes
657 views

The standards color scheme of the Scichart control is dark, the standard color theme of the WPF windows is light.
I would like to change either one of them – but all dark themes that I find in Nuget for WPF dont work properly in VS 2015.
Is there a possibility to change the Scichart color theme to light so that it fits the WPF color scheme better?

0 votes
639 views

Basically I want to do something like this:
https://finviz.com/map.ashx?t=sec

It’s a hierarchical dataset, displayed visually. Is there a way to do this with SciChart?

  • kelias asked 1 month ago
  • last active 1 month ago
0 votes
690 views

Hi

I have experienced some performance issues when accessing YMin & YMax properties of data series containing lots of NaN’s.

I have a chart with the following setup:

XAxis = DateTime / YAxis = Numeric
1 FastLineRenderableSeries series / XyDataSeries<DateTime, double>

I have prefilled the data series with 1 million datapoints. Some of the values are randomly made NaN’s.

If 1/2 of the Y values are NaN’s – accessing YMin or YMax property takes ~117ms.
If 1/10 of the values are NaN’s it “only” takes ~27 ms.
…and if no NaN’s are added to the data series – it takes ~3ms;

This is a huge problem for us – as we have large data series including lots of NaN’s – and we must access the YMin / YMax each time data is added to do special scale fitting. This is normally once per second – but with up to 20 data series – (117ms * 2 *20 ) it takes over 4 seconds.

If I have 10 million datapoints – it takes 10 times as long – so it looks like it is recalculating the min/max each time.

/Flemming

1 vote
631 views

Hi

I have experienced some rendering issues with data series containing lots of NaN’s.

I have attached a test project and a couple of screenshots / a video.

It is a chart with the following setup:

XAxis = DateTime
YAxis = Numeric
Rendertype = HighQuality
4 FastLineRenderableSeries series

The series are updated 10 times per second with random y values. Some of the values are randomly made NaN’s.

After about 10 – 12 minutes (~6000 datapoints per series) the chart stops showing new data.
Zooming into the chart makes all of the series visible again.

If I lower the frequency of NaN’s the issue appears after a longer time.
If I do not insert NaN values the chart performs as excepted.

The first screenshot is after ~10 – 11 minutes – everything is fine.
The second screenshot is ~2 minute after – it does not render the last part of the series.
The video shows some panning and zooming.

/Flemming

0 votes
628 views

I’d like to use SciChartInteractionToolbar in my application.

For that, I need to include the following resources in your application.

<ResourceDictionary Source="/SciChart.Examples.ExternalDependencies;component/Resources/Styles/SciChartExampleToolbar.xaml" />
<ResourceDictionary Source="/SciChart.Examples.ExternalDependencies;component/Resources/Styles/ToolbarButtonsCommon.xaml" />

I confirmed that these resources are included in the following files.
“C: \ Program Files (x86) \ SciChart Ltd \ SciChart SDK \ ExamplesBin \ SciChart.Examples.ExternalDependencies.dll”

However, the following files do not contain the above resources.
“C: \ Program Files (x86) \ SciChart Ltd \ SciChart SDK \ Lib \ net47 \ SciChart.Examples.ExternalDependencies.dll”

Why?

Best Regards.

0 votes
650 views

Hello! I need to change position of VerticalLineAnnotation label (not the label showing axis value, but the label showing a value of crossed chart). How can I do this?

1 vote
646 views

The X axis was set to two axes as follows.

        <s:SciChartSurface.XAxes>
            <s:NumericAxis DrawMajorBands="True"
                           FlipCoordinates="True"
                           GrowBy="0.1, 0.1"
                           Id="Time1" />
            <s:NumericAxis DrawMajorBands="True"
                           FlipCoordinates="True"
                           GrowBy="0.1, 0.1"
                           Id="Time2" />
        </s:SciChartSurface.XAxes>

We wanted to make it selectable with DataPointSelectionModifier for two axes, so we set as follows.

        <s:SciChartSurface.ChartModifier>
            <s:ModifierGroup>
                <s:DataPointSelectionModifier Name="PointMarkersSelectionModifier"
                                              IncludeSeries="False"
                                              IsEnabled="True"
                                              SelectionFill="#B1B5B2B2"
                                              SelectionStroke="#009E9C9C"
                                              XAxisId="Time1" />
                <s:DataPointSelectionModifier Name="PointMarkersSelectionModifier2"
                                              IncludeSeries="False"
                                              IsEnabled="True"
                                              SelectionFill="#B1B5B2B2"
                                              SelectionStroke="#009E9C9C"
                                              XAxisId="Time2" />
                <s:MouseWheelZoomModifier IsEnabled="True" />
                <s:RubberBandXyZoomModifier IsEnabled="False" />
            </s:ModifierGroup>
        </s:SciChartSurface.ChartModifier>

However, only XAxisId = “Time 1” works correctly.

How can we make two axes selectable?

0 votes
654 views

I created a custom control and created a theme for the visual of the SciChartSurface. The goal is to add/remove Y Axes as needed. The problem is only one Scrollbar is created for all the axes and as I add an axis the scroll bar gets bound to the latest axis.

But if I implement it as View/ViewModel and not a custom control, it works fine.

I’m evaluating SciChart for use in our product is this is my only issue with it. Any Ideas?

  • Joe Morin asked 2 months ago
  • last active 2 months ago
0 votes
651 views

Hi

When i try to upgrade my scichart library version 4.2.3.10190 to 5.1.1.11473
I got the following build error, how can i resolve it ?
Error CS1061 ‘ISciChartSurfaceBase’ does not contain a definition for ‘GridLinesPanel’ and no extension method ‘GridLinesPanel’ accepting a first argument of type ‘ISciChartSurfaceBase’ could be found (are you missing a using directive or an assembly reference?)

Regards
Abhilash R

  • Abhilash R asked 2 months ago
  • last active 2 months ago
0 votes
632 views

Hi,

When I used scichart real-time graph for 3 days(no stop), It does not draw smoothly.

It looks broken… draw, wait for 1 second, draw, wait…..(repeat)

but first day, It worked well..

Why is it??

I use buffer size(1843200) and draw 80 fast lines.

and Memory in my PC is 16GB.

Please help me to solve this problem….

  • CholJin Ko asked 2 months ago
  • last active 2 months ago
0 votes
617 views

Hi,
I use HitTest in the “OnModifierMouseDown(ModifierMouseArgs e)”in the MyCustomClass.
This Class inherits SeriesSelectionModifier.
The result of HitTest is shifted by the width of Y axis when the AxisAlignment of Y axis is Left.
So, the HitTestInfo of XValue or IsHit or anymore are not correct.
For Avoiding this ploblem, I need to write the following code before HitTest.
var point = new Point(e.MousePoint.X, e.MousePoint.Y);
if (base.YAxis.AxisAlignment == SciChart.Charting.Visuals.Axes.AxisAlignment.Left)
{
point.X = point.X – base.YAxis.Width;
}

Is this a specification or a bug?

Thanks.

0 votes
540 views

Hi I use Tenor Curves 3D Chart Example.
So, I tried get data position when I clicking the surface.

I found another example that Simple Select Scatter Point 3D Chart and I tried using XyzDataSeries3D.
But Appending data too slow. Cuz the data size is 2000 x 2000 (4M). So, I can’t use XyzDataSeries3D.

So I think how do I get the data? But I can’t find another answer.

Here’s my condition

1) Using UniformGridDataSeries3D
2) If I click the surface then I can get x, z position

0 votes
542 views

I have multiple chart panes and matching pane view models. I handle all synchronization in the view models rather than via share mouse group id or viewportmanager.

The chart modifiers are delared in xaml, but the Xaxis shared visual range of each pane is declared and shared via reference from the main main view model. When I use the mousewheel to zoom all panes are zoomed at the same time because of the shared visual range reference that all x-axes share. However when I use the RubberbandXyZoommodifier on one pane the other panes are not zoomed, however. I debugged and found that the shared reference of visual range is broken as soon as I use the RubberbandXyZoomModifier. Why is that? Is this a bug? Thanks

  • bbmat asked 2 months ago
  • last active 2 months ago
0 votes
532 views

Hi,

I have several chart panes that share a mouse group and a shared visual range (I inject the shared visual range of type IRange in the constructor of the pane view model). I then set the XAxis visual range to the shared visual range inside each pane view model. However, when I use either of the below approaches outside of the pane view model to adjust the min and max of shared visual range, the Xaxis.VisualRange of each pane does not reflect that change.

Approach A: _sharedVisualRange.Min = ….; _sharedVisualRange.Max = …
Approach B: _sharedVisualRange.SetMinMax(….)

Neither approach actually impacts the XAxis.VisualRange.Min/Max.

Initially when I created the XAxis in code I set its VisualRange equal to the shared visual range that was injected via constructor, like :

XAxis = new CategoryDateTimeAxis()
{
……
……
VisualRange = _sharedVisualRange,
…..
};

Please note that all the above refers to code in the view model. I bind the XAxis in the pane view model to the XAxis of the surface in xaml.

My entire synchronization heavily relies on the assumption of this working, but it does not.

  • bbmat asked 2 months ago
  • last active 2 months ago
0 votes
597 views

Hi,

I use your library. and I want to use directX.

but when I open a page using this(following your article),
[http://support.scichart.com/index.php?/Knowledgebase/Article/View/17261/0/high-quality-vs-high-speed-vs-directx-renderer-plugins]

I saw a error message and my program was terminated…

Error is,

Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01: myprogram.exe
Problem Signature 02: 1.0.0.0
Problem Signature 03: 5b88a1cf
Problem Signature 04: SharpDX.D3DCompiler
Problem Signature 05: 4.0.1.0
Problem Signature 06: 592da5b5
Problem Signature 07: 2e
Problem Signature 08: c8
Problem Signature 09: System.DllNotFoundException
OS Version: 6.1.7601.2.1.0.256.48
Locale ID: 1033
Additional Information 1: 0d9f
Additional Information 2: 0d9f788f3d877e9bf9dd1ced0a063406
Additional Information 3: f3e4
Additional Information 4: f3e4c83f74a923e37478f9aa84b2c268

Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt

but I imported that in my project.

and Debug or Release folder has that dll.

This problem occured on another computer…(installed directX driver/ OS is Win7)

My development PC is fine.(Win10)

Why is it??

Please tell me awesome solution…

  • CholJin Ko asked 3 months ago
  • last active 4 weeks ago
0 votes
564 views

Hi All,

I’ve got a class that derives from the DataPointSelectionModifier in order to access the OnValueChanged() functionality and everything is fine (Thank you Andrew).

However – When I have 2 series on the chart (scatter series) and 2 points are quite close together, a single selection of a point can result in the selection of two points. On playing around with it a bit I notice that a point can be selected when the mouse pointer is slightly outside the limits of the pointmarker (in this case a 10×10 EllipsePointMarker) so if you get 2 points only a few pixels apart it is possible to place the mouse between the two and get both points selected. You can also see the behaviour in the SciChart examples 2DCharts|Toltips and Hit Test| Pointmarkers Selection example if you play with the points in the top left corner.

The Question: Is there a way to reduce the area around the mouse pointer that a hit test is detected in? (e.g. 20 pixel radius down to say 5 pixel radius)

I’ve had a look at overriding GeometryHitTestResult HitTestCore but I don’t really know if this is even the right way to go. If somebody can confirm this is where I should be looking then I’ll find some time to persevere with it.

Thanks in advance
/Stuart

0 votes
554 views

Hi! I have problems with visible range managing of a polar plot

The code in xaml:

<s:SciChartSurface graphModule:PlotLengthHelper.PlotLength="{Binding PlotLength, Mode=OneWayToSource,   UpdateSourceTrigger=PropertyChanged}" 
                       x:Name="ChartSurface"
                       SizeChanged="ChartSurface_OnSizeChanged"
                        ChartTitle="{Binding ChartTitle}"
                       s:ThemeManager.Theme="BrightSpark"
                        Annotations="{s:AnnotationsBinding Annotations}"
                       RenderableSeries="{s:SeriesBinding Series}"
                       XAxes="{s:AxesBinding XAxes}"
                       YAxes="{s:AxesBinding YAxes}"

First example. The code of the axis:

    var yAxis = new PolarYAxisViewModel {AutoRange = AutoRange.Never};
    YAxes.Add(yAxis);

Changing the VisibleRange of the axis has no any effect on the visible range of the graph. It sets automatically in the very first time and remains the same.

Second example.

    var yAxis = new PolarYAxisViewModel {AutoRange = AutoRange.Always};
    YAxes.Add(yAxis);

Changing the data (using line series) again has no any effect on the visible range of the graph. Again, it sets automatically in the very first time and remains the same.

Any suggestion on how to fix it? Especially the first case is required. Thanks.

Showing 1 - 50 of 2k results