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

0 votes

I have DateAxis as X Axis, so I want to trigger a button to zoom In/Out to a specific time at the latest plotted point (Price).
Example: I have zoom button 30 minutes, 15 minutes, 5 minutes and 2 minutes….

0 votes

Between these two which one should I use, and what different between these.

0 votes

Hi all

I have looked at the examples (briefly) for heatmaps and it doesnt seem to work how I would like

I would like to be able to do a more basic uniform heatmap – such as the example below. Is this possible with SciCharts? If so, which series/chart type would be best to use

Many thanks

0 votes


I had a need to get the example of spline series you show into my application.

I wanted to also implement data point selection. Currently it’s not working out-of-the-box, and I wanted to know if you can give me some pointers on what methods should I modify, or if it’s too complex.

Thank you very much.

0 votes


Does SciChart use automation peers? Is there any documentation about UI test automation for SciChart?

My company uses SciChart to develop a WPF desktop application. We want to automate our testing using toolts like Coded UI or Test Complete.


0 votes


I want to use user’s settings in my application. I’ve created my own window for settings with checkboxes and colorpickers.

I’ve binded my series with settings like that

            <s:FastLineRenderableSeries x:Name="tLineSeries1" StrokeDashArray="7 4" StrokeThickness="3" YAxisId="RightAxis" >
                    <Binding Source="{x:Static ProjectProperties:Settings.Default}" Path="Visibility1" />
                    <Binding Source="{x:Static ProjectProperties:Settings.Default}" Path="Color1" />

Everything is working fine and after restarting the application i get the colors and visibility of series as i want.

The problems starts after turning on ShowVisibilityCheckboxes=”true” in LegendModifier. After that, my settings dont work at all. Is there any way how can i bind checkboxes from the legends with my own created checkboxes or settings? In other words, how can i make them both to work “together”?

0 votes

Can we achieve the image attached using Polar Chart?
What I want is straight lines starting from center to circumference.


0 votes

We have a requirement for a non-uniform mesh 3d chart, can SciCharts do this?

For example, our X-axis values might range like this:
0, 2, 4, 8, 11, 15, 19, 23, 28, 31, 33, 35, 40, 45, 50, 60, 70, 80, 90, 95, 100

and our Z-axis values might range like:
0, 900, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 4000, 5000, 5500, 6000

I’m expecting to see something like the image I have attached to this post.

How would I implement it on a ScatterRenderableSeries3D?


0 votes

I refactored from using custom RenderableSeries to a custom RenderableSeriesViewModel which has fixed a refresh bug in the chart:

  public class CustomExclusionRenderableSeriesViewModel : BaseRenderableSeriesViewModel
     public override Type RenderSeriesType => typeof(CustomExclusionRenderableSeries);

However I am invoking MouseLeftButtonUp in the chart code behind and performing a hit test. The HitTest method is not exposed on the BaseRenderableSeriesViewModel:

 private void SciChartSurfaceMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    // Perform the hit test relative to the GridLinesPanel
    Point hitTestPoint = e.GetPosition(this.sciChart.GridLinesPanel as UIElement);

    // Get hit test the RenderableSeries using interpolation
    this.ViewModel.HitTestInfo = this.ViewModel.ExclusionSeries.HitTest(hitTestPoint, true);

Is there any way to get the series instance from the view model & hit test it?

0 votes

I have created a 3D surface mesh successfully and now I want to plot a data series on the mesh. The inputs to the data series are 2D (X,Y) with the Z axis value always being directly on the mapped 3D surface point at the specified X,Y position.

I am trying to populate a XyzDataSeries3D() collection like so…

var xyzData = new XyzDataSeries3D();
xyzData.Append(x, y, z);

How to I determine the Z value given I have the X and Y values? Is there a built-in method for determining this or do I need to do it myself?


0 votes


We are trying to create a simple Stacked Column Plot with two Y-Axis.

Imagine the left Y is Time spent during a year playing a sport and the right is percentage of the year playing a sport.

The data series is tied to the primary (left) y-axis, but we want the right to be in sync at all times

At the moment, I can zoom in ok, but when I reset the extents (zoom out) the right axis just stays to the zoomed in values and is not reset.

I have tried creating a “fake” series, but this takes up space and I cant hide it. If I set to isVisible = false, then the right axis stops working again.

This seems like a simple problem – any ideas how I can fix it 🙂

0 votes

My idea was to have two FastLineRenderableSeries that both share the same XyDataSeries. One series will display the data as-is as an absolute value, while the other will display the same data relative to some arbitrary value. Each series would get it’s own axis.

Is there a way to accomplish what I’m trying to do, or is there another approach that accomplishes the same thing?

  • Dan Pilat asked 1 week ago
  • last active 1 week ago
0 votes
0 answers

I have a WPF app where a UserControl is created at startup. The control contains two SciChartSurface objects, both initially invisible. About every 10th time I start the application it hangs on the thread with this call stack:

mscorlib.dll!System.Collections.Generic.ObjectEqualityComparer<System.__Canon>.Equals(System.__Canon x, System.__Canon y)    
mscorlib.dll!System.Collections.Generic.List<System.IComparable>.Contains(System.IComparable item)   
SciChart.Charting.dll!SciChart.Charting.Numerics.TickProviders.TimeSpanTickProviderBase.c5b456a75ec2eca07ab2f0cf38c30f4f2(SciChart.Data.Model.IRange cb7f8a302c4d43c2cfce28a7f59c09882, SciChart.Charting.Model.IAxisDelta<System.TimeSpan> cf1435e1ac3c185934e905ec126bcd3fa)   
SciChart.Charting.dll!SciChart.Charting.Numerics.TickProviders.TimeSpanTickProviderBase.GetMajorTicks(SciChart.Charting.Visuals.Axes.IAxisParams axis)   
SciChart.Charting.dll!SciChart.Charting.Numerics.TickProviders.TickProvider<System.IComparable>.caf851e93289795305ee933ce4bbca448(SciChart.Charting.Visuals.Axes.IAxisParams c050e7b647895decc0313c2786c4fc396)  
SciChart.Charting.dll!SciChart.Charting.Visuals.Axes.AxisBase.OnDraw(SciChart.Drawing.Common.IRenderContext2D renderContext, SciChart.Charting.Visuals.RenderableSeries.IRenderPassData renderPassData)  
SciChart.Charting.dll!A.c68de5aaca24f8f81d98aed29fac3caff.c6a7d2b5be124728330bbf562594a9bb9(SciChart.Charting.Visuals.ISciChartSurface c17037e8328cd0abc02d2a6957dfa450c, SciChart.Charting.Services.RenderPassInfo c16b8d70d2b6ecad8f9fca7ac3f5177b8, SciChart.Drawing.Common.IRenderContext2D c41db0419b661c8ac05a2aa6a1ea66092)   
SciChart.Charting.dll!A.c68de5aaca24f8f81d98aed29fac3caff.RenderLoop(SciChart.Drawing.Common.IRenderContext2D renderContext)     
SciChart.Charting.dll!SciChart.Charting.Visuals.SciChartSurface.OnRenderSurfaceDraw(object sender, SciChart.Drawing.Common.DrawEventArgs e)  
SciChart.Drawing.dll!SciChart.Drawing.Common.RenderSurfaceBase.OnRenderSurfaceBaseLoaded(object sender, System.Windows.RoutedEventArgs e)    
PresentationCore.dll!System.Windows.RoutedEventHandlerInfo.InvokeHandler(object target, System.Windows.RoutedEventArgs routedEventArgs)  
PresentationCore.dll!System.Windows.EventRoute.InvokeHandlersImpl(object source, System.Windows.RoutedEventArgs args, bool reRaised)

The CPU spikes and the app never responds. Any thoughts as to why this might happen?

0 votes


Please see attached video file.

I notice a strange behavior with the cursormodifier and the labelstyle at the axis. It seems to drop a shadow at certain values but not at others. I have not set any effects on the style.

I notice the same behavior in the example suite “Using cursormodifier tooltip”.

How can I disable the drop shadow effect?

0 votes

some time ago we update our application used WPF chart v 3.1 to version Now we realize that the application uses much more memory as before, sometimes it doubles the memory usage. The worst issue is that memory is not release aver after unloading the data series and even after closing the Tab which contains the Chart. Because we need to deploy the Application even on pc with 2 GB RAM it becomes an issue for us. Please advise what could we check to make sure memory will be released after unloading the data series and closing the tab with chart.

0 votes

We have a motion sensor for which we present a real time graph. As can be seen from the attached image, my YAxis configuration (auto range) causes the yaxis scale to display noise in a way that is rather disturbing (see attached image).
I have tried to do some fiddling with the axis settings, but with no luck so far.
The YAxis perfectly follows the measured data, but when there is practically no motion, the graph should be shown as an almost straight line, preferably not in the upper or lower end of the scale.

0 votes

In your example “CustomTooltipsWithModifiers” you show how to apply custom styles and templates to XML generated RenderableSeries, like: (works fine)

s:VerticalSliceModifier.TooltipContainerStyle="{StaticResource TooltipStyle1}" 
s:VerticalSliceModifier.TooltipTemplate="{StaticResource VerticalSliceTooltipTemplate1}"/>

In your example “ChangeSeriesTypeInCode” you generate the RenderableSeries in code programmatically, like: (works fine)

var series = new StackedMountainRenderableSeries() 
Name = "any Name", 
IsVisible = "any visibility", 
StrokeThickness = "any int", 
Stroke = "any Color", 
Fill = "any Brush", 
DataSeries = "any dataSeries" 

My Question: How do I apply the Templates and Styles for Modifiers to the programmatically generated RenderableSeries?

Thanks for help.

0 votes

Is there any way to configure the padding on a pie/donut chart? I’m trying to squeeze a few in a dashboard type arrangement and there’s about 100px of padding either side of the doughnut itself that’s taking up a lot of space:

enter image description here

<s:SciChartDonutSurface Grid.Column="0"
                    ItemsSource="{Binding DonutModels}"
                    BorderBrush="Black" BorderThickness="1"
                    HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                    MinHeight="300" MinWidth="300" AllowClickSelection="False" AllowMultiSelect="False"
    <DataTemplate DataType="gauge:DonutSegmentViewModel">
        <s:DonutSegment Fill="{Binding Fill, Mode=TwoWay}" 
                        IsSelected="{Binding IsSelected, Mode=TwoWay}"
                        SegmentValue="{Binding Value, Mode=TwoWay}" 
                        Text="{Binding Name, Mode=TwoWay}" 
                        Stroke="{Binding Stroke, Mode=TwoWay}" 
                        StrokeThickness="{Binding StrokeThickness, Mode=TwoWay}"/>

  • hanvyj asked 2 weeks ago
  • last active 1 week ago
0 votes

I’m adding an annotation to a chart with a DateTime x-axis. Without a label the annotation is successfully added. However, if I specify a label I get an InvalidOperationException when Add() is called. The exception message is “The Type this is a test is not a valid Comparable Type”}:

                var annotation = new VerticalLineAnnotation
                    VerticalAlignment = VerticalAlignment.Stretch,
                    ShowLabel = true,
                    X1 = time.DateTime,
                    Stroke = System.Windows.Media.Brushes.Orange,
                    LabelPlacement = LabelPlacement.TopRight,
                    LabelValue = "this is a test",
                    LabelsOrientation = Orientation.Vertical


The LabelValue is obviously of type string and non-null and indeed of type IComparable. Any reason I can’t add it?

  • Dan Pilat asked 2 weeks ago
  • last active 1 week ago
0 votes


Please see the 2 images attached. I would like to reproduce something similar to what’s on the images using scichart ie. being able to select/unselect certain parts of the series by placing a control on certain datapoints (being able to add a checkbox to the surface would be great). What options do I have?

One more question, Is it possible to add a label to LineAnnotations?


0 votes

I have a observable collection of Dataseries.XYDataSeries<double,double> and i want to bind this collection to Scichart
surface data series
in one of your Example i find that observable collection bind with Atteached property so i have create a AP for that
but when i bind this property with chart it not bind data with scichart

                        <s:FastLineRenderableSeries   AntiAliasing="False" 
                                                    Stroke="{Binding Stroke,Mode=OneWay}">

                                    <Ellipse Width="7"
                                             Fill="White" />


Attache property code

public static readonly DependencyProperty AllowOnlyStringProperty =
DependencyProperty.RegisterAttached(“AllowOnlyString”, typeof(ObservableCollection<IXyDataSeries<double, double>>), typeof(TextblockExtension), new PropertyMetadata(default(ObservableCollection<IXyDataSeries<double, double>>), AllowOnlyString));

    private static void AllowOnlyString(DependencyObject d, DependencyPropertyChangedEventArgs e)

        var attachedSurface = d as SciChartSurface;
        if (attachedSurface == null) return;

        var sourceItems = e.NewValue as ObservableCollection<IXyDataSeries<double, double>>;
        if (sourceItems == null)


  • Rahul asked 2 weeks ago
  • last active 6 days ago
0 votes


Back at it again . I would like to disable resize (grip) in both directions( X and Y) on my LineAnnotations and remove the grip handles on the tips of the line (but keep the drag). The property ResizeDirections seems to accept either of the directions or both and IsResizable looks readonly. Thanks in advance.

NB: I do it in code

0 votes
0 answers


I am having a number of LineAnnotations displayed on the graph and their references stored in an array. I’d drag the annotations around the graph and try to get their new position by calling tab[0].X1 for example but the value returned isn’t the actual X1 of the given annotation. I’d get 1.75 for example for the actual X1 value of 265 shown when debugging. Tried with
foreach (LineAnnotation line in mySciChart.Annotations) { var value = (double)(line.X1); } but same prob, What am I doing wrong?

1 vote

For the image in attachement, the user choses which charts he wants to see. How do we align the y-axis labels to the right against the axis?

0 votes

I’m trying to properly display a circle series as a circle. I’ve made sure the graph is not resizable, and set the GridLinesPanelStyle to ensure that it’s square. However, when do ZoomExtents on the ViewPortManager, it always adds a little buffer space on the Y axis but not the X so you end up with an ellipse. Is there any way to set and/or remove this buffer? You can see this in the image, the graph itself is square and the range on the X axis is 300, but on Y it’s a little bit bigger so what you see isn’t really a circle. Thank you.

  • Andy K asked 2 weeks ago
  • last active 2 weeks ago
0 votes

Hi there,
I tried to make the Drag Horizontal Threshold demo work on FastLineRenderableSeries, but the result looks weird. Please see the attached image. Is there a way to make the color of series changes only at the threshold line?

0 votes

I’m using a DateTimeAxis and by default major tick lines (and labels) are shown every 1/2 second – this is too busy/crowded for me. How do I change this to show a label every second? I set AutoTicks to false, but am not sure what to do about MajorDelta/MinorDelta when my X value is a DateTime object.

   <s:FastLineRenderableSeries x:Name="PositionSeries" StrokeThickness="2"/>

   <s:DateTimeAxis x:Name="PositionXAxis" TextFormatting="mm:ss"/>
XyDataSeries<DateTime, double> _positionSeries;
PositionSeries.DataSeries = _positionSeries;
  • Dan Pilat asked 2 weeks ago
  • last active 2 weeks ago
0 votes

I can zoom the chart if I drag the grip of scichart scroll bar.
Is there a way to disable this.

It can be done if i set GripsThickness = 0, but I am looking for other options.

0 votes

Notice in the image that the point marker is cut off by the graph border. Is there any way to allow it to extend past the border so in this case it would be a full circle? Thank you!

  • Andy K asked 3 weeks ago
  • last active 3 weeks ago
1 vote


I want to show tooltips on point markers only.
I have FastMountainRenderableSeries with EllipsePointMarker. I don’t want to show tooltip on series, on PointMarker only so can’t use TooltipModifier.

I tried to add tooltip from XAML like this:

<sciChart:EllipsePointMarker sciChart:TooltipModifier.IncludeSeries="True">
        <ToolTip Padding="0">

But it is not showing.

Is it possible to achieve this?

0 votes

When I select a series/plot, I would like to identify where it came with more than just the Name member. How can I do that?

I have a list of unsigned integer values taken from a data logger. I bundle the values up in a class with some other information, such as the name of the sample and an ID string.

Since I can’t data bind to the logged samples as-is, I convert them to a SciChart friendly “LineRenderableSeriesViewModel” and add them to a list of “ObservableCollection” that I data bind to a SciChart.


// Where "loggedSamples" is a SamplesContainer 
//class SamplesContainer
//    public string Name;
//    public string ID;  **<=== I want to get this somehow when I select something**
//    public Uint16 data {get;set;}

// Convert Samples => XyDataSeries => LineRenderableSeriesViewModel

SamplesContainer loggedSamples = GetLoggedSample();
XyDataSeries<double, double> xySeries = ConvertSamplesToXyDataSeries(loggedSamples);
xySeries.SeriesName = loggedSamples.Name;

LineRenderableSeriesViewModel lineSeries = new LineRenderableSeriesViewModel() {
    DataSeries = xySeries, StyleKey = "LineStyle", Stroke = Colors.Blue };



   <s:SciChartSurface Name="sciChartItemView" Grid.Column="2"
    RenderableSeries="{s:SeriesBinding RenderableSeriesViewModelForChannels}"
    ViewportManager="{Binding SampleSetViewMod.ViewportManager}"                                                                           

        VisibleRange="{Binding SampleSetViewMod.SharedXVisibleRange, Mode=TwoWay}"

        <s:NumericAxis AxisAlignment="Left"
                <s:DoubleRange Min="0.1" Max="0.1" />


            <s:ZoomExtentsModifier XyDirection="YDirection"/>

            <s:ZoomPanModifier ExecuteOn="MouseMiddleButton" XyDirection="XYDirection" ClipModeX="ClipAtExtents" />

            <local:ExtendedMouseWheelZoomModifier />

            <s:RubberBandXyZoomModifier IsEnabled="True"
                ReceiveHandledEvents="True" />
            <s:LegendModifier ShowLegend="True" Orientation="Vertical" Margin="10"

            <local:ExtendedSeriesSelectionModifier SelectionChanged="SeriesSelectionModifier_OnSelectionChanged">
                    <Style TargetType="s:FastLineRenderableSeriesForMvvm">
                        <Setter Property="StrokeDashArray" Value="10,5"/>

            <!--<s:CursorModifier x:Name="cursorModifier" IsEnabled="True" />
        <s:RolloverModifier x:Name="rolloverModifier" IsEnabled="True"/>-->
0 votes

Hi SciCharters,

We have a requirement to show a grid of data as follows:

time (days) on the x-axis
people on the y-axis.

For each “cell” in the grid (i.e. for each day for each person) we want to represent 3 different pieces of data as follows:

some text
1/2 the cell in one colour
the other 1/2 of the cell in a different colour

All cells need to be the same size and it should look a bit like a spreadsheet rather than a chart. I will try and attach a mockup of what it needs to look like shortly.

We are having performance issues using pure Wpf with any amount of data and are wondering if this is a problem scichart can solve for us. It doesn’t look like any of the out of the box charts can give us what we need, so I guess we have to consider using something like a custom chart or annotations?

I’d be grateful for any advice you can give on the best way to approach this task with scichart??

Many thanks


  • Bill Dines asked 3 weeks ago
  • last active 3 weeks ago
0 votes


I’m having an issue trying to style a ToolTipModifier. Currently, I am populating my chart similar to your “500 series each with 500 points” example by using LineSeriesSource attached property. This works great for my scenario (tons of data), but as a result, I am not able to stylize my tooltip since all examples seem to be showing an attached property being used in XAML on the RenderableSeries.

Right now, I am simply just using a ToolTipModifier, which is working as expected. I’d perfer to re-style the tool tip via XAML, as our application is theme-able and we’d like to try and avoid code-behind has much as possible.


1 vote
0 answers

When I’m trying to draw FastLineRenderableSeries with AntiAliasing set to true and StrokeThickness set to 1 I get lines which are not continuously connected (see red rectangle in attached png). How can I avoid this? – don’t wan’t to thicken the lines.

By drawing a live chart this effect/issue causes flickering.

Any help appreciated.


  • Daniel asked 4 weeks ago
  • last active 1 week ago
0 votes

I’m creating a chart using scichart. I want to display some markers (eg. small Ellipses) on Yaxis for every Data Series depending on where the cursor is.
So far by using:


I’ve obtained a cursor that marks the datapoints directly on charts.
Here is a picture of what I want to obtain (see the markers on Yaxis):

0 votes

I am trying to add some annotations to my graph. The problem is that this function is called from a different thread so I get the following excepion:

I thried using an invoke on the main thread but this doesn’t help.

This is the code I use:

 var verticalLineAnnotation = new VerticalLineAnnotation
                X1 = annotation.X,
                Tag = annotation,
                StrokeThickness = annotation.StrokeThickness,
                StrokeDashArray = annotation.StrokeDashArray,
                Stroke = annotation.Brush,
                ToolTip = annotation.LabelTooltip

            var referenceDataAnnotation = annotation as ReferenceDataAnnotation;
            if (referenceDataAnnotation != null)
                verticalLineAnnotation.ContextMenu = ChartContextDataTypesFactory.CreateContextMenus(referenceDataAnnotation.Type.Name, Application.Current.MainWindow);

            if (IsChartFirst)
                verticalLineAnnotation.AnnotationLabels = new ObservableCollection<AnnotationLabel>
                    new AnnotationLabel
                        LabelPlacement = LabelPlacement.TopLeft,
                        FontSize = 12,
                        FontWeight = FontWeights.Normal,
                        Margin = new Thickness {Bottom = -5},
                        Text = annotation.LabelText
//This is the line where I get the exception
  • Kevin Goos asked 4 weeks ago
  • last active 4 weeks ago
0 votes

I’ve been trying a few ways to get this to work now and I’m still struggling to get a catch-all solution.

My requirements are:
– self-scrolling real-time data series with a fixed-time range (regardless of the number of points)
– y axis should support either fixed or automatic visual range
– support rubber band zoom (and ideally mousewheel too) on both axes

The key problem is that the stock ticker example doesn’t have a fixed time width. The points are added to the chart, and the axis expands until it reaches capacity. It’s also relatively easy to use FifoCapacity (adding a lot of NaN points), but FifoCapacity works on number of points, which isn’t great when you have irregular updates. I’m happy with the chart not scrolling until a new update is received, but the range of the chart must be fixed (say, five minutes), regardless of the number of visible points on the chart.

My current solution involves deriving from XyDataSeries to duplicate the FifoCapacity behaviour for a fixed time:

   public class RealTimeXyDataSeries<T> : XyDataSeries<DateTime, T>
            where T : IComparable
    public TimeSpan _limit;

    public TimeSpan Limit
        get { return _limit; }
            _limit = value;

    public RealTimeXyDataSeries(TimeSpan limit)
        Limit = limit;

    public override void Append(DateTime x, T y)
        base.Append(x, y);


    public void Update()
        if ((DateTime)XMax == DateTime.MinValue) return;

        var c = 0;

        while (XValues[c] < (DateTime) XMax - Limit) c++;

        if (c <= 0) return;

        RemoveRange(0, c);

That takes care of removing points, but doesn’t deal with the range issue. To deal with that, I have some code in my codebehind to set the XAxis VisibleRange on every update, which feels a bit nasty. I wanted to create a RealTimeDateTimeAxis, but none of the relevant functions are override/virtual.

I also took the implementation of RubberBandXyZoomModifierEx from the knowledge base, with some modifications to deal with Y-Axis zoom/reset based on it’s AutoRange setting. However, this involves setting the Y-Axis AutoRange state back to a saved value, and I keep seeing MouseModifierUp events after my DoubleClick events, which resets AutoRange back to Never.

It feels like I’m doing a lot of work in a lot of places to get this to work, and it’s resulting in complex code and buggy behaviours; I’m not comfortable handing this over to another engineer in the current state.

Is there a better way to do this?

  • Rick C asked 4 weeks ago
  • last active 4 weeks ago
0 votes

Hi guys!
Is there a way to Format all number shown in a Chart to have always 3 Decimal places shown?

0 votes

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 1 month ago
  • last active 4 weeks ago
0 votes

Hi! I’m trying to add realtime mountain chart into WinForms project via ElementHost.
It works fine, but when I increase the chart form size and move mouse over it, it starts to block another timers events I use to update controls. It happens no matter how much datapoints I have and no matter witch render I use (HighSpeed or D3D).
Both DispatcherTimer and Forms.Timer are affected.

I’ve uploaded simple project to demonstrate this behevior:

It simply switches between two datasets by the timer in WPF Control, and another timer updates the winforms label.
When I start to move mouse over the chart, label stops updating. If I increase the dataset update timer interval to 50-70ms it gets better, but this affects chart FPS.

Can you suggest a workaround for this behavior?
Thanks, Dennis.

UPD: I have found that without <s:SciChartSurface.ChartModifier> timers are fine.
But even an empty ChartModifier group starts to affect it.

  • DENIS K asked 1 month ago
  • last active 1 week ago
0 votes
0 answers


I’m trying to enable the use of multiple VerticalLineAnnotations and show the corresponding SeriesInfo in an extra legend to the user. Utilizing the RolloverModifier Tooltips example, this works quite easily for the position and values of the VerticalLineAnnotations. However, I would like to show differences (X and Y) between the values of two VerticalLineAnnotations in the same manner.

My approach was to subclass ChartDataObject and add an ObservableCollection of a custom class (SeriesDifferenceInfo) providing properties, which exhibit DeltaX and DeltaY for binding in the surface. For keeping this collection up to date when adding or removing a VerticalLineAnnotation, I registered for the CollectionChanged event of SeriesInfo in my subclassed ChartDataObject and wanted to update the Collection of SeriesDifferenceInfo subsequently. But somehow this event appears not to be triggered on a change in the list of SeriesInfo. Am I doing something wrong or is this intended behaviour? Of course, I could simply call a method UpdateDifferenceCollection(), when adding/removing a VerticalLineAnnotation, but is this really neccessary?

Also, the next problem is triggering PropertyChanged for the DeltaX and DeltaY values when the values of one SeriesInfo changed. I guess this could be done by listening to e.g. a drag event of VerticalLineAnnotation, but is there a more straightforward way to do this?

Best regards

0 votes


I have a DateTimeAxis and the user can change the TextFormat. It has to be “mm/yyyy” or “dd/yyyy” or “ww/yyyy” but in the last case it does not work. To display in month or in the day format is working, but I have to display in week format to and I don’t know how to do it. Can you please help me with these?

0 votes

In the Knowledge Base, an article discusses a rollover modifier that utilises a vertical hit test to draw a vertical line at the cursor and highlight the nearest point:—part-1—creating-a-custom-rollover-modifier

This is perfect for data which moves/is unique along the X axis (such as time series data).

How can I best replicate this modifier for data which moves/is unique along the Y axis? Drawing a horizontal line is easy, but there is no HorizontalSliceHitTest function.

  • Rick C asked 1 month ago
  • last active 1 month ago
0 votes


I’m trying to update a chart from version 3.1.x of a chart. In the old chart there was a XyScatterRenderableSeries with markers width set to 8. The Rollover line had the same width as the marker and it was easy to hit a point. After update the rollover line is thin and it is hard to hit a point. Please advise if it is possible to get back the old behavior.

0 votes


I would like to create some markers for a “FastLineRenderableSeries” only for specific points and add a label to them.

Is there a way to this with the latest version?


0 votes

I am trying to build an application with multiple charts on one screen (3) and each chart annotated with 20-25 annotations.
In total I have 6 FastLineRenderableSeries at once – 2 per chart.
I found serious performance issues after adding more than 10 annotations.

When a user presses a key I go to another set of data. Annotations are created on each data change. I create temporary collection and assign it to the surface annotations collection at once. I also suspend updates through Viewport Manager.

Creation of annotations does not seem to affect the performance, but the rendering of them does.

Most of them are derivatives of AxisMarkerAnnotation and apply a different label template. I tested adding standard Text Annotations instead, just to see whether the custom template had to do something with the performance drop, but it was more or less the same case.
The custom templates are also really simple, it is either a text block or a filled shape, always one component.

Do you have any advises for using a bigger number of annotations?
How to make their rendering faster?

When I remove all annotations the “scrolling” of data goes really smooth.

I am running out of ideas of how to improve.

Best regards,

PS Is there any way to try out the other renders before buying a license?

0 votes

I’m revisiting a problem I asked about here a year ago. My goal was to create a chart where the visible range is scrolling “window” that advances ahead of the most recent data point when the data hits the edge so that the line is always moving from the center of the chart towards the edge.

I was able to get something to work by inheriting from the NumericAxis type and overriding CalculateDataRange(). I’m trying this again with a more recent version of SciChart (4.2.2) and it looks as though, while CalculateDataRange is still present, it isn’t called when a data point is added to the chart.

My questions are:
a) Since then, is there a better way to create a scrolling window of data?
b) If not, what has taken the place of CalculateDataRange if I were to again attempt to intervene in the calculation of the visible data range when a point is added?


0 votes

Hi There,

We are thinking to buy sci chart licence and we are looking for specific feature as below.

Assume that there are 10 points on scatter series on a chart and all of them showing chart labels.
Now we want to give user ability to turn off label… any on specific chart points .. basically he will turn off labels.. specifically click /selecting that point ..r in some way. In short he will selectively turns off label.

Can we do this with scichart?

  • srikiran asked 2 months ago
  • last active 1 month ago
0 votes


If I remember good, in a old version of SciChart it was possible to draw custom annotation in chart with a “pen”, like in Paint.

In the current version is it possible? And if yes, how do it please?


  • Neimad asked 2 months ago
  • last active 2 months ago
Showing 1 - 50 of 2k results
Signup now and we’ll keep you updated with product developments and you will be notified the moment SciChart iOS Charts is released and available.
Signup now and we’ll keep you updated with product developments and you will be notified the moment SciChart Android Charts is released and available.
Your details have been received.
We like to make sure we only send information to clients who want to hear from us, so if you check your email now, you will find a confirmation email from us. Please click the confirm link and you'll will be added to our updates.