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

0 votes

What version of .NET Framework does scichart v4.2.1 support ?

I would like to know the minimum and maximum versions.

0 votes

I have an impulse series chart, and with SciChart v3.x the rollover modifier line would “snap” to the nearest point. Since migrating to v6.5 this no longer happens – only the rollover marker snaps, not the vertical line. Setting UseInterpolation=”False” has no effect.

I’ve only noticed this on the impulse series, and the rollover line does still snap on other types (e.g. line, scatter). I just wanted to check that I’m not missing something, or if there any way to reinstate this snapping behaviour?

0 votes
0 answers

I have a problem I need to correct so I can Remote Debug —
I have Scichart licensing installed on both the Remote Windows Device and my Local Development machine, which the Serial key entered on both machines.
If I run in release mode, not through Remote Debugging, the chart renders on the remote machine.
If I run either Debug or Release mode on my local developer machine, the chart renders on the developer machine.
HOWEVER, if I try Remote Debug session, the application runs, but the SciChart screen just gives me the Not Licensed display.

Why ? and is there a workaround…

Note that the remote machine does not have an internet connection – as it talks over the ethernet on a peer-to-peer connected instrument. There is only that one ethernet adapter on the remote machine. My developer machine has 2 ethernet connections – one direct IP to the peer-to-peer network group, to communicate to the remote machine to remote debug, and one wireless connection with DHCP to access the internet.

0 votes

I purchased the upgrade to support v6 – originally purchased v5 licenses. Now online my Serial Keys do not show and the Runtime License says there is a problem.

  • Levi Jeff asked 4 weeks ago
  • last active 3 weeks ago
0 votes

Such as title

  • Josk Zhou asked 1 month ago
  • last active 1 month ago
0 votes

Having used v3.1 for 9 years, I always found working with visible ranges to be a little “unwieldy” (unless I’ve been missing something all this time!). So after migrating to 6.5 I’ve been wondering if there have been any improvements that I can utilise. This is typically how I do things:

Most of my charts use pan & zoom modifiers, therefore AutoRange is set to “Never”, while the VM will expose (say) ‘DoubleRange’ properties for both the x-axis and y-axis ranges, bound to the ‘VisibleRange’ property of the axes in the view. These VM properties are usually instantiated after populating the data series (using the X & Y min/max in some way). The VM also exposes properties that are clones of these “initial” ranges.

In addition to the pan & zoom modifiers, I also use a custom ZoomExtentsModifier that lets a user double-click the chart to restore the axes back to those “initial” ranges. The custom class simply raises an event when the mouse is double clicked, and the event handler (in the view’s code-behind) does something like the following:

        var vm = (MyViewModel)DataContext;
        xaxis.AnimateVisibleRangeTo(vm.InitialXAxisRange, new TimeSpan(0, 0, 0, 0, 500));
        yaxis.AnimateVisibleRangeTo(vm.InitialYAxisRange, new TimeSpan(0, 0, 0, 0, 500));

So in a nutshell, this is how I’ve handled visible ranges all this time – to provide pan & zoom plus the custom “restore zoom” functionality. It’s quite a lot of plumbing/boilerplate/duplicate code, across dozens of charts/views/VMs in several applications, so is there any way to simplify any aspect of this?

0 votes


I am interested in drawing lines segments/cylinders on a WPF 3D plot in a manner that allows them to be selected or allow hit testing. I have looked at:

1) Selecting a vertex on a SciChart3DSurface, but I need to select the line
2) Drawing CylinderPointMarker3D’s but I need to set the length of each one

These lines only need to be drawn in the XY, XZ, and YZ planes so I have thought about using the ImpulseRenderableSeries3D but I need to control where the line segments start and end – and this doesn’t look like it allows control of the start.

Any ideas?


1 vote

I migrated my project from .net 4.7.2. to .net 6.0 using the upgrade-assistant from Microsoft.
Now I get the exception:
“Strong name validation for the assembly ‘SciChart.Charting’ failed. Assembly not strong-named or is tampered. Verification via API failed”

0 votes

Is there a built in feature that could calculate the frequency from a data stream ?
I’m using a signal generator to push a sine wave into SCICHART, the graph looks OK (a since wave).
I would like to draw a box with the current frequency in Khz / Hz, is there an API that does that ?


1 vote

Some of our charts plot data consisting of descending X values (e.g. a voltage range from 0 to -1000). These charts worked fine in v3.1, but having migrated to 6.5 they now throw the “unsorted” exception as per your performance tips & tricks page. Am I okay in this scenario to enable unsorted data (AcceptsUnsortedData = true), or will the descending X values still cause issues for SciChart?

I guess the proper solution would be to reverse the start & end values, so X is always ascending (-1000 to 0), but this would be a decision for our stakeholders as to whether they want to see the charts like this.

On a vaguely related note, your performance tips & tricks page mentions the “visual xccelerator engine”. Is there any reason why I can’t enable this application-wide, for every chart? Are there any risks or downsides to using this feature? Just wondering why it’s not enabled by default if it’s so beneficial.

0 votes


Y-values are only 0 or 1. (0 is thin line, 1 is thick line)
Axis-Y Label means series name.

I want to do something like in the attached picture.

0 votes

During migration from v3.1 to 6.5 I have noticed it no longer draws a border around the chart. How on earth do I add a border?
Applying a BorderBrush & BorderThickness to the ‘GridLinesPanel’ has no effect. Adding these to the SciChartSurface does produce a border, but it gets rendered on top of the series, obscuring values plotted along the very edge of the chart. I’ve attached an image showing what this looks like with and without a border (orange) applied to the SciChartSurface.

0 votes

I’m migrating from v3.1, and it seems that in a later version you’ve changed the default appearance of the rollover modifier tooltip container, to be a green rectangle with a dark drop shadow (which looks awful sorry!). I’ve created an “empty” container style to remove this, but it looks like I have to apply this to every renderable series, using “s:RolloverModifier.TooltipContainerStyle=…”.
I look after a large application with dozens of charting controls, not only in XAML but also created programmatically, so this approach to applying the container style is making life fairly difficult! Is there any way to globally apply this container style to all renderable series types? I’ve tried applying it to BaseRenderableSeries but it doesn’t work:

    <Style TargetType="{x:Type s:BaseRenderableSeries}">
        <Setter Property="s:RolloverModifier.TooltipContainerStyle"
                Value="{StaticResource RolloverTooltipContainerStyle}" />

(It does work if I use a concrete TargetType such as FastLineRenderableSeries, but this would mean creating a style for every type of renderable series used across the application).

Similarly, the rollover “point marker” now has a drop shadow. Is there a way to globally remove the drop shadow, but ensure that the ellipse continues to be coloured to match the series stroke colour?

1 vote

I’m migrating from v3.1 to 6.5 but unsure how to deal with a custom renderable series that contains dependency props used by its overridden Draw() method. This is the class:

public class CustomXyScatterRenderableSeries : CustomRenderableSeries
     // An example dependency prop:
    public static readonly DependencyProperty RejectionLimitProperty = DependencyProperty.Register(
        new PropertyMetadata(null, OnPropertyChangedGeneric));

    protected override void Draw(...) ...

I have now created a renderable series view model to go with the custom renderable series:

public class CustomXyScatterRenderableSeriesViewModel : BaseRenderableSeriesViewModel
    public override Type ViewType => typeof(CustomXyScatterRenderableSeries);

And in my window VM I have something like this, to programmatically create the chart series:

public ObservableCollection<IRenderableSeriesViewModel> SeriesCollection {get;} // Bound to the chart's 'RenderableSeries'


var vm = new CustomXyScatterRenderableSeriesViewModel()
             StyleKey = "customSeriesStyle",
             StrokeThickness = 1,
             AntiAliasing = False,
             RejectionLimit = 123  // Obviously won't work!


As per the above comment, how do I assign values to the RejectionLimit (and other dependency props)? I’m guessing that I’ll have to create a “RejectionLimit” property on my window VM, set this to 123 (or whatever), then bind this property to the custom renderable series dependency prop via the XAML style (created as per this article), e.g.:

  <Style TargetType="CustomXyScatterRenderableSeries" x:Key="customSeriesStyle"
           BasedOn="{StaticResource MvvmDefaultRenderableSeriesStyle}">
     <Setter Property="RejectionLimit" Value="{Binding RejectionLimit}"/>

Seems a bit convoluted when all I want to do is programmatically create a custom renderable series, so wanted to check that there isn’t a more straightforward approach.

0 votes

With the introduction off dotnet core we started converting our projects into docker container on linux for better management.
One off the tasks still to do is convert a job that sends charts screenshots by email, generated by scicharts WPF currently.

Now my question, is it possible to run scicharts on a linux docker container using dotnet core?
The idea is to generate the graph in memory take a screenshot and save and send that screenshot through an email.

  • Kevin Goos asked 2 months ago
  • last active 1 month ago
0 votes

I’v tried the latest version[6.5] of SciChart WPF suite and THEN I activated an older version [6.2] in the same computer. Of course, the serial key was left by an ex-colleague. It’s strange that I can activate ver 6.2 and succeed to get a run-time key. But the key cannot be recongnized by the program. It said I didn’t input a run time key in the render surface.
What’ worse, there are no entities rendered in the SciChartSurface. Just show a blank one.

This issue could be reproduced by the following steps:
1. use a trial version of the latest SciChart;
2. activate an older version using an expired license key. [royalty use, right?]

If I reinstall the OS, and use ver 6.2 directly, all works well.

We’ve brought several 6.2 s, I think reinstall OS is not a smart method to solve this. Could it be solved in a more easy way?

  • Niu mag asked 2 months ago
  • last active 2 months ago
0 votes

After upgrading to SciChart v6, we get this error when we open a page in our app that contains four SciChart graphs:

Error: Invalid window handle.
Stack Trace: at MS.Win32.UnsafeNativeMethods.GetWindowText(HandleRef hWnd, StringBuilder lpString, Int32 nMaxCount) | App.xaml.cs(736,17): Void b__24_2(System.Object, System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs) |

1 vote


I have some questions about the vertical slice modifier.

1: I have a scrollbar surface that is always visible and numerous tabs with numerous charts. The scrollbar binds to a common shared x visible range property. I have a vertical slice on the underlying surface that shares a common X1 binding to all the other charts too. The problem is that the scrollbar is over the top of the vertical slice, making it impossible to drag from the master surface. Is there a way to bring this to the front?

        <s:NumericAxis x:Name="AxisX" TextFormatting="0" DrawMajorGridLines="False" DrawMinorGridLines="False" DrawMajorBands="False" Visibility="Visible" AutoRange="Always"/>

        <s:NumericAxis DrawMajorGridLines="False" DrawMinorGridLines="False" DrawMajorBands="False" AutoRange="Always" Visibility="Collapsed"/>

            <s:VerticalSliceModifier Name="sliceModifier" ShowTooltipOn="Never">
                    <s:VerticalLineAnnotation Style="{StaticResource sliceStyle}" X1="{Binding SlicePosition, Mode=TwoWay}"/>



<s:SciChartScrollbar x:Name="scrollOverview" 
                     Axis="{Binding Source={x:Reference Name=AxisX}}" 
                     Style="{StaticResource ScrollbarStyle}"  
                     SelectedRange="{Binding SharedXVisibleRange, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">


2: I’m using a legend modifier that shows the latest live FormattedYValue for the series. This works great while it’s live but when I stop the data input and use vertical slive, is there a way to inject the y value of the vertical slice position into the legend value?
Currently I’m hiding the live values and showing the vertical slice tooltip instead which I feel is a little too messy for my liking. I’d rather just update the legend value.



        <!--  Binds to SeriesInfo.IsVisible to show and hide the series  -->
        <CheckBox Grid.Column="0"
                  Foreground="{Binding Stroke, Converter={StaticResource ColorToBrushConverter}}"
                  IsChecked="{Binding IsVisible, Mode=TwoWay}"
                  Style="{StaticResource DataSeriesCheckBoxStyle}"

        <!--  Series name (SeriesInfo.SeriesName)  -->
        <TextBlock Grid.Column="1"
                   Text="{Binding SeriesName}"
                   Foreground="{Binding Stroke, Converter={StaticResource ColorToBrushConverter}}"

        <!--  Live Value  -->
        <TextBlock Grid.Column="2"
                  Text="{Binding FormattedYValue}"
                  Foreground="{Binding Stroke, Converter={StaticResource ColorToBrushConverter}}"
                  Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=DataContext.ShowLiveValues, Converter={StaticResource BooleanToVisibilityConverter}}"


3: Is there a way that a single click on a surface could make the vertical slice jump to the click position? I’d also like to be able to double click drag the zoom/pan modifier instead of single click drag.

Thanks in advance,


1 vote

Good morning!
Our company would really like to purchase your license. But at start our boss wants to know whether we can create our own scrollbars and set our own zooming instead of yours. Could you please break it down for us? The matter is your heatmap already has scrollbars and setting for zooming, but we’d like to set ours.
Best wishes,
your potential customer:)

  • Man Vlad asked 2 months ago
  • last active 2 months ago
0 votes

Hi, i am evaluate your charting component and try Digital analyser performance demo and put rendering to software and it looks like its missing 99.9% of points even resampling is set off? so what iam doing wrong?

  • Ime Parsaa asked 2 months ago
  • last active 2 months ago
0 votes
  • Solar tang asked 2 months ago
  • last active 2 months ago
0 votes
0 answers

Hello, I have interest about scichart for my new project.

So, I reviewed your sample project source of wpf.

I have one question.

using Heatmapchart and annotations together,( such as line, box annotation),
How to get overlap area’s value or location point value.

0 votes
0 answers
0 votes


first I installed trial version for v6.0 testing! Today I got the WPF license of a previous colleague, I changed the email and the password within the account and activated the serial key. Then I created the runtime keys on the Web Account for v5 and v6. (see. image)

After inserting the key within my v5 application I got only 4 days evaluation is left! (see. image)

Scichart wizzard shows license is activated! (see. image)

Any idea what is going wrong?

c.u. Thomas

0 votes

The tick labels of a MATLAB log-scale plot can display as “10^X “.

But the log-scale axis in the examples has a style like “Num X 10 ^X”. Is it a way to customize these labels to remove “Num X” before “10^X”?

Furthermore, how to set which value could display a label? I just want the label with integer superscripts. For example, if the VisibleRange = (0.01,1000), only the following tick values :0.01,0.1,1,10,100,1000 can display an label.

If cannot remove the prefixed “Num X” easily, is it possible to make the labels show the value not using scientific numbers? (display 0.01,0.1,1,10,100,1000 directly)

0 votes


I’m trying to evaluate the reality of creating multiple realtime charts and I’m hitting a huge performance brick wall.

My application will have high speed streamed data coming in over ethernet. Currently I’m simulating this with a thread timer that updates 100 data objects at 60Hz. Screen data and chart updates I’ve got throttled to 30Hz but it’s still grinding my charts are still struggling. If I move the mouse pointer the charts freeze entirely until the mouse is still.

I want the end user to be able to choose any data object and chart it however they want. Adding charts and adding plots to charts etc. To enable this I’ve created a chart template as a user control and at runtime the charts are added to a panel on a tab control. Event one chart on one tab chugs though. Move the mouse over it and it locks up.

I have a single overview chart with a scrollbar over the top on the parent control. I need this to control the cursor (vertical line) and shared X visible range. Live data is Fifo limited to a 10 second range. All this works, just painfully slowly.

SharedXVisible range is MVVM bound. Renderable series is LineRenderableSeriesViewModel and data is pushed at 30Hz from a Data provider as per this tutorial:

CPU usage is sub 20%. Max frame rate is 30fps. Render priority doesn’t seem to make much difference, though “immediate” will lock up the whole app. I’m no expert at performance profiling but I’m not getting any clues from ReShaper dotTrace so far.

I tried creating a version that hand almost no binding and used codebehind to update the data. It didn’t seem to help. I’d rather not do this though as I have a lot of things working that I like such as vertical slice, annotations, templates etc.

I’ve got a list of all the live data on the right of the screen and it all updates rapidly, even while the mouse is moving and the charts are frozen.

I’m also using some Syncfusion controls and theming, if it matters.

I must be missing something obvious surely.

<!--  Define Chart  -->
        <s:SciChartSurface x:Name="chart" Grid.Row="0" Grid.Column="0"
                           RenderableSeries="{s:SeriesBinding RenderableSeriesCollection}"

            <!--  Define X and Y Axis  -->
                <s:NumericAxis AutoRange="{Binding AxisYRangeMode}" 
                               VisibleRange="{Binding AxisYVisibleRange}" />

                <s:NumericAxis AutoRange="{Binding AxisXRangeMode}" 
                               BorderBrush="{StaticResource BorderBrushGray}" 
                               VisibleRange="{Binding SharedXVisibleRange, Mode=TwoWay}" 

            <!--  Modifiers  -->
                        RubberBandStrokeDashArray="2 2">

                    <s:ZoomExtentsModifier IsAnimated="True"/>

                    <s:MouseWheelZoomModifier IsEnabled="True"/>

                    <s:XAxisDragModifier IsEnabled="True" DragMode="Pan"/>

                    <s:LegendModifier x:Name="legendModifier"
                                      LegendItemTemplate="{StaticResource CustomLegendTemplate}" 
                                      ShowLegend="True" ShowVisibilityCheckboxes="True"/>

                    <s:VerticalSliceModifier Name="sliceModifier">

                            <s:VerticalLineAnnotation Style="{StaticResource sliceStyle}" 
                                                      X1="{Binding SlicePosition, Mode=TwoWay}"/>


Thanks in advance,

PS. I’m trying to attach a screenshot but it keeps saying “Forbidden”.

0 votes

Application: SciChartTest.exe
CoreCLR Version: 4.700.21.35901
.NET Core Version: 3.1.18
Description: The process was terminated due to an internal error in the .NET Runtime at IP 00007FF9715936A8 (00007FF971540000) with exit code 80131506

  • YXJ YXJ asked 3 months ago
  • last active 2 months ago
0 votes

I have a chart with the CursorModifier setting on. This CursorModifier shows the y-coordinate values of all the curves, as tooltips on the graph surface.

Is it possible to programmatically get these values in C# code, so as to display them in another part of the window simultaneously?

  • Amarnath S asked 3 months ago
  • last active 3 months ago
0 votes

I am learning the official sample program: 2D Charts > Create Realtime Charts > 50-Channe EEG

I would like to modify this sample program to add a horizontal scrollbar and synchronize control of all channels, How do I do that?

The scrollbars need to be bound to an X-axis, but the charts in this example are in the ListBox and loaded from a template. How can I do this? Can you give me an example

  • hundun wds asked 3 months ago
  • last active 3 months ago
0 votes
0 answers

While drawing a series (real time updates) we use ctrl-alt-del to open “Task Manager”. Sometimes the chart content just dissapears. Has anyone seen this before? It would be an incredible effort to try to build an example application to upload given our current application usage of the chart.

0 votes

I have a chart with four graphs, (four curves). I would like to get the Y-coordinate values for each of these curves, at the point where the mouse is positioned or clicked.

This code :

Point mousePoint;    
double yValue = YAxis.GetDataValue(mousePoint.Y);

gets only one of the y values, only one double value. I would like all the four y values, four double values. How can I get all these four y values? Thanks.

  • Amarnath S asked 3 months ago
  • last active 3 months ago
0 votes

Hello SciChart-Team,
I noticed that the columns in Sparse Column3D and in Uniform Column 3D always start at the XZ surface. Is there any option or way to do so, that columns always use the zero value of the Y axis as their starting point. The visible range of the axes should correspond to the minimum and maximum Y values.

The current behavior can be reproduced in the example SciChart_UniformColumn3D:
If the VisibleRange of the Y-axis goes from 0 to 0.5 then the columns with negative values go down (see screenshot 1)
As soon as the VisibleRange of the Y-axis goes from -0.5 to 0.5, the columns look like this (Screenshot2) We need the columns to look like in Screenshot 1, only that the Y-axis is also visible downwards.

Can the starting point of the columns be changed?

Best regards

0 votes

Hello everybody,

I didnt find any answer to this. Is it possible to display data from year 0 to year 9999?

Until now i figuered out, that data from the year 834 to 9166 can be displayed. Beyond this range (eg to 9499) not data were displayed and the x-axis shows todays date.

Thanks for any help

0 votes


I am developing an MVVM WPF application and need to access the SelectedPointMarkers property of DataPointSelectionModifier from the ViewModel.

From looking at the DataPointSelectionModifier documentation ( I can see how you can get the X and Y coordinate values of a selected point in a view, by binding the PointMarkersSelectionModifier to a listbox.

However this doesn’t really help me, I need to get the coordinates of the SelectedPointMarker into a property inside the ViewModel that can be accessed, rather than just binding to a listbox in the view itself.

I’ve also looked at this similar post: (, but I had no luck getting Kenishis solution to work in my case.

How can i do this?


0 votes

I tested your 100million points tech demo and there was some weird fps showing component, which shows only pushed data rate to surface not actual FPS of that surface.

and i registered to Rendered event which shows same shit…

So where i can get actual FPS of that surface?

another question. how i turn off that “column” packing or what shit is down sampling is on in that demo. because if i push min to max – max to min data there it makes those blocks and does not show all the data, like it drops with 10million points setting 9.99 million points off in screen and only shows ~100-200 gigantic blocks….

0 votes

I would like to get the Y-value of a graph, corresponding to an X-value given as input.

Noting that the given X-value may not necessarily be within the input table of X versus Y values, meaning that some kind of interpolation may be needed to compute the Y-value, is there a SciChart API for getting this Y-value corresponding to a given X-value? Rather than me performing the interpolation through code. Thanks.

  • Amarnath S asked 3 months ago
  • last active 3 months ago
0 votes


in an UserControl I have a SciChartSurface with a XyScatterRenderableSeries. As Chartmodifier I use the DataPointSelectionModifier. This works like a charm with the mouse.
Unfortunately the intended use is to touch on the Monitor to select the DataPoints. This is not working.

First I had some cruel Windows settings in mind, but I tested with a Canvas, a touch does also trigger the mousedown event. But in the DataPointSelectionModifier neither the MouseDown nor the TouchDown event shows any reaction.
I also enabled the ReceiveHandledEvents Property, but also no Reaction.

Any hints?

the UserControl Xaml is attached

  • Toxi Co asked 3 months ago
  • last active 3 months ago
0 votes

I have a custom LabelProvider and TickProvider implemented for my X axis. In general the label culling works fine, but sometimes it shows the first tick label and starts culling with the second, and other times it starts with the first tick label immediately. I would like to always show the first tick label, and then cull from that point. Is this possible?

I found this post from 5 years ago, which indicates I would need to do the culling myself, but was hoping maybe there have been some updates on this?

0 votes

SciChart supports exporting to BitmapSource at a specific size, however, this feature does not work for us because we are using custom types for our chart annotations, and we get the following error:

“Please be advised that SciChart doesn’t handle serialization of objects with properties of interface type, collection type or custom type. You need to implement IXmlSerializable in such objects to have them handled properly.”

We haven’t found any example of how to implement IXmlSerializable in on custom type, and were wondering if some guidelines about what is needed to implement that interface could be provided.

The custom type that we are using is an AnnotatedPointMarker, which inherits the sci chart interface IPointMarker. It consists on a square, marking a data point, plus a text annotation on top, and a small line joining the square and the text.

  • malú Diaz asked 3 months ago
  • last active 3 months ago
0 votes

I have a chart with multiple series, and I would like to have the RolloverModifier behavior for all selected series, but with a single tooltip combining the values for all selected series rather than a separate tooltip per series (similar to the CursorModifier)

Is there a way to do one of the following?

  1. Merge the tooltips from the RolloverModifier?
  2. Only show the vertical crosshair from the CursorModifier, and snap the crosshair to the closest point in the series?

The RolloverModifier is closer to the behavior I want, the only change I would want is the merged tooltip.

0 votes
0 answers

Hi, so i need to create view like this :
enter image description here

this view was made with code behind, but i need to integrate it in multi pane view, the example of multipane i used:
but when im trying to use mvvm api to create mountain series, it place only one “step” on surface:
enter image description here

is there any difference in behavior between mvvm and code behind when using mountain series?

0 votes

Hi, SciChart:

I have an issue with the AxisTitle of 3D chart, Chinese text could not show correctly.
I can find similar issue as this, but with no solution.
It would be very kind to let me know if you have any solution.
Thank you!

  • Hugo Chu asked 4 months ago
  • last active 3 months ago
0 votes

We’re adding data to a data series form a background thread. We noticed that on some hardware (especially notebooks) the sci chart surface is not updated. Only a window rezise forces an screen update.

We enabled sci chart logging and debugging, but we didn’t see any suspicious logging output.
The data are being added within a block like this:
using (dataSeries.SuspendUpdates)

The strange thing is, that the x-Axis labeling gets updated (range change), but dataSeries Content won’t be drawn on some machines (more often on notebooks)

Do you have any idea what could lead to this behaviour?

Thanks in advance!

0 votes

I have been using the sci chart for more than 2 months and now I have a problem.
I have an x-axis and multiple y-axes, I want to make my chart scalable with custom values.
Now , I am manually bind major delta and minor delta to control the Axis scale and Autoticks property set to false.
Is there any other way to implement this functionality?

0 votes

I use stacked bar chart.
I want to know How to add lines between stacked columns/bars.

How to add lines between stacked columns/bars [Excel charts]

0 votes

Is it possible with SciChart to generate a Nonuniform Heatmap where the xRangeMapping values depend on the y value, and vice versa? We are mapping a spherical data series to a “flat” projection and would like to present this as a 2D heatmap. That is, we are converting latitude/longitude coordinates to Cartesian, then projecting the +Z hemisphere onto a 2D surface. I’ve attached a screenshot of the mapping of (lat, lon) to (x, y). Any suggestions are greatly appreciated!

0 votes

Is is possible to have a fixed aspect ratio for a 3D chart? I have found suggestions for 2D charts but not 3D. I want the X,Y,Z axes to all scale the same despite having different visible ranges. This means that the lengths of the axis should be different.

  • Myles H asked 4 months ago
  • last active 4 months ago
0 votes

I am using FastLineRenderableSeries with DateTimeAxis for X-axis.

And, I’m using mouse event to get X-axis value use clicked by mouse.

I’m using code below.

Put vertical line at chart where nearest X value exists, when mouse button clicked

But sometimes MouseButtonEventArgs.GetPosition takes time.

Code like this.

        private void chartSurface_PreviewMouseDown(object sender, MouseButtonEventArgs e)
                    if (isInitialized == false) return;


                    // Get mouse point
                    var mousePoint = e.GetPosition(chartSurface);


Performance analyze start:2021/09/09 10:55:47 chartSurface_PreviewMouseDown
Performance analyze check:2021/09/09 10:55:47 elapsed:00:00:00.0027280 e.GetPosition(chartSurface)

When slow
Performance analyze start:2021/09/09 10:55:48 chartSurface_PreviewMouseDown
Performance analyze check:2021/09/09 10:55:48 elapsed:00:00:00.4303424 e.GetPosition(chartSurface)

Is there any good way to get more good and stable performance?

0 votes

I am working on a chart that contains a number of StackedColumnRenderableSeries. Each series has a unique StackedGroupId set so all of the columns display side-by-side (“grouped” mode). I have attached a screenshot of what the chart currently looks like.

The Y-values in the chart are each an average of several collected data values, so I would like to be able to include the standard deviations as error bars drawn over each column, with the center at the top of the column and the high and low values set to center+SD and center-SD.

What would be the best approach to do this? The first thing that comes to mind for me is to create a new class StackedColumnRenderableSeriesWithErrorBars which derives from StackedColumnRenderableSeries, override InternalDraw, and add the drawing of error bars to InternalDraw after calling base.InternalDraw. Of course this would only work as long as the DataSeries is an HlcDataSeries instead of an XyDataSeries.

I also considered an approach that involved overriding/modifying FastErrorBarsRenderableSeries to essentially add a “grouped” mode, but I’m not sure there’s a good way to add that.

I believe the StackedColumnRenderableSeriesWithErrorBars approach will work, but I want to make sure I’m not missing a simpler approach that I could take instead. Any help would be greatly appreciated.

Thank you!

UPDATE: I have it working to the point where it draws the error bars, but the X coordinate is always in the middle of the group, rather than being centered in the middle of the column. I assume I need to make use of the Wrapper (IStackedColumnsWrapper) in the StackedColumnRenderableSeries to shift the X coordinate, but I’m having a little trouble figuring out exactly how. Here is what I have thus far:

public class StackedColumnRenderableSeriesWithErrorBars : StackedColumnRenderableSeries
    public bool ShowErrorBars { get; set; } = false;

    protected override void InternalDraw(IRenderContext2D renderContext, IRenderPassData renderPassData)
        base.InternalDraw(renderContext, renderPassData);

        // Now that the main drawing of the StackedColumnRenderableSeries is done, draw the error bars (if applicable).
        if (ShowErrorBars)
            // The resampled data for this render pass
            // Don't try to draw error bars if the PointSeries isn't an HlcPointSeries.
            if (renderPassData.PointSeries is not HlcPointSeries dataPointSeries)
            ICoordinateCalculator<double> xCalc = renderPassData.XCoordinateCalculator;
            ICoordinateCalculator<double> yCalc = renderPassData.YCoordinateCalculator;

            // Iterate over the point series
            for (int i = 0; i < dataPointSeries.Count; i++)
                // Get the values
                double x = dataPointSeries.XValues[i];
                double high = dataPointSeries.HighValues[i];
                double low = dataPointSeries.LowValues[i];

                // Transform to coordinate
                double xCoord = xCalc.GetCoordinate(x);
                double highCoord = yCalc.GetCoordinate(high);
                double lowCoord = yCalc.GetCoordinate(low);

                // TODO: Use Wrapper to transform the X coordinate based on where in the group this column is.

                // TODO: Set cap width based on column width
                double capWidth = 10;

                using IPen2D pen = renderContext.CreatePen(Colors.Black, true, 2);
                // Draw vertical line
                renderContext.DrawLine(pen, new Point(xCoord, highCoord), new Point(xCoord, lowCoord));
                // Draw top cap
                renderContext.DrawLine(pen, new Point(xCoord - (capWidth / 2), highCoord), new Point(xCoord + (capWidth / 2), highCoord));
                // Draw bottom cap
                renderContext.DrawLine(pen, new Point(xCoord - (capWidth / 2), lowCoord), new Point(xCoord + (capWidth / 2), lowCoord));
Showing 1 - 50 of 3k results