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

0 votes
0 answers

I need to set the style of the ellipse on my VerticalSliceModifier (and make it a custom color etc)

                <s:VerticalSliceModifier ShowTooltipOn="Never" Foreground="White" Name="sliceModifier">
                        <s:VerticalLineAnnotation X1="{Binding Number}" Style="{StaticResource sliceStyle}" />

However my series is created in code as a MountainRenderableSeriesViewModel and bound to the chart via SeriesBinding

        RenderableSeries="{s:SeriesBinding Series}"
        Annotations="{s:AnnotationsBinding Annotations}">

All the examples I’ve seen use the RolloverMarkerTemplate and define it under as a child node under BaseRenderableSeries or FastLineRenderableSeries, but I cannot find how to assign this to a series when it is defined in a ViewModel and assigned as above.

I’m new to SciChart and any help on this would be great.

0 votes
0 answers


I want to make an dot horizontal line in the chart surface.
How can I make this with HorizontalLineAnnotation?

Please help me

0 votes


Currently when we scroll the mouse pointer the zoom level is increasing/decreasing and when we click and drag the pan the chart. I want is when we scroll the chart should change the visible range (Pan chart), and clicking and selecting the area need to zoom like RubberBandXyZoomModifier. But I need to zoom only the X axis. Y axis should be the same as before zoom. Is this possible with SCI chart??

0 votes
0 answers

Good evening!
I wrote a test program with your library, the following situation arose:
On Windows 10 everything works fine, and on Windows 7 the following error (for 3D Charts)

XamlParseException: The invocation of the constructor on type 'SciChart.Charting3D.SciChart3DSurface' that matches the specified binding constraints threw an exception.

Stack Trace:
   at System.Windows.Markup.WpfXamlLoader.Load (XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml (XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
   at System.Windows.Markup.XamlReader.LoadBaml (Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadBamlStreamWithSyncInfo (Stream stream, ParserContext pc)
   at MS.Internal.AppModel.AppModelKnownContentFactory.BamlConverter (Stream stream, Uri baseUri, Boolean canUseTopLevelBrowser, Boolean sandboxExternalContent, Boolean allowAsync, Boolean isJournalNavigation, XamlReader & asynterObjectConver)
   at MS.Internal.AppModel.MimeObjectFactory.GetObjectAndCloseStream (Stream s, ContentType contentType, Uri baseUri, Boolean canUseTopLevelBrowser, Boolean sandboxExternalContent, Boolean allowAsync, Boolean isJournalNavigation & asamlOjectConstruction)
   at System.Windows.Navigation.NavigationService.GetObjectFromResponse (WebRequest request, WebResponse response, Uri destinationUri, Object navState)
   at System.Windows.Navigation.NavigationService.DoNavigate (Uri source, NavigationMode f, Object navState)
   at System.Windows.Navigation.NavigateQueueItem.Dispatch (Object obj)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall (Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen (Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Stack Trace:
   at A.QBB.DJ (UInt32 D, Boolean I, Boolean J)
   at SciChart.Charting3D.Interop.SCRTWPFInterop.TwisterInitEngine (UInt32 multiSampleAntiAliasing, Boolean _bUseDirectX9, Boolean _bD3D11UseLowerFeaturesLevel)
   at SciChart.Charting3D.Viewport3D.QB (Boolean D)
   at SciChart.Charting3D.SciChart3DSurface.KYB ()
   at A.VDB.BB (Action D, String I)
   at SciChart.Charting3D.SciChart3DSurface..ctor ()

I ran the SciChart WPF Examples Suite program and saw the same message.

Please tell me what to do (preferably without a new version, I read that only SciCharts 5 work stably for Windows 8 and below)

System Information:
Windows 7 64-bit, 8GB RAM, 1TB SSD, .NET Framework 4.5.2
SciCharts: Version

in version the situation is similar

0 votes
0 answers

Hi everyone!

I have a candlestick chart that uses SCIZoomPanModifier() so i can zoom and pan in the chart. I added a SCITooltipModifier() so i can inspect the individual data points. I noticed that by adding the toolTipModifier, that my pan and zoom stops working. I can’t figure out why. Would really appreciate if someone could tell me why or if i am missing some variable i need to set

1 vote

I’m looking for some direction on how to implement a modifier that reacts to interaction (mouse up/down etc) with a charts axis

  • User clicks on axis
  • Provide callback for side effect when clicked


0 votes

Hi, I’m looking for some pointers on how to implement the following:

  • User draws a selection on the chart (similar to rubber band modifier)
  • Annotation is drawn on the chart conforming to the users selection
  • Annotation is fixed relative to the data point (e.g. will scroll is the chart is panned etc)

Many thanks

0 votes

We are using NumericAxis for the y-axis and x-axis of a bar chart. The x-axis uses a LabelProvider (to convert integers to strings) and a TickLabelStyle (to rotate the label by 270 degrees so it is vertical going from the bottom to the top). We find that sometimes the y-axis is not drawn (however, it will be drawn if the chart is resized or re-painted).

The work-around to the problem is adding spaces to the front of the shorter labels so all of the labels are all the same length. However, this work-around does not work for every case.

Have you seen this issue before and is there a better solution? Thanks!

0 votes

I want to draw a spectrogram in WPF application and after searching I found your control. I downloaded your demo (trial version) and I would want to check if it completely meets my requirements. As starting I try to make zoom-in in your demo and I didn’t succeed.
Maybe you can tell me if it’s supported?
Thank you very much!

  • B H asked 3 days ago
  • last active 2 days ago
0 votes
0 answers

I have custom annotations built on the BoxAnnotation base class. The annotations have a rotation feature so that their content can be rotated.
RenderTransform is applied down to BoxAnnotation itself, so that it’s contents are rotated all along with the handlers. But resize grips are staying the same. Is it possible to pass the existing transform (the one applied to the content) also to the grips?

0 votes

We use WPF’s lineChart component to load a huge file. This file may contain a lot of curves, each curve contains 32M points. The point is of type float.
We found that the loading curve of the line chart is relatively slow. Through performance analysis, I think it is caused by XYDataSeries.Append(IEnumber x,IEnumber y).
Excuse me, how can I optimize. It would be better if there is a code example.
Looking forward to your reply.

  • wang peng asked 1 week ago
  • last active 7 days ago
0 votes

Working on an application that requires toggling between Linear and Logarithmic scales. I am using the JavaScript version of the library, and I see that there is a LogarithmicNumericAxis available in the WPF version but there is not one currently supported in the JS version.

Curious if there were any recommendations on how to go about hand rolling this type of functionality?

The application is doing realtime streaming of data points so need to be able to update existing values as well as handle incoming values.

0 votes
0 answers

Hi guys,

I just started using SCICHART. I am working my way through the provided tutorials and i noticed that when i add a SCITooltipModifier to the chart, all my other modifiers (zoom and pan and pinchzoom) stopped working. Is this normal? Because i want my chart to have zoom functions and show what datapoints are touched by a user.

Thanks in advance!

0 votes

I have a line chart and need to implement textAlign: left property for tickLabel on yAxis. I have found some way to do it on the forum, but it does not work in my case:
xAxis.setAxisTickLabelStyle(new AxisTickLabelStyle(Gravity.CENTER, Layout.Alignment.ALIGN_CENTER, 5, 0, 5, 0));
I get the error:
Alignment cannot be converted to int
But according documentation AxisTickLabelStyle class get 5 int arguments. Can you help me please how to solve it!

0 votes
0 answers


Today, I tried repository to my project. ColumnRenderableSeries3D is missing, so I was added by manually. But now I stuck.

I can’t change column width and color.

I know, Xamarin forms actually in plan, but somehow someone can help me, if I share my whole code?

I Attached my image.

0 votes

I see in the documentation that I need to set the boolean to true/false. But my question is how do I do this after the series has been rendered? I am using a custom legend and need to be able to toggle visibility.

    export default function Chart() {
  const [sciChartSurface, setSciChartSurface] = React.useState<SciChartSurface>();
  const [wasmContext, setWasmContext] = React.useState<TSciChart>();

  const dataSeriesMapRef = React.useRef<Map<keyof typeof chartData, XyDataSeries>>();

  React.useEffect(() => {
    (async () => {
      const { sciChartSurface, wasmContext } = await drawChart(theme, chartType);

    dataSeriesMapRef.current = new Map<keyof typeof chartData, XyDataSeries>();

    return () => sciChartSurface?.delete();
  }, [chartType]); // make sure the chart is initialized only once

  React.useEffect(() => {
    if (dataSeriesMapRef.current && sciChartSurface && wasmContext && !isLoading) {
      // const currentSeries = sciChartSurface.renderableSeries.asArray();
      // if (currentSeries) sciChartSurface.renderableSeries.clear();
      updateChartWithData(dataSeriesMapRef.current, theme, wasmContext, sciChartSurface, chartData, chartType);
  }, [theme, chartData, wasmContext, sciChartSurface, isLoading]);

  return (
    <div id="chart-container">
        dataSeriesMap={dataSeriesMapRef.current as Map<keyof typeof chartData, XyDataSeries>}
        sciChartSurface={sciChartSurface as SciChartSurface}
        wasmContext={wasmContext as TSciChart}
      <div id={DIVID} style={{ width: windowWidth, height: windowHeight }} />
      <ControlsBottom />


    export default async (theme: ExtendedTheme, chartType: string) => {
  const { sciChartSurface, wasmContext } = await SciChartSurface.create(DIVID);
  const isLightTheme = theme.palette.type === 'light';

  const xAxis = new NumericAxis(wasmContext);
  const yAxis = new NumericAxis(wasmContext);

  xAxis.labelProvider.formatLabel = (unixTimestamp: number) => {
    return new Date(unixTimestamp * 1000).toLocaleDateString('en-us', {
      month: 'short',
      year: 'numeric',
      day: 'numeric',

  yAxis.labelProvider = new CustomLabelProvider();


  if (chartType !== 'stack') sciChartSurface.chartModifiers.add(new RolloverModifier({ showRolloverLine: false }));
  sciChartSurface.chartModifiers.add(new ZoomPanModifier());
  sciChartSurface.chartModifiers.add(new ZoomExtentsModifier());
  sciChartSurface.chartModifiers.add(new MouseWheelZoomModifier());
  sciChartSurface.chartModifiers.add(new PinchZoomModifier());

  const rubberBandXyZoomModifier = new RubberBandXyZoomModifier({
    isAnimated: true,
    animationDuration: 400,
    easingFunction: easing.outExpo,
    fill: '#FFFFFF33',
    stroke: '#FFFFFF77',
    strokeThickness: 1,


  if (isLightTheme) sciChartSurface.applyTheme(new SciChartJSLightTheme());
  else sciChartSurface.applyTheme(new SciChartJSDarkTheme());
  return { sciChartSurface, wasmContext };


    export const updateChartWithData = (
  dataSeriesMap: Map<keyof typeof chartData, XyDataSeries>,
  theme: ExtendedTheme,
  wasmContext: TSciChart,
  sciChartSurface: SciChartSurface,
  chartData: ChartData,
  chartType: string
) => {
  const streamIds = Object.keys(chartData);
  const isLightTheme = theme.palette.type === 'light';

  if (isLightTheme) sciChartSurface.applyTheme(new SciChartJSLightTheme());
  else sciChartSurface.applyTheme(new SciChartJSDarkTheme());


  const stackedColumns: any[] = [];
  streamIds.forEach((s) => {
    const streamId = Number(s) as keyof ChartData;
    const streamSelectorId = streamId as keyof typeof chartData;
    if (dataSeriesMap.has(streamSelectorId)) {
      const xyDataSeries = dataSeriesMap.get(streamSelectorId);
      chartData[streamId].data.forEach((value) => {
        xyDataSeries?.append(value.timestamp, value.value);
    } else if (chartType === 'scatter') {
      const lineSeries = LineChart(dataSeriesMap, theme, wasmContext, chartData, streamSelectorId, streamId);

    } else if (chartType === 'bar') {
      const lineSeries = BarChart(dataSeriesMap, theme, wasmContext, chartData, streamSelectorId, streamId);
    } else {
      const lineSeries = StackedChart(dataSeriesMap, theme, wasmContext, chartData, streamSelectorId, streamId);


    export default (
  dataSeriesMap: Map<keyof typeof chartData, XyDataSeries>,
  theme: ExtendedTheme,
  wasmContext: TSciChart,
  chartData: ChartData,
  streamSelectorId: keyof typeof chartData,
  streamId: keyof ChartData
) => {
  const xyDataSeries = new XyDataSeries(wasmContext);
  dataSeriesMap.set(streamSelectorId, xyDataSeries);

  const obj = chartData[streamSelectorId];
  const stroke = obj.stroke as string;
  xyDataSeries.dataSeriesName = obj.label as string;

  chartData[streamId].data.forEach((value) => {
    xyDataSeries.append(value.timestamp, value.value);

  const lineSeries = new FastLineRenderableSeries(wasmContext, {
    strokeThickness: obj.strokeThickness,
    strokeDashArray: obj.strokeDashArray,
    dataSeries: xyDataSeries,
    animation: new WaveAnimation({ zeroLine: -1, pointDurationFraction: 0.5, duration: 1000 }),

  lineSeries.rolloverModifierProps.tooltipColor = theme.palette.background.paper;
  lineSeries.rolloverModifierProps.tooltipTextColor = theme.palette.getContrastText(stroke);
  lineSeries.rolloverModifierProps.markerColor = stroke;
  lineSeries.rolloverModifierProps.tooltipTemplate = (
    id: string,
    tooltipProps: RolloverModifierRenderableSeriesProps,
    seriesInfo: SeriesInfo,
    updateSize: (width: number, height: number) => void
  ) => {
    const { tooltipColor, tooltipTextColor, markerColor } = tooltipProps;
    const { formattedXValue, yValue, seriesName } = seriesInfo;
    const width = 192;
    const height = 60;

    updateSize(width, height);
    return `<svg width='${width}' height='${height}' class="root">
        <rect width="100%" height="100%" fill='${tooltipColor}' stroke='${markerColor}' stroke-width='2' />
         <svg width='100%'>
           <text dy="0" fill='${tooltipTextColor}'>
            <tspan x="15" y="20" class="title">${formattedXValue}</tspan>
             <tspan x="15" y="45" class="value">
              ${seriesName} | ${yValue.toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ',')}
  return lineSeries;


    let _chartData: any[] = [];
export default ({
}: {
  dataSeriesMap: Map<keyof typeof chartData, XyDataSeries>;
  theme: ExtendedTheme;
  wasmContext: TSciChart;
  sciChartSurface: SciChartSurface;
  chartData: ChartData;
}) => {
  const classes = useStyles();

  const chartRef = React.useRef<any>([]);
  const [legendData, setLegendData] = React.useState<any[]>([]);

  // _chartData = [..._chartData, ...values(chartData)];
  _chartData = values(chartData);
  _chartData = uniqby(_chartData, 'groupId');
  _chartData = uniqby(_chartData, 'streamId');

  React.useEffect(() => {
    if (_chartData.length > 0 && !isEqual(chartRef.current, _chartData)) {
      chartRef.current = _chartData;
  }, [_chartData]);

  const onClick = React.useCallback(
    (item) => {
      // const xyDataSeries = dataSeriesMap.get(160);
      const _legendData = => {
        if (x.groupId === item.groupId) x.isVisible = !x.isVisible;
        return x;


  return (
    <div className={classes.root}>
      <Paper variant="outlined" square>
        { any) => (
          <div className={classes.listItem} key={item.streamId}>
              onClick={() => onClick(item)}
              style={{ color: item.stroke }}
              {item.isVisible ? <VisibilityIcon /> : <VisibilityOffIcon />}

Inside the onClick function is where I was trying to change visibility for both series. I’ve tried multiple things without any luck. I assumed it would be as simple as getting the correct series, setting the visible property and maybe a re-render if that is even needed? Like I said any advice on a better way of handling this is welcome

0 votes
0 answers

Sometimes when I call annotation.setIsHidden in a surface with RenderSurfaceGl, not works.
what should I do?

0 votes


I want to draw small circle and label to identify of accident position on the chart like as sell point on the sample picture.
But I don’t know how can I implement this on the code.

Please help me!

  • Bruce Juli asked 2 weeks ago
  • last active 1 week ago
0 votes


I want to draw small circle and label to identify of accident position on the chart like as sell point on the sample picture.
But I don’t know how can I implement this on the code.

Please help me!

  • Bruce Juli asked 2 weeks ago
  • last active 1 week ago
0 votes
0 answers

Only one machine we’re seeing this below…

Exception Info: System.Security.SecurityException
at System.Diagnostics.EventLog.FindSourceRegistration(System.String, System.String, Boolean, Boolean)
at System.Diagnostics.EventLog.SourceExists(System.String, System.String, Boolean)
at System.Diagnostics.EventLogInternal.VerifyAndCreateSource(System.String, System.String)
at System.Diagnostics.EventLogInternal.WriteEntry(System.String, System.Diagnostics.EventLogEntryType, Int32, Int16, Byte[])
at System.Diagnostics.EventLog.WriteEntry(System.String)
at System.Diagnostics.EventLogTraceListener.Write(System.String)
at System.Diagnostics.EventLogTraceListener.WriteLine(System.String)
at System.Diagnostics.TraceInternal.WriteLine(System.String)
at System.Diagnostics.Trace.WriteLine(System.String)
at SciChart.Drawing.VisualXcceleratorRasterizer.VisualXcceleratorRenderSurface..cctor()

0 votes

Fairly simple question: How do you export or save a chart as an image in the JS library?

0 votes

sciChartSurface.chartModifiers.clear() is getting error on the application. Its working on previous version and getting error on 1.4.1557.

0 votes
0 answers

Hi all,
I am using the iOS SciCharts version to implement a heatmap series in my application. I am testing out the heatmap by providing a test series of random 100 zValues that range from 1-200. The Heatmap with the stops below just appears blue (see image). My suspicion is that either I am not updating the zValues correctly or the andStops is too low. Can anyone provide insights on what could be the issue?

//Test zValues
let SpectTestArray: [Double] = [ 12,  14, 68, 137, 164, 124, 124, 122, 162, 128, 45, 129,  40,  91,  53, 159,  77,  59,   0,  91, 92,  73,  77,  67, 163,  69, 149, 115,  17,  85, 119, 129, 186,  93,  80,  34, 159, 115,  65, 181, 159,  67, 152,  29,   6, 162,  51, 196, 186, 122, 114, 171, 159, 116,  20, 102,   4, 174, 144, 160, 89,  51,  89, 130, 172, 186,  40, 174,  20, 120, 88, 151, 127, 167,  10,  49, 198,  67, 184, 197, 152, 193, 196, 163,  18,  77,  17, 143, 124, 115, 1, 115, 126,  22,  35,   6,  58, 121,  77,   5]

let colors = [UIColor.fromARGBColorCode(0xFF00008B)!, UIColor.fromARGBColorCode(0xFF6495ED)!, UIColor.fromARGBColorCode(0xFF006400)!, UIColor.fromARGBColorCode(0xFF7FFF00)!, UIColor.yellow,]

CH1HeatMapRenderableSeries = SCIFastUniformHeatmapRenderableSeries()
        CH1HeatMapRenderableSeries.dataSeries = CH1SpectDataSeries
        CH1HeatMapRenderableSeries.minimum = 0.0
        CH1HeatMapRenderableSeries.maximum = 200.0
        CH1HeatMapRenderableSeries.colorMap = SCIColorMap(colors: colors, andStops: [0.0, 0.2, 0.4, 0.6, 0.8, 1.0])

        var Spectvalues = SCIDoubleValues(capacity: 100)

        for n in 0...SpectTestArray.count-1 {
//        print(Spectvalues)
        CH1SpectDataSeries.update(z: Spectvalues)
0 votes

See image.
The plot can switch between numeric, datetime and and logarithmic axis. It only happens for the logarithmic one. They all share the same point marker code.

0 votes

Hello SciChart Team,

We are using SciChart v6.1.1.13156 since about a year in our main software that is used by customers worldwide.
The SciChartSurface-Style that all charts use is configured to use the VisualXcceleratorEngine (in DirectX9 mode, as some customers had problems with invisible charts on specific older intel graphics chipsets).

In the last weeks we had several inqiuiries from customers (from Japan, Korea), that the charts in their software do not update when adding new values, the chart is only updated when minimizing and then showing the window again. Another issue was that the X-Axis was updated fluently but the chart (line-chart) only very irregularly (about 2-3 times in a 30sec measurement which provides a value every 20msec). All of these customers use new laptops with 11th generation Intel CPUs. One of these had an Nvidia-graphics card installed an when forcing to use it with our software the charts worked perfectly.

We added an option in our software to Enable Software Rendering (Highspeed Renderer) to increase compatibility when having the above mentioned issues as we thought that it has to do with the VisualXcceleratorEngine, but this did not change anything unfortunately.

We want (and have) to solve this problem as this breaks the functionality of our software with some of our biggest customers.

Best regards,
Oliver from Cologne Germany

0 votes
0 answers

SplineLineRenderableSeries doesn’t render curved graph line properly in Swift , it renders stepped line for the data series .For reference please check the Screenshot attached ,ECG line(Green) rendered as stepped line (Marked by rectangle). Let me know anything I need to update in my code

Please find below the code for initialisation go the graph and updating the graph same. I am updating graph realtime with same DataSeries.

  1. Graph initialisation code

    func init_ECG_Chart()
    //Remove Theme From Chart By Apply & Remove & Change Border color
    SCIThemeManager.applyTheme(to: self.ecg_Chart_Surface, withThemeKey: SCIChart_Bright_SparkStyleKey)
    SCIThemeManager.removeTheme(byThemeKey: SCIChart_Bright_SparkStyleKey)

    self.ecg_Chart_Surface.isOpaque = false
    self.ecg_Chart_Surface.backgroundColor = .clear
    self.ecg_Chart_Surface.renderableSeriesAreaBorderStyle = SCISolidPenStyle(color: .clear, thickness: 0)
    let lineSeries = SCISplineLineRenderableSeries()
    lineSeries.strokeStyle = SCISolidPenStyle(color: ecgSelectedColor, thickness: 2.0)
    lineSeries.dataSeries = ecgLineDataSeries

    // lineSeries.resamplingMode = SCIResamplingMode_None //Resampling off
    // lineSeries.resamplingMode = SCIResamplingMode_Auto //Resampling off

    let xAxis = SCINumericAxis()
    xAxis.axisAlignment = .bottom
    xAxis.drawLabels = false
    xAxis.drawMajorGridLines = false
    xAxis.drawMinorGridLines = false
    xAxis.drawMajorTicks = false
    xAxis.drawMinorTicks = false
    let yAxis = SCINumericAxis()
    yAxis.axisAlignment = .left
    yAxis.drawLabels = false
    yAxis.drawMajorGridLines = false
    yAxis.drawMinorGridLines = false
    yAxis.drawMajorTicks = false
    yAxis.drawMinorTicks = false
    yAxis.autoRange = .never   //Stop auto ranging axis
    yAxis.visibleRange = SCIDoubleRange(min: -32, max: 96)

    // yAxis.visibleRangeLimit = SCIDoubleRange(min: -32, max: 96)

    yAxis.growBy = SCIDoubleRange(min: 0.2, max: 0.2)
    SCIUpdateSuspender.usingWith(self.ecg_Chart_Surface) {
        self.ecg_Chart_Surface.xAxes.add(items: xAxis)
        self.ecg_Chart_Surface.yAxes.add(items: yAxis)
        self.ecg_Chart_Surface.renderableSeries.add(items: lineSeries)
        //self.ecg_Chart_Surface.chartModifiers.add(items: SCIZoomExtentsModifier(),SCIPinchZoomModifier())

    } //Init ECG

  2. Graph updation code

    func update_ECG_Chart(xValues:SCIDoubleValues,yValues:SCIDoubleValues)

    SCIUpdateSuspender.usingWith(self.ecg_Chart_Surface) {
        self.ecgLineDataSeries.append(x: xValues, y: yValues)
      //  self.ecg_Chart_Surface.zoomExtents()

    } //Update ECG

0 votes

Hello Scichart Team again,

I’m trying to replicate anything like this (check Screenshot_2.png).

I can update the scichart background, but I just wanted to have a single color in the background, but it seems that there is an overlap of colors in X / Y as I show in the next printscreen (check Screenshot_3.png)

How I can solve this?

Waiting for feedback.

Many thanks,

Pedro Cruz

  • Pedro Cruz asked 3 weeks ago
  • last active 2 weeks ago
0 votes

Hello dear SciChart team

I am using your SciChart in my WPF project very well. It’s very wonderful. And I have one problem how to implement this chart using SciChart. I made a chart to show the market data real time and want to make a background be shaded on when special time frames.
I tried on some ways but can’t solve that problem. I attached the image file that I want to make.

Please help me.


  • Bruce Juli asked 3 weeks ago
  • last active 3 weeks ago
0 votes

Hello dear SciChart team,

Our customer has a new security program that starts on Dlls that are copied into a directory during runtime. At the moment has the customer the problem that this security program starts on an AbtLicensingNative.dll. This DLL is in the following directory:
% USERPROFILE% \ AppData \ Local \ SciChart \ Dependencies \ v. \ x64.

For this reason the following questions:
Is this DLL safe?
Why is the dll only copied at runtime? Is there another solution for this?

best regards

0 votes

I have a LineRenderableSeriesViewModel, and I have a feature that allows the user to swap the dataseries with another. When this occurs I replace the dataseries property with the relevant dataseries.

However I find that when I do this, the chart does not always autorange to the where the new dataseries is. I can’t see the new plot when this occurs. I believe doesn’t happen if the new dataseries is being appended to, but only if the new dataseries that is chosen is not being appended.

0 votes

RenderableSeries Hit-Test is not working as expected. Some bugs on the the RenderableSeries Hit-Test. Distance between two points are less then its working most of the time and getting the isHit variable getting true. But the distance is high then the lines near to the point only getting the isHit true. I am attaching the image when the red marked area is working fine and the blue marked area not working.

0 votes


We have multiple sets of data that we’d like to display as a Stacked Column. The problem is that our data is jagged, meaning each series may not have a value for every value on the x-axis (it’s a time series by day).

Is there any way to present this data without having to merge all the x-values in every dataset? These a very large sets and it just does not seem to be efficient to do this.



0 votes

I have a problem with the 3D surface chart. I have used the 3D example from the Example Tutorial as an example. As soon as I make xSize and ySize larger than 128, a gap appears in the respective axes.
Is it possible that these sizes are limited? Or have I made a mistake?

In the attachment you will find the resulting pictures.
The good one has an xSize and ySize of 128 and the bad one 129.

0 votes

Hello Scichart team,

it’s possible to rotate yAxis (and put them horizontally), and adding some break lines if I have more than 1 word? Like:

Waiting for feedback.

Many thanks,

Pedro Cruz

  • Pedro Cruz asked 4 weeks ago
  • last active 3 weeks ago
0 votes

i recently saw documentation about compositeannotation in wpf

do you have same version for android?
how to combine all annotation as one annotation?

0 votes

Can I use the 30 day trial version to run a newly built exe file from the “exported” Visual Studio solution files which then runs into the “Sorry! You need to have a license to use SciChart.” run-time error? How can I find and activate the 30 day license to avoid this run-time error?

0 votes
0 answers

My chart is dynamic, adding data from the right side all the time, and scrolling the chart to the left. Now the chart can manually scroll to the right indefinitely, but there are many blank areas on the right side. What can I do to limit the range of scrolling to the right? Is there any way to limit the zoom ratio to prohibit the chart from scrolling to the right indefinitely?

0 votes

My chart is dynamic, adding data from the right side all the time, and scrolling the chart to the left. Now the chart can manually scroll to the right indefinitely, but there are many blank areas on the right side. What can I do to limit the range of scrolling to the right? Is there any way to limit the zoom ratio to prohibit the chart from scrolling to the right indefinitely?

  • WU GUANGYU asked 1 month ago
  • last active 1 month ago
0 votes

I have a method that adds a marker line to my chart. The issue I have it that calling this method results in a non-blocking async call but in other code where I call this, I want to access the markers immediately after adding the marker. Is there a way to call Annotations.Add synchronously?

public void CreateNewMarker(DateTime markerDate, Color color)
MainChart.Annotations.Add(new VerticalLineAnnotation()
Stroke = new SolidColorBrush(color),
StrokeThickness = 1,
X1 = markerDate,
StrokeDashArray = new DoubleCollection(new List { 6, 3 }),
IsEditable = false
catch (Exception ex)
Tracing.TraceError(piuModule, className + “.CreateNewMarker()”, “Error during the CreateNewMarker() method”, ex);

Other Method
calls CreateNewMarker(0
Access new marker Annotations by index, MainChart.Annotations[markerIndex].X1


0 votes

Hi, I just want to make sure

everything inside com.scichart.charting.visual will be considered as VIEW in MVVM pattern right?


0 votes

In Scichart Android version, ICategoryLabelProvider.transformDataToIndex(Date var1); accept date as parameter

but at version, int transformDataToIndex(double var1); it accept double?

then how to convert date to double?

and another question.

  1. how set start tick axis in category date axis?
    what i see here first tick of x axis always come with data, not like date axis which data can adapt their position itself.

  2. how to set time frame in date axis like category date axis?

  3. without scichart builder i cannot set time frame in categorydateaxis

0 votes

I have a 3D chart where we are loading .obj files. If I set the opacity on the element in Xaml it works. However, we want to be able to adjust the opacity with a slider. When we bind the opacity to the value of the slider the opacity does not change. Is there something else we need to do to get the opacity to change when the slider value changes? The slider has a minimum of 0 and a maximum of 1.

<s3D:SciChart3DSurface x:Name="ThreeDChart"
    <s3D:NumericAxis3D />
    <s3D:NumericAxis3D />
    <s3D:NumericAxis3D />
    <object:ObjectModel3D x:Name="BrainMesh"
                          Opacity="{Binding BrainOpacity}"
                          Position="0.5, 0.5, 0.5"
                          Scale="5, 5, 5"
                          Source="{StaticResource Brain}" />
        <s3D:OrbitModifier3D />
        <s3D:ZoomExtentsModifier3D />

Thank you!

0 votes

I’m evaluating chart libraries to my next project and I’m trying to do a simple chart like the one in the attached image.
It was actually very easy to do it using MPAndroidChart, however it’s been hard to do a simple task like put a label aligned with the column… I did take a look into the SciChart sample application, but the application just uses numeric labels…
Can someone provide some guidance of how to do this?

0 votes

I want to apply a Style that has removed the horizontal lines of the CursorModifier.

private void ExecuteLoadedCommand(StackGraphViewer parameter)
        if (root == null) root = parameter;

        root.sciChart.ViewportManager = _scrollManager;

        // Remove CrosshairsHorizLine
        root.sciChart.MouseMove += RemoveCrosshairsHorizLine;

    private void RemoveCrosshairsHorizLine(object sender, MouseEventArgs e)
        Line crosshairsHorizLine = root.sciChart.ModifierSurface.Children.OfType<Line>().FirstOrDefault(line => line.X1.CompareTo(0d) == 0);
        if (root.sciChart.ModifierSurface.Children.Contains(crosshairsHorizLine))
            root.sciChart.MouseMove -= RemoveCrosshairsHorizLine;

I want to solve it in View XAML, not ViewModel Code.

What should I do?

0 votes

I want to express a different graph according to the state of the button.

            <Style TargetType="s:SciChartSurface">
                    <DataTrigger Binding="{Binding Path=IsEnabled, ElementName=swStack}" Value="True">
                        <Setter Property="YAxes" Value="{Binding StackYAxisList}"/>
                        <Setter Property="RenderableSeries" Value="{s:SeriesBinding StackRenderableSeriesList}"/>
                    <DataTrigger Binding="{Binding Path=IsEnabled, ElementName=swStack}" Value="False">
                        <Setter Property="YAxes" Value="{Binding TotalYAxisList}"/>
                        <Setter Property="RenderableSeries" Value="{s:SeriesBinding TotalRenderableSeriesList}"/>

I get an error saying that s:SeriesBinding is not supported.

What should I do?

0 votes

I am using an old version of Scichart

Mainly I have no issue but I need an advice .

I am rendering scatter series and heatmap series and I don’t want to face performance issues. So as far as I knew I am able to render unsorted data , but internally does the Scichart do any sorting algorithm for this data ? by mean does Scichart order the data internally in anyway?

Since I am afraid to lose time when having millions of records to be rendered in realtime.
And do you suggest to sort the data before sending it to Scichart and how may this help us? because I am rendering single point and I don’t get it why do I need to sort the data for better performance ?

in addition , if you are sorting inside your library is there anyway to skip these sorting algorithms?
I appreciate if you can explain !

Thank you in advance

1 vote


I have multiple SciChartSurfaces aligned using the HorizontalGroupHelper. I also need to have multiple y-axes in the charts. I was hoping to use set the margin on each y-axis, but when I do, the upper axis is drawn outside the window. Is there a work-around?


<Window x:Class="ScichartTest.MainWindow"

        <ColumnDefinition />
        <ColumnDefinition />

    <!--  Chart left  -->
    <s:SciChartSurface s:HorizontalGroupHelper.HorizontalChartGroup="group">

                AxisTitle="x" />

                AxisTitle="Left y1"
                Id="LeftY1" />
                AxisTitle="Left y2"
                Id="Lefty2" />
                AxisTitle="Left y3"
                Id="LeftY3" />


    <!--  Chart right  -->

                AxisTitle="x" />

                AxisTitle="Right y1"
                Id="RightY1" />



enter image description here

0 votes
0 answers

We’re using Xamarin.Forms. We were using iOS build 5019 and Android build 4441 and we had a custom DatelabelProvider set on our X axis in both platforms which worked fine.

However after updating to latest builds (5022 and 4459), the provider’s FormatLabel (FormatLabelFormatted on Android) isn’t being called and the default label formatting is applied.

0 votes

.Net 6 MAUI preview has been released, so may i know scichart support MAUI ?
Can we use Xmarin charts directly to MAUI app ?

Can you provide some examples for MAUI ?

  • Abhilash R asked 2 months ago
  • last active 1 month ago
0 votes

I have added a real time value legend to my chart. This is working well, based upon examples I have found here at the forum and in the SciChart documentation.

My question is this:
How can I position this new legend (includes series color, series name and series YValue ) so that it is in relation to a single or multiple Y axis’s displayed. In other words I like it to positions itself in relation to the YAxis so it does not overwrite it, and stays on the plotting area.

Appreciate the help
Thank you

Showing 1 - 50 of 3k results