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

0 votes
0 answers
24 views

Dear SciChart Team:

I have a time chart of an oscilloscope application, and new values will be added to the curve over time.

I hope that after adjusting the scales of the X-axis and Y-axis, you can use this perspective to view the canvas, and like AutoRangeType.Always, you can watch the newly added values, but will not change the scale of the X-axis and Y-axis.

Is there any way to achieve this function? Thanks for your suggestion.

0 votes
39 views

Hello, I’m looking to do something similar to your example titled “WPF Chart Vertically Stacked YAxis”, but I’d like to be able to hide a data series and associated axis based on check boxes, and have the remainder of the series fill the empty space.

Do you have any example of something like this?

Thanks.

0 votes
59 views

I have a line chart using an XYDataSeries<DateTime, double> and set the FifoCapacity on the data series to 600. I am sampling the data at a sample rate of 100 ms, which equates to 1 minute of data. When I set the visible range to 2 minutes I can see more data then 1 minute’s worth. In fact, the data series actually has about 1080 points in it. I have verified that the FifoCapacity is in fact 600 on the series.

As new data comes in it is being appended:

_dataSeries.Append(valueSample.Time, valueSample.Value);

Does the chart only overwrite old data if memory constraints require it to? Not sure what is going on.

0 votes
103 views

Hi,
I am evaluating Scichart for high speed real time application. According to ‘Performance tips and tricks’, I enabled VisualXcceleratorEngine in my ScichartSurface. My application was working pretty well when I was using Scichart version 6.0. But when I upgraded it to Scichart version 6.1, my application was crashed every time I run it. I have to disable DirectX engine to run my application.

It seems there is a problem with this file:
..\AppData\Local\SciChart\Dependencies\v6.1.1.13136\x86\VXccelEngine2D.dll

Any thought here?

0 votes
74 views

Hi,

I am using Scichart 6.1 in WPF application. I want to access ScichartSurface in my view model to call some commands like ZoomExtentsModifier or SuspandUpdate. So I created all controls like surface, Axis, Series and annotations in my code according to your example ‘Creating your First SciChartSurface’.
My question is how can I attach this view model to my view [*.xaml file] ? I couldn’t find any example of xaml file in this case.

Regards

0 votes
82 views

Hi,

I have a surface with two x-axes and one y-axis. I am plotting 2 lines, which both have a numerical axis for their x-axis. I would like to be able to pan the lines so that I can align them for further analysis. However, I want the scaling on the two x-axes to stay identical. I have implemented the panning, which was straight forward using the XAxisDragModifier DragMode=”Pan”, so that is sorted. However, the scaling on the two axes is not identical, as each of the two lines have values for different x-ranges. This means that when I overlay them, one is more stretched out relative to the other.

Is there a way to lock the scaling for x-axes? See image below, I would like the red lines to be in sync, and equally big. So that 5 cm on the first x-axis is an equal amount of time as 5 cm on the second x-axis

Thank you,
-Lars

0 votes
110 views

Hi,

I am using gcAllowVeryLargeObjects in my code to support .Net arrays that are more than 2GB in size, they are usually a 2D array.
Would SciChart be able to plot this data?

  • Rakshith M asked 3 weeks ago
  • last active 2 weeks ago
0 votes
131 views

Hi,
I’m experimenting with the LegendModifier and want to control which RenderableSeries are shown via the “LegendItemTemplate” approach. The idea is to add a specific tagging class to the RenderableSeries.DataSeries.Tag and use the content inside the LegendItemTemplate which I define in the Window.Resouces.

The tagging Class:

public class DataSeriesTag
{
    public string LegendText { get; set; }
    public bool ShowLegend { get; set; }
}

The LegendItemTemplate:
<Window.Resources>


<Grid.ColumnDefinitions>

</Grid.ColumnDefinitions>

            <!--<CheckBox Width="16" Margin="5,0,0,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                IsChecked="{Binding RenderableSeries.IsVisible, Mode=TwoWay}"
                Visibility="{Binding RenderableSeries.DataSeries.Tag.ShowLegend, Converter={dxmvvm:BooleanToVisibilityConverter}}" />-->

            <s:PointMarker Grid.Column="1" Margin="5,0,0,0" Width="40" Height="10" VerticalAlignment="Center" HorizontalAlignment="Center"
              DataContext="{Binding RenderableSeries}"
              DeferredContent="{Binding LegendMarkerTemplate}"
              Visibility="{Binding ShowSeriesMarkers, RelativeSource={RelativeSource AncestorType=s:SciChartLegend}, Converter={dxmvvm:BooleanToVisibilityConverter}}" />

            <TextBlock Margin="5,0,5,0"
     Grid.Column="2"
     HorizontalAlignment="Left"
     Text="{Binding RenderableSeries.DataSeries.Tag.LegendText}" />

        </Grid>
    </DataTemplate>
</Window.Resources>

As long as I declare the SciChartSurface.ChartModifier in XAML, it works perfect.
The proplem raises when I bind the ModifierGroup to a ViewModel Property and try to build the LegendModifier there. How can I assign the LegendItemTemplate in the ViewModel?:

legendModifier = new LegendModifier(){
            ShowLegend = true,
            ShowVisibilityCheckboxes = false,
            LegendItemTemplate = ??????
        };
        TheModifiers.ChildModifiers.Add(legendModifier);

Kind regards
Martin

0 votes
125 views

Hello,
I am currently using the HighQualityRenderSurface (as seen here: https://support.scichart.com/index.php?/News/NewsItem/View/30) to replace some dynamically drawn maps in an application. I’m wondering if there is a way to make a blended/ gradient brush that can be drawn onto this surface. The application currently uses a three color blended brush drawn onto a WPF canvas.

Edit: Added images as an example of what we are trying to achieve.

zoomed out

zoomed in

1 vote
166 views

Hello,

I just purchased this library 2 days ago, and my first impression is WOW! Very happy with my purchase for my small team. That being said I have a unique design requirement and I’m struggling to figure out how to resolve.

Our app utilizes a cursor indicator in the form of a vertical line, this indicator is used as a visual reference and synced across multiple charts. The behavior needs to be similar to how a RollOver modifier works, however the vertical line needs to stay in place, when the user is not “Mouse – Left Down”. Because the RollOver indicator goes away when not hovering over the chart, I decided to make a custom mouse modifier.

Essentially I created a “vertical line annotation” then disabled the dragging (want it to be moved only by mouse cursor movement, and not requiring the user to drag). Made a custom mouse modifier, where OnMouseModiferDown I set a bool flag, then OnMouseMoodiferMove I get the mouse cursor position and update the X1 binding of the cursor, finally OnMouseModiferUp I set the bool flag to false.

The Issue: With my custom mouse modifier the Vertical Line annotation lags the mouse position, It almost looks like there is some sort of smoothing applied to the movement? Is there a way to turn this effect off or reduce it? Here is a link to the behavior to highlight what I’m seeing.
Video of Behavior

My Code is given below.

Xaml

<local:mouseMove ExecuteOn="MouseMove"/>

<s:VerticalSliceModifier IsEnabled="True">
    <s:VerticalSliceModifier.VerticalLines>
        <s:VerticalLineAnnotation IsEditable="False" LabelPlacement="Axis" ShowLabel="False" X1="{Binding cursorPoint Mode=TwoWay}" Style="{StaticResource sliceStyle}" />
    </s:VerticalSliceModifier.VerticalLines>
</s:VerticalSliceModifier>

C#, Mouse Modifier (MouseMove)

public class mouseMove : XAxisDragModifier
    {
        private bool moveCursor { get; set; }
        public override void OnModifierMouseDown(ModifierMouseArgs e)
        {
            if (e.MouseButtons == MouseButtons.Left)
            {
                moveCursor = true;
            }
        }
        public override void OnModifierMouseUp(ModifierMouseArgs e)
        {
            if (e.MouseButtons == MouseButtons.Left)
            {
                moveCursor = false;
            }
        }
        public override void OnModifierMouseMove(ModifierMouseArgs e)
        {
            if ((Keyboard.Modifiers == ModifierKeys.Control))
            {
                //This is my keybind for the RuberBandXY, ignore this mouse event if Ctrl + Left Mouse Down
            }
            else
            {
                if (moveCursor)
                {
                    // Get mouse point
                    var mousePoint = e.MousePoint;

                    mousePoint = ParentSurface.RootGrid.TranslatePoint(mousePoint, ParentSurface.ModifierSurface);
                    var xDataValue = ParentSurface.XAxis.GetDataValue(mousePoint.X);
                    ParentSurface.Annotations[0].X1 = xDataValue;
                }

            }
        }
    }
0 votes
132 views

Some customers are reporting the following exception when upgrading to SciChart v6.1.0.13075 or 6.1.1.13136 via NuGet

SciChartSurface didn't render, because an exception was thrown:
Message: Unable to find an entry point named 'CSharp_ResamplingArgs_InputSize_set' in DLL 'VXccelEngine2D'.

Stack Trace: at cnh.zlm(HandleRef dnc, Int32 dnd)
at SciChart.Charting2D.Interop.ResamplingArgs.set_InputSize(Int32 value)
at SciChart.Charting2D.Interop.ExtensionMethods.ToResamplingArgs(ResamplingParams resamplingParams, ResamplingMode resamplingMode, ResamplingArgs resamplingArgs)
at SciChart.Data.Numerics.PointResamplers.ExtremeResamplerBase`2.Execute(IList`1 xColumn, IList`1 yColumn, ResamplingParams resamplingParams, ResamplingMode resamplingMode, IPointSeries pointSeries)
at SciChart.Charting.Model.DataSeries.XyDataSeries`2.ToPointSeriesInternal(ResamplingParams resamplingParams, ResamplingMode resamplingMode, IPointResamplerFactory factory, IPointSeries lastPointSeries)
at SciChart.Charting.Model.DataSeries.DataSeries`2.ToPointSeries(ResamplingParams resamplingParams, ResamplingMode resamplingMode, IPointResamplerFactory factory, IPointSeries lastPointSeries)
at uqw.ttd(AxisCollection bzg, IRenderableSeries bzh, RenderPassInfo bzi, IPointResamplerFactory bzj, IDataSeries& bzk, IndexRange& bzl, IPointSeries& bzm, Int32& bzn, Boolean bzo)
at uqw.ttb(ISciChartSurface bzd, Size bze)
at uqw.RenderLoop(IRenderContext2D renderContext)
at SciChart.Charting.Visuals.SciChartSurface.DoDrawingLoop()

It could be a different exception message but ‘Entry Point not Found in VXccelEngine2D.dll’ is the similar message shown in the exception.

Solution below

0 votes
215 views

We have big trouble with SciChart 6.1. First was the initial loading time. But there is this async loading workaround.
Now if we try to render a simple (not large) signal into the chart, it hangs in the rendering loop. No exception, high CPU usage.
Any solution for this issue?
enter image description here

It works on some, but it fails on most of our PCs/Laptops.

  • Tobias asked 1 month ago
  • last active 4 weeks ago
0 votes
140 views

Hello,

I have a list in wich I have another 3 sublists (values for XAxis, values for YAxis, values for ZAxis: x[i] and y[i] and z[i] are the coordinates for a point). With these values I want to create a SurfaceMeshRenderableSeries3D, but what I tried it doesn’t work.
Can you help me with some code?
Thank you!

Here is what I tried:

      int xSize = ListOfPoints.Count;
        int zSize = ListOfPoints.Count;

        var xSteppings = new double[xSize];
        var zSteppings = new double[zSize];

        for (int i = 0; i < xSize; i++)
        {
            xSteppings[i] = ListOfPoints.ElementAt(i).XValue;
            zSteppings[i] = ListOfPoints.ElementAt(i).ZValue;
        }

        var dataSeries = new NonUniformGridDataSeries3D<double>(xSize, zSize, xIndex => xSteppings[xIndex], zIndex => zSteppings[zIndex])


        for (int xi = 0; xi < xSize; xi++)
        {
            for (int zi = 0; zi < zSize; zi++)
            {
                dataSeries[zi, xi] = ListOfPoints.ElementAt(zi).YValue;
            }
        }
        DataSource_SurfaceMesh.DataSeries = dataSeries;
  • asked 1 month ago
  • last active 3 weeks ago
0 votes
166 views

I am using the CategoryDateTimeAxis to fetch data in minute resolution for a few days and then append realtime data in one second resolution to it. Since the CategoryDateTimeAxis uses equidistance calculations I was wondering if it is possible to override that behaviour somehow? I.e. can I control the distance calculation somehow?

I am currently switching to CategoryDateTimeAxis because DiscontinuousDateTimeAxis provides to much of a performance hit for our use case.

0 votes
181 views

Hi,

I am developing a real-time application which needs multiple charts in some tab Items. I create a user control contain a ScichartSurface and RenderableSeries for each chart. Then apply this user Control as a list item of a list box in each tab. I inspired from 50-Channel EEG example.

The problem is the performance is too low and my tab items have a considerable delay on changing. So if I use one surface per tab item and use stacked YAxis to show series then does it make any difference?

Any insight would be much appreciate.

  • maryam zoj asked 1 month ago
  • last active 1 month ago
0 votes
155 views

I use a simple box annotation to highlight a section candlesticks on a chart. Currently I only see how to set this annotation X1 and X2 to Major grid units (ie 1,2,3,4,5). Since I would like to have this box annotation fully highlight only the desired candlesticks, is there a way to offset this X1 and X2 position by 0.5 so that it would include only (and fully) the desired candles? Apologies if I have missed this in the docs somewhere but I have been unable to find anything to accomplish this.

EDIT: For my x axis I am using a CategoryDateTimeAxis

Thank you.

  • Leland asked 1 month ago
  • last active 1 month ago
0 votes
213 views

After installing the SciChart Licensing Wizard (for current user only), the Wizard hangs and does not display anything, which means I cannot activate the my license.

0 votes
213 views

My application is crashing only on one machine. I’ve narrowed it down to SciChart as my application doesn’t crash when I’ve removed SciChart from the UI.

At first I assumed it was potentially related to the visual accelerator engine; however, I removed that from my surface style and switched back to HighQualityRenderSurface and it still crashes.

It should be noted that I have not yet displayed anything on the SciChartSurface when this happens.

Here is what I initially had.

<Style x:Key="SurfaceStyle" TargetType="s:SciChartSurface">
    <Setter Property="Background" Value="White"/>
    <Setter Property="Padding" Value="0,0,10,0"/>
    <Setter Property="s:VisualXcceleratorEngine.IsEnabled" Value="True" />
    <Setter Property="s:VisualXcceleratorEngine.DowngradeWithoutException" Value="True" />
    <Setter Property="s:VisualXcceleratorEngine.FallbackType" Value="{x:Type s:HighQualityRenderSurface}" />
    <Style.Triggers>
        <Trigger Property="componentModel:DesignerProperties.IsInDesignMode" Value="False">
            <Setter Property="s3d:DirectXHelper.TryApplyDirectXRenderer" Value="True" />
            <Setter Property="s3d:DirectXHelper.FallbackType" Value="{x:Type s:HighQualityRenderSurface}" />
        </Trigger>
    </Style.Triggers>
</Style>

This is after I removed the Xccelerator.

<Style x:Key="SurfaceStyle" TargetType="s:SciChartSurface">
    <Setter Property="Background" Value="White"/>
    <Setter Property="Padding" Value="0,0,10,0"/>
    <Setter Property="RenderSurface">
        <Setter.Value>
            <s:HighQualityRenderSurface />
        </Setter.Value>
    </Setter>
</Style>

Any help is greatly appreciated. This is a time sensitive problem. Thanks.

0 votes
0 answers
164 views

My application is an oscilloscope application. It is a two-dimensional graph, the X axis is TimeSpanAxis, and the Y axis is NumericAxis.
When I add data to the DataSeries of the curve, if the value is too large, such as: double.MaxValue, double.Minvalue, etc., the curve will be presented as an approximate value, as shown in the figure(Input: 9007199254740992; Display: 9007199254740990).

What should I do to accurately display the maximum or minimum values, such as: double.MaxValue (1.7976931348623157E + 308), ulong.MaxValue (18446744073709551615), … etc.

0 votes
188 views

Hi Team,

I am using LineRenderableSeries chart to display XyDataSeries. I want to show a bucket-looking chart with below points, but looks like chart doesn’t accept the same X point with different Y points. I’ve attached an picture of how I want it look like. Currently I set the date slightly different on the joint point (for example, instead of 2y: 300, I set 2y+1d: 300), but that’s not ideal. Could you please advise?

2y : 200
2y: 300
5y: 300
6y: 300
6y: 200

Thanks,
Xin

  • XIN YU asked 1 month ago
  • last active 1 month ago
0 votes
201 views

Hi,
I am working on an application that shows real-time data on different charts. I used SciChartSurface for each series.
The problem is when the application starts initialization of charts it takes too much time.
How can I make it fast.
Thanks

  • neda asked 2 months ago
  • last active 1 day ago
0 votes
223 views

hello

I have a list box where each item is a chart, if I put the chart seperately from this list box the rubberband zoom works fine, but the same chart in the list box item cannot zoom (does not show rubberband)

Could you please advise?

Thanks

  • el yunque asked 2 months ago
  • last active 1 month ago
0 votes
210 views

Is it possible to define custom extents such that when I call ChartSurface.ZoomExtents() it will zoom out to where I want instead of the default found by the chart?

I have a requirement that dictates the amount of padding around each axis. I use a custom ViewPortManager and override the OnCalculateNewYRange() and OnCalculateNewXRange() functions to set the range.

I use the ZoomState to decide whether to allow zoom to do its job versus my dictation of the range when the zoom has been to extents. This unfortunately shows an awkward bump between the 3 states.

  1. Zoomed
  2. Zoomed to extents
  3. Zoomed to my custom range

Between 2 and 3 there is a “bump” as the chart resizes. Imagine the user double clicks to ZoomExtents and the animation from zoomed goes out to extents and then suddenly does the same from extents to my custom range. It’s really awkward and I don’t want to lose the animation as it’s a very nice user experience instead of an abrupt switch from zoomed to extents.

So, it would be great to set the extents in my derived ViewPortManager such that a ZoomExtents zooms directly to my custom extents instead of the default.

0 votes
229 views

Hi
I am creating an real-time application that handles multiple series in one surface. The series number is variant from 2 to 10. I use “RenderableSeries” then bind it to ObservableCollection. But I can not update DataSeries during run time and it throw an error? is it possible at all?
Thanks

  • neda asked 2 months ago
  • last active 2 months ago
0 votes
214 views

Hi,

I would like to ask whether it is possible to reduce the default margins around the 3D plane cube on 3D plots? I realize that I can change it by relocating the camera and with ZoomModifier but, once the ZoomExtents() is called, the margins are restored back. I attached here a screenshot with the green line showing the margin area that I mean.

Thank you in advance!

  • corvex asked 2 months ago
  • last active 2 months ago
0 votes
218 views

Hi,

I’m actually working on new wpf application using Scichart and I’m wondering how to plot only XAxis and YAxis without labels and without gridlines.

Here is my code, I cannot not figure out what is missing to do that:

            <s:SciChartSurface.YAxis>
                <s:NumericAxis VisibleRange="{Binding ...}"
                               MajorGridLineStyle="{Binding ...}"
                               TickLabelStyle="{Binding ...}"
                               MajorDelta="{Binding ...}"
                               MinorDelta="1"
                               AutoTicks="False"
                               AxisAlignment="Left"
                               DrawMajorGridLines="false
                               DrawMinorGridLines="false"
                               DrawMajorBands="false"
                               DrawMajorTicks="false"
                               DrawMinorTicks="false"
                               DrawLabels="false"
            </s:SciChartSurface.YAxis>


        <Style x:Key="NoGraphGridLineStyle" TargetType="s:NumericAxis">
            <Setter Property="Visibility" Value="Collapsed" />
        </Style>
0 votes
255 views

I’ve verified it steps thru the code as I would expect; however, it only ever zooms in further. The intent of this modifier is to only zoom out when the mouse is dragged up and left. I.e.

Mouse down
Drag up/left
Mouse up

    class ZoomOutModifier : ZoomExtentsModifier
{
    double _x;
    double _y;
    MouseButtons _button = MouseButtons.None;

    public override void OnModifierDoubleClick(ModifierMouseArgs e)
    {
        // do not zoom to extents on a double click
        e.Handled = true;
    }

    public override void OnModifierMouseDown(ModifierMouseArgs e)
    {
        base.OnModifierMouseDown(e);

        // where was the mouse button on the chart surface?            
        _x = e.MousePoint.X;
        _y = e.MousePoint.Y;

        // which button was clicked?  we're only going to zoom 
        // out on a left button click.
        _button = e.MouseButtons;
    }

    public override void OnModifierMouseUp(ModifierMouseArgs e)
    {            
        // are we left and up from where the mouse was clicked?
        if (MouseButtons.Left == _button &&
            e.MousePoint.X < _x &&
            e.MousePoint.Y < _y)
        {
            using (var updater = ParentSurface.SuspendUpdates())
            {
                ParentSurface.ZoomExtents();
                ParentSurface.ResumeUpdates(updater);
            }

            e.Handled = true;
        }
        else
            base.OnModifierMouseUp(e);
    }
}
0 votes
232 views

Is it possible to set different color to axis ticks and axis title.
In 2D-Chart i did it by changing the style of DefaultTickLabel:

<Style x:Key="NumericAxisForMvvm" TargetType="axis:NumericAxisForMvvm">

  <Setter Property="FontSize" Value="12" />
  <Setter Property="FontFamily" Value="Arial" />
  <Setter Property="FontWeight" Value="Bold" />
  <Setter Property="TickTextBrush" Value="Red" />

  <Setter Property="TickLabelStyle">
    <Setter.Value>
      <Style TargetType="s:DefaultTickLabel">

        <Setter Property="FontSize" Value="16" />
        <Setter Property="FontWeight" Value="Normal" />
        <Setter Property="FontFamily" Value="Courier New" />
        <Setter Property="Foreground" Value="Blue" />

        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="s:DefaultTickLabel">
              <ContentControl Content="{Binding}"
                              ContentTemplate="{TemplateBinding ContentTemplate}"
                              IsTabStop="False" 
                              Foreground="{TemplateBinding Foreground}" 
                              FontFamily="{TemplateBinding FontFamily}"
                              FontSize="{TemplateBinding FontSize}"
                              FontWeight="{TemplateBinding FontWeight}"/>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </Setter.Value>
  </Setter>
</Style>

Same procedure seems doesn’t work for 3D-Charts.
How can i achieve this?
Is that currently possible?

Best Regards
Silvester

0 votes
0 answers
207 views

I looked at this thread but it doesn’t help me.

https://www.scichart.com/questions/wpf/dynamically-clearing-legends-from-the-legendmodifier

I have problem where an item is still shown in the legend even though no series is currently displayed on the chart.

For example.

  1. The SciChart RenderableSeries dependency property of my chart surface is a property in my view model named “Measurements”, I.e. ObservableCollection of IRenderableSeries.
  2. An ObservableCollection of another class named “ExampleList” is also in my view model.
  3. In a data grid elsewhere in the application a user selects 3 rows. The “ExampleList” collection now has 3 items in it. Part of the setter for that property is to call “Measurements.Clear()” and then follow that with a “Measurement.Add(newseries)” 3 times.
  4. When a user selects an individual item in the data grid that contains no points that could be displayed on the chart I only call “Measurements.Clear()” and I don’t subsequently called “Measurements.Add()”

My issue is that the legend never clears and shows the last series that was selected before selecting this new item which shouldn’t even be in the chart. It’s behaving as if the chart were not cleared; although I have verified that I definitely am calling “Measurements.Clear()”

0 votes
0 answers
190 views

I want to change the colors of the individual columns of a UniformGridDataSeries3D by applying a PaletteProvider to the RenderableSeries. I’m trying to set the PaletteProvider of a ColumnRenderableSeries3DViewModel with UniformGridDataSeries3D as DataSeries to MyPaletteProvider (see bellow, currently only returning blue) but i get the following exception when the graph is rendering:

SciChart3DSurface didn’t render, because an exception was thrown:
Message: Index was outside the bounds of the array.

Stack Trace: at SciChart.Charting3D.RenderableSeries.ColumnUniformGridSceneEntityHelper.GetPoints3DData(ColumnRenderableSeries3D renderableSeries, IPointSeries3D pointSeries, IRenderPassInfo3D rpi, Point3DXyzData& data)
at SciChart.Charting3D.RenderableSeries.BaseRenderableSeriesSceneEntity3D`3.UpdateScene(IRenderPassInfo3D rpi)
at SciChart.Charting3D.Primitives.BaseSceneEntity1.Update()
at SciChart.Charting3D.Primitives.BaseSceneEntity1.Update(Single fDeltaTime)
at SciChart.Charting3D.Interop.SCRTSceneEntity.SwigDirectorUpdate(Single _fDeltaTime)
at SciChart.Charting3D.Interop.VXccelEngine3DPINVOKE.SCRTSceneEntity_UpdateSwigExplicitSCRTSceneEntity(HandleRef jarg1, Single jarg2)
at SciChart.Charting3D.Interop.SCRTSceneEntity.Update(Single _fDeltaTime)
at SciChart.Charting3D.Primitives.BaseSceneEntity1.Update(Single fDeltaTime)
at SciChart.Charting3D.Interop.SCRTSceneEntity.SwigDirectorUpdate(Single _fDeltaTime)
at SciChart.Charting3D.Interop.VXccelEngine3DPINVOKE.SCRTCallbacks_OnUpdate(HandleRef jarg1, Single jarg2)
at SciChart.Charting3D.Interop.SCRTCallbacks.OnUpdate(Single _fDeltaTime)
at SciChart.Charting3D.Viewport3D.DrawFrameInternal(ISceneDescriptor sceneDescriptor)
at SciChart.Charting3D.Viewport3D.FillSource(ISceneDescriptor sceneDescriptor)
at SciChart.Charting3D.Viewport3D.DrawFrame(IRenderPassInfo3D rpi)
at SciChart.Charting3D.SciChart3DRenderer.RenderLoop()
at SciChart.Charting3D.SciChart3DSurface.DoDrawingLoop()

public class MyPaletteProvider : IFillPaletteProvider3D
    {
        public void OnAttach(IRenderableSeries3D renderSeries)
        {

        }

        public void OnDetached()
        {

        }

        public Color? OverrideFillColor(IRenderableSeries3D series, int index, IPointMetadata3D metadata)
        {
            return Colors.Blue;
        }
    }  
0 votes
216 views

Hello,

I just enabled the new high precision ticks on LogarithmicNumericAxis feature.
The two screenshots show the same data once with high precision ticks disabled and once with high precision ticks enabled.

Is it possible to get the typical loagithmic scaling of the ticks like in the screenshot with high precision ticks disabled ?

Best regards
Benjamin

0 votes
229 views

Hello, I am trying to use the default DataPointSelectionModifier on a line chart with a DataSeries of type XyDataSeries<‘DateTime, double’> as in the example suite HERE . It seems to work fine out of the box if the DataSeries is of type XyDataSeries<‘double, double’>. Am I missing something as to why this modifier is not working with the former data type?

Relevent code is:

CustomChart.xaml:

<sci:SciChartSurface x:Name="customChart"
                         Grid.Column="0">
        <sci:SciChartSurface.RenderableSeries>

            <sci:FastLineRenderableSeries Name="lineRenderableSeries"
                                          Stroke="#4AB748"
                                          StrokeThickness="1">
                <sci:FastLineRenderableSeries.PointMarker>
                    <sci:EllipsePointMarker Fill="#138A43" />
                </sci:FastLineRenderableSeries.PointMarker>
                <sci:FastLineRenderableSeries.SelectedPointMarker>
                    <sci:EllipsePointMarker Fill="#C4ECA0"
                                            Width="12"
                                            Height="12" />
                </sci:FastLineRenderableSeries.SelectedPointMarker>
            </sci:FastLineRenderableSeries>
        </sci:SciChartSurface.RenderableSeries>

        <!--  Create an X Axis with GrowBy  -->
        <sci:SciChartSurface.XAxes>
            <sci:CategoryDateTimeAxis DrawMajorBands="True"
                                      GrowBy="0.1, 0.1"
                                      AxisAlignment="Bottom" />
        </sci:SciChartSurface.XAxes>

        <!--  Create a Y Axis with GrowBy.-->
        <sci:SciChartSurface.YAxis>
            <sci:NumericAxis DrawMajorBands="False"
                             GrowBy="0.5, 0.5"
                             CursorTextFormatting="$0.00"
                             TextFormatting="$0.00" />
        </sci:SciChartSurface.YAxis>

        <!-- Setting IsEnabled enables or disables a modifier in the Toolbar -->
        <sci:SciChartSurface.ChartModifier>
            <sci:ModifierGroup>

                <sci:DataPointSelectionModifier Name="PointMarkersSelectionModifier"
                                                IsEnabled="True"
                                                SelectionFill="#B1B5B2B2"
                                                SelectionStroke="#009E9C9C" />
            </sci:ModifierGroup>
        </sci:SciChartSurface.ChartModifier>


    </sci:SciChartSurface>

CustomChart.xaml.cs:

private void OnDataSeriesChanged(DependencyPropertyChangedEventArgs e)
    {
      var inputDataSeries = e.NewValue as XyDataSeries<DateTime, double>;

        var dataSeries = new XyDataSeries<DateTime, double>();

        dataSeries.Append(inputDataSeries.XValues, inputDataSeries.YValues, dataSeries.YValues.Select((x) => new MyMetadata { IsSelected = false }));

        lineRenderableSeries.DataSeries = dataSeries;

    }

MyMetaData.cs:

public class MyMetadata : IPointMetadata
{
    public event PropertyChangedEventHandler PropertyChanged;
    public bool IsSelected { get; set; }
}

With this implementation I am able to individually select datapoints and select multiple datapoints with ctrl/shift but am unable to drag select multiple datapoints.

If, as in the example suite, I change the default XAxis to:

<sci:SciChartSurface.XAxis>
            <sci:NumericAxis 
                             DrawMajorBands="True"
                             GrowBy="0.1, 0.1"
                             CursorTextFormatting="0" />
        </sci:SciChartSurface.XAxis>-->

and of course change all the relevant datatypes in CustomChart.xaml.cs from XyDataSeries<‘DateTime, double’> to XyDataSeries<‘double, double’> everything behaves as expected.

Am I missing something to make the DragSelection work out of the box with the former data type without having to make a custom modifier?

Thank you in advance for your help.

  • Leland asked 2 months ago
  • last active 2 months ago
0 votes
252 views

Hi!

I am trying to implement a custom ViewportManager for a SciChart3DSurface, but the overridden methods, such as OnCalculateNewXRange are not called after I assign the custom ViewportManager to a surface. The minimalistic version of my code is:

public class Test3DViewportManager : ViewportManager3DBase
    {
    public Test3DViewportManager() : base()
        {           
        }

    public override void OnParentSurfaceRendered(ISciChart3DSurface sciChartSurface)
        {
        base.OnParentSurfaceRendered(sciChartSurface);
        }

    protected override IRange OnCalculateNewXRange(IAxis3D xAxis)
        {
        return base.CalculateAutoRange(xAxis);
        }


    protected override IRange OnCalculateNewYRange(IAxis3D yAxis, RenderPassInfo3D renderPassInfo)
        {
        return base.CalculateAutoRange(yAxis);
        }


    protected override IRange OnCalculateNewZRange(IAxis3D zAxis, RenderPassInfo3D renderPassInfo)
        {
        return base.CalculateAutoRange(zAxis);
        }
    }

I tried to assign the custom manager is two different ways in code-behind, none of them work:

var VM= new Test3DViewportManager();
SciChart.ViewportManager = VM;  // way 1
VM.AttachSciChartSurface(SciChart); // way 2    

I would appreciate any suggestion, thanks in advance!

  • corvex asked 2 months ago
  • last active 2 months ago
0 votes
0 answers
218 views

Dear Devs,

I found a very strange case.

I have a measure file.
It has some values (that I want to show in chart).
Once I load the file’s values into the chart, it shows it correctly.
After I load it again, it shows just a part of the line.

No matter how many times i repeat it, it went totally random, sometimes OK, sometimes not.
I debug the values, they are always the same.

Could you help me how to solve it?

Bests,
Roland

0 votes
263 views

Sorry for the simple question and please point me to the correct place if I have missed this in the docs.

I am just trying to easily bind the DataSeries of a FastLineRenderableSeries as a custom UserControl.

In my MainView I have placed the custom control:

<customUserControls:CustomLineChart x:Name="CustomLineChart1"
                                                    Grid.Column="1"
                                                    Grid.Row="0" />

My CustomLineChart.xaml is:

 <Grid>
    <sci:SciChartSurface x:Name="simpleLineChart">
        <sci:SciChartSurface.RenderableSeries>
            <sci:FastLineRenderableSeries x:Name="lineRenderSeries"
                                          Stroke="Blue"
                                          StrokeThickness="2" >
            </sci:FastLineRenderableSeries>
        </sci:SciChartSurface.RenderableSeries>

        <!--  Create an X Axis with GrowBy  -->
        <sci:SciChartSurface.XAxis>
            <sci:NumericAxis DrawMajorBands="True"
                             GrowBy="0.1, 0.1" />
        </sci:SciChartSurface.XAxis>

        <!--  Create a Y Axis with GrowBy. Optional bands give a cool look and feel for minimal performance impact  -->
        <sci:SciChartSurface.YAxis>
            <sci:NumericAxis DrawMajorBands="True"
                             GrowBy="0.5, 0.5" />
        </sci:SciChartSurface.YAxis>
    </sci:SciChartSurface>

    <!--ect.....-->

</Grid>

I am trying to figure out how to bind the UserControl lineRenderSeries.DataSeries property in my MainViewModel

So something like this in my MainView.cs:

public partial class MainView : Window
{
    public MainView(MainViewModel vm, IMainFactory mainFactory)
    {
        InitializeComponent();
        DataContext = vm;

        CustomLineChart1.lineRenderSeries.DataSeries = vm.SomeXyDataSeries;
    }
}

Which works if the SomeXyDataSeries is set prior to this object getting created and does not update because it is not bound

Or something like this in my MainView.xaml

<customUserControls:SimpleLineChart x:Name="CoreStrategyPLGraph"
                                                    Grid.Column="1"
                                                    Grid.Row="0" 
                                                    DataSeries="{Binding SomeXyDataSeries}"/>

I have just been having an issue understanding how to properly set up this binding on the UserControl.

Any input/clarification on how to do this would be great!

Thank you,

  • Leland asked 2 months ago
  • last active 2 months ago
0 votes
240 views

Hello.

I’m now using SCIChart WPF v5.4.0.12119 at Windows10.
I have paid SC-WPF-2D-PRO licence that is already activated, and using it.

Now I want to updated SCIChart version to v6.1.0.13075.
I downloaded v6.1 installer and installed it.

When I checked the SciChart Licensing Wizard it requires log in.
(I’m using PC at network with proxy server, old Licensing Wizard has proxy setting view, but new one don’t have it…so, I’m going to use offline style)

Do you need re-activateing licence from this wizard?
And for it, do you need deactivating current licence from web page?

0 votes
275 views

Hello

I tried to create a TickProvider for DateTimeaxis followed by https://www.scichart.com/documentation/win/current/webframe.html#Axis%20Ticks%20-%20TickProvider%20and%20DeltaCalculator%20API.html .

My custom provider (CustomDateTimeTickProvider) exactly same that found in url above.

<s:SciChartSurface x:Name="sciChartrtr" 
      s:ThemeManager.Theme="Chrome"
      RenderableSeries="{s:SeriesBinding ChartSeries, UpdateSourceTrigger=PropertyChanged}">
         <s:SciChartSurface.Resources>
             <vm:CustomTickProvider  x:Key="CustomTickProvider"/>
         </s:SciChartSurface.Resources>

         <s:SciChartSurface.XAxis>
               <s:DateTimeAxis DrawMajorBands="True" TickProvider="{StaticResource CustomTickProvider}" AutoTicks="True"  TextFormatting="yyyy.MM.dd" AxisTitle="Idő"/>
          </s:SciChartSurface.XAxis>
          <s:SciChartSurface.YAxis>
                <s:NumericAxis AutoRange="Always" DrawMajorBands="True" AxisAlignment="Left" GrowBy="0.02, 0.02" AxisTitle="{Binding SecondYAxisTitle}"/>
           </s:SciChartSurface.YAxis>
           <!-- YAxis, RenderableSeries omitted for brevity -->
 </s:SciChartSurface>

But my xaxis is empty. What do I wrong?
Thank you very much

0 votes
234 views

Hello

Sorry for my poor english 😐 I would like to achieve that showed on the attached sketch. I would like to align left side of columns to the tick and not the center.
And I would like to ask, is there any solution for different bar width? So the second bar on draw starts at 2019-08-01 18:00 and ends at 2019-08-02 00:00 but third bar is twice as width as second.
Thank you.

0 votes
209 views

I’m using XyDataSeries<Timespan, double> to plot to my chart.

I want to show elapsed time at chart X-Axis label like below

ex) If Timespan value is 1day 2hour 30min 40sec

Default label style: 02:30:40

Label style I want: 26:30:40

How can I set like that?

0 votes
282 views

Hello

I have an XyDataSeries<DateTime, double> series, and it has filled some data. In runtime I would like to change a DateTime value on X axis (olddatetime to newdatetime). How can I do that?
Now I use solution that I remove the old XY data belongs to olddatetime and add a new XY data with newdatetime and same value. This solution works fine, but I don’t know is there a simpler solution for this?
I didn’t find any update method of XyDataSeries class which can updates an X value.
I tried the simple : XValues[olddatetimeidx] = newdatetime but problem is that SciChart surface doesn’t refresh, and I didn’t find any method that refresh all XY data.
Thank you

0 votes
254 views

Hi

I am creating a simple scatter chart, below is the code in ViewModel for getting data series, mostly from sample code.
My scenario is to be able to add this chart on a button click, so it can add multiple of this chart.
Issue is first time I click the button, dataSeries.Append works very slow, like it takes 10 seconds to pass that line, my laptop has very fast cpu and a lot of ram, so it is not hardware problem. After I added first chart, all subsequent charts added very fast, including different type of charts.
Could you please advise? thanks.

    private XyDataSeries<double, double> GenerateDataSeries(double startsAt, double[] data)
    {
        var dataSeries = new XyDataSeries<double, double>();
        var xValues = GeneratexValues(startsAt, data.Length);
        dataSeries.Append(xValues, data); <=====================
        return dataSeries;
    }
  • el yunque asked 2 months ago
  • last active 2 months ago
0 votes
227 views

I have two AxisCollections:

private AxisCollection _xAxes = new AxisCollection();
public AxisCollection XAxes
{
    get => _xAxes;
    set 
    {
        _xAxes = value;
        OnPropertyChanged("XAxes");
    }
}

private AxisCollection _yAxes = new AxisCollection();
public AxisCollection YAxes
{
    get => _yAxes;
    set
    {
        _yAxes = value;
        OnPropertyChanged("YAxes");
    }
}

Both are binded to XAxes and YAxes of SciChartSurface respectively:

   <s:SciChartSurface Grid.Row="0"
                   Grid.RowSpan="3"
                   Grid.Column="0"
                   Grid.ColumnSpan="2"
                   Panel.ZIndex="0"
                   RenderableSeries="{Binding RenderableSeries}"  
                   ChartTitle="{Binding ChartTitle}"
                   XAxes="{Binding XAxes}"
                   YAxes="{Binding YAxes}">

I try to add axes using following method:

    public void AddAxes()
{
    XAxes.Add(new NumericAxis() { AxisTitle = "X Achse"});
    XAxes.Add(new NumericAxis() { AxisTitle = "X Achse 2" });
    YAxes.Add(new NumericAxis() { AxisTitle = "Y Achse", AxisAlignment = AxisAlignment.Left});
}

Addition of a second X axis causes an exception:

“SciChartSurface didn’t render, because an exception was thrown: Message: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.”

what means “An item with the same key has already been added”. I assume (though not sure) it happens because all of the created axes have the same x:Key attribute.

How can I fix this issue?

1 vote
229 views

I have NUnit unit tests that use Typemock for mocking objects. The tests worked using previous versions of SciChart, but upgrading to version 6.0 and 6.1, the tests now fail with the error shown in the TestOutput.png image.

I have attempted to included a sample project zip file that the issue can be recreated by running the unit test in Class1Test.cs. I am getting an error every time I try to upload the file: Failed uploading file. Error code: 1. Maybe there is another way for me to get you this zip?

Any ideas on how to fix this would be greatly appreciated

  • Doug Witt asked 3 months ago
  • last active 2 months ago
0 votes
290 views

Out WPF application is currently targeting .net 4.7.2 and we don’t have plan to upgrade to .net core soon. The sample code requires .net core, we would like to know if you could provide a set of sample code targeting .net 4.7.2.

Thanks.

  • el yunque asked 3 months ago
  • last active 3 months ago
0 votes
257 views

I want to click on the data points and get the x and y co-ordinate values stored somewhere, as I further need the data point values. I have already searched for many examples and codes but I’m not able to implement this in my Windows form application (C#). There are some good examples are given on dataPoint selection but I want to use that in my c# code, can you please provide me a example of this in c# instead of xaml.
I have already referred to the below links but not able to find a solution to my problem.

https://www.scichart.com/documentation/win/current/DataPoint%20Selection.html
https://www.scichart.com/example/wpf-chart-example-pointmarkers-selection/

1 vote
348 views

Hello

I have got a valid licence, but I have got an error when I run my app. I generate runtime key on my profile page (schichart.com/profile), I write this runtime key into SciChartSurface.SetRuntimeLicenseKey function, but doesn’t work. The error occurs in xaml <s:SciChartSurface> tag, and text is

"Sorry, You need to have a licence to use Scichart.For instructions...."

What can I do?

Thank you very much.

0 votes
274 views

I have exported 50 EEG example from SciChart aplication to a standalone solution. When i start debug, lines are not drawn, but the code is running and generated data seems ok. I have not made any modifications the the example code.

0 votes
274 views

Hello,

I am trying to export my 3D chart to a file using SciChart3DSurface.ExportToFile. However, I am getting this error:

InvalidOperationException: There was an error reflecting property ‘InputBindings’.

Code behind:

var surface = ResultTestContent.Positional6DOFErrorTestPage.PositionalChart;
surface.ExportToFile($@"C:\temp\ChartTest.jpeg", SciChart.Core.ExportType.Jpeg, true,new Size(800,800));

XAML:

<s3D:SciChart3DSurface x:Name="PositionalChart" Grid.Column="1" ShowLicensingWarnings="True"
                    IsFpsCounterVisible="False"
                     IsAxisCubeVisible="True"
                     IsXyzGizmoVisible="False"
                     CoordinateSystem="RightHanded"
                           Background="White"
                           DebugWhyDoesntSciChartRender="True" RenderableSeries="{extensions:SeriesBinding RenderSeries3DViewModels}"
                           Visibility="Collapsed">

        <!-- Create XAxis -->
        <s3D:SciChart3DSurface.XAxis>
            <s3D:NumericAxis3D TickTextBrush="Black" AxisTitle="X (mm)" DrawMajorBands="True" DrawMajorGridLines="True"
                    DrawMinorGridLines="False"
                    DrawMajorTicks="True"
                    DrawMinorTicks="True"
                               MajorGridLineStyle="{StaticResource ResourceKey=MajorGridLineStyle}"
                               MinorGridLineStyle="{StaticResource ResourceKey=MinorGridLineStyle}"
                    AxisBandsFill="LightCyan"
                    FontSize="10"
                    TickLabelAlignment="Camera"
                               GrowBy="0.1, 0.1"/>
        </s3D:SciChart3DSurface.XAxis>
        <!-- Create YAxis -->
        <s3D:SciChart3DSurface.YAxis>
            <s3D:NumericAxis3D AxisTitle="Z (mm)" MajorGridLineStyle="{StaticResource ResourceKey=MajorGridLineStyle}"
                               MinorGridLineStyle="{StaticResource ResourceKey=MinorGridLineStyle}"
                               DrawMinorGridLines="False"
                    AxisBandsFill="LightCyan"
                    TickTextBrush="Black"
                    FontSize="10"
                    TickLabelAlignment="Camera"
                               GrowBy="0.1, 0.1"/>
        </s3D:SciChart3DSurface.YAxis>
        <!-- Create ZAxis -->
        <s3D:SciChart3DSurface.ZAxis>
            <s3D:NumericAxis3D AxisTitle="Y (mm)" MajorGridLineStyle="{StaticResource ResourceKey=MajorGridLineStyle}"
                               MinorGridLineStyle="{StaticResource ResourceKey=MinorGridLineStyle}"
                               DrawMinorGridLines="False"
                    AxisBandsFill="LightCyan"
                    TickTextBrush="Black"
                    FontSize="10"
                    TickLabelAlignment="Camera"
                               GrowBy="0.1, 0.1"/>
        </s3D:SciChart3DSurface.ZAxis>

        <!-- Create Interactivity Modifiers for rotating camera -->
        <s3D:SciChart3DSurface.ChartModifier>
            <s3D:ModifierGroup3D>
                <s3D:OrbitModifier3D ExecuteOn="MouseLeftButton" ExecuteWhen="None"/>
                <s3D:MouseWheelZoomModifier3D MouseWheelSensitivity="90" />
                <s3D:FreeLookModifier3D ExecuteOn="MouseRightButton"/>
                <s3D:TooltipModifier3D IsEnabled="True" SourceMode="AllSeries" ShowTooltipOn="MouseOver"/>
            </s3D:ModifierGroup3D>
        </s3D:SciChart3DSurface.ChartModifier>
    </s3D:SciChart3DSurface>

I’ve removed the binding from the xaml, yet I am still getting the same issue. Any help is appreciated, thanks.

0 votes
250 views

Good Evening,
I would like to customize the labels displayed in a Stacked Column Chart in order to be able to display some text coming from the series metadata, is there any way to do it?

Thanks
Best Regards

  • Luca Berti asked 3 months ago
  • last active 3 months ago
Showing 1 - 50 of 2k results