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

0 votes
6k views

The colors are applied correctly, but the position of the bubbles is screwed. They are all centered at the top left corner of the surface. They stay at the same position even when panning/zooming/etc.

Works as expected when the PaletteProvider is not set.

1 vote
10k views

I am trying to set the extents of a chart beyond where the data stops, ex. data stops at 22 hours and I would like the chart to go to 24 hours. I would also like double clicking to go back to 24 hours after zooming, and I would like to be able to retrieve this extent later. Right now I set the visible range to 24, but it automatically re-sizes to 22 and when I use XAxis.GetMaximumRange, it also gives me 22. I would like to set the min and max to a specific number, so I don’t think GrowBy is the answer. I tried AutoRangeOnStartup but it seems to be deprecated. Is there any way to do what I am trying to achieve?

Thanks,
Greg

0 votes
9k views

Hey guys,

I am setting the GridLinesPanelStyle property of my SciChartSurface to the following Style from the Resources of the parent Border element:

<Style x:Key="GridLinesPanelStyle" TargetType="{x:Type axes:GridLinesPanel}">
    <Setter Property="KeyboardNavigation.ControlTabNavigation" Value="None" />
    <Setter Property="IsTabStop" Value="False" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderBrush" Value="{StaticResource ChartBorderBrush}" />
</Style>

When snooping down into the “PART_GridLinesArea” I see that the Background is set to #FF353535 from the “Parent Template”. It gets interesting; I can Delve into the Style property of the same element and see my setters from the above snippet of code.

This approach was working pre-SciChart 2.0 and it appears to be the approach being used by the Examples suite as well, but I can’t yet get that running with my licence (there is another thread asking for help to fix this too ;)!).

Thanks for your support,
Miles

0 votes
8k views

Does anyone know why I would use a SciChartGroup instead of a simple ItemsControl? I tried to use an ItemsControl to show a vertical stack of charts, but I’m getting some weird internal exceptions in SciChart. I’m wondering if the SciChartGroup is a workaround for that?

  • F W asked 7 years ago
  • last active 7 years ago
0 votes
8k views

I know that I ask a lot of questions, but I’d like to be sure that SciChart fulfills all my application needs before I buy it, I wouldn’t like to be “blocked” afterwards as we won’t have the funds to buy multiple charts controls.

Anyway, in the data I would like to display, I have two sets of “points” for one series. One is the real, measured point and the other is points that have been calculated through a non-polynomial fitting on the data.

I would like to display the measured points as scatter but the fit as lines, except for one special series that is only extrapolated from the fit and also the first “point” of the series that is also extrapolated from the fit. This series and those points should have both line and point marker.

And while I’m at it, another feature that I have for my application:
– Being able to select a specific data point (with a visual queue that shows the point selected) and remove it. My ViewModel should be able to receive which point has been removed to trigger business logic

1 vote
7k views

Is there a way in Sci-Chart to not have the legend inside the chart(plot) but rather have the legend outside as to not to interfere with the plots/charts?

  • Samir Shah asked 6 years ago
  • last active 6 years ago
1 vote
8k views

I am trying to use a line series to display digital values (0,1) Is it possible to have the line series remain at 1 if there is no data after the reading until it reaches the next value read. Currently the line goes to 1 and then starts to fall until it reaches zero as there is no data to tell it otherwise

1 vote
0 answers
8k views

Hallo once again,

Im trying to set/control my YAxis visiblerange. With good help I was able to come up with the piece of code below. However one more problem arrives with this solution. When i double click on the chart and there is no fixed visiblerange to set, then the corresponding YAxis must go back to normal (sse code). However this has bugs undesirably i must doubleclick twice in order for the YAxisRange to go back to normal. The first time does change the YAxisRange but not good. The second time finish the job correctly.
Does anyone has any idea why this happens? It should go back to normal from the first doubleclick.

    public class CustomZoomExtentsModifier : ChartModifierBase
    {
        public override void OnModifierDoubleClick(ModifierMouseArgs e)
        {
            base.OnModifierDoubleClick(e);

            //This piece of code is for setting the YAxis Limit, the limmit is Set only OnZoomExtends           
            
                if (this.YAxis.IsFixedRange)
                {
                    this.YAxis.VisibleRange = RangeFactory.NewWithMinMax(this.YAxis.VisibleRange, this.YAxis.YMinRange, this.YAxis.YMaxRange);
                }
                else
                {
                    var newYRange = this.YAxis.GetMaximumRange();
                    if (newYRange != null && newYRange.IsDefined) this.YAxis.VisibleRange = newYRange;
                }

            // And we must calculate the VisibleRange of X Axis, otherwise it will not zoom back to normal
            var newXRange = this.XAxis.GetMaximumRange();
            if (newXRange != null && newXRange.IsDefined) this.XAxis.VisibleRange = newXRange;
            
        }
    }
  • bochelie asked 8 years ago
  • last active 8 years ago
1 vote
6k views

Hello,

I am trying to evaluate Scichart for purchase. I am using live data (17 Channels, many samples per second) to draw FastLineRenderableSeries (0-100% on the y axis, time on the x axis). I have everything working satisfactorily using the MVVM pattern. I have tried the HighQualityRenderSurface and Direct3D10RenderSurface.

Are these renderers actually working or am I still using the software renderer?

I need to draw a translucent rectangle on the chart to indicate a “Good” range of values of y values (say 40-50%).

If I use annotations to draw a rectangle, everything slows down and it is unusable. If I use immediate mode drawing and the HighQualityRendererSurface it is kind of OK. If i use immediate mode drawing and the Direct3D10RenderSurface the rectangle and the series lines alternately flash slowly and it is unusable.

How can I draw a rectangle on the screen using live data and get good performance? Do I need the license for this to work well?

Thanks.

1 vote
8k views

I need to be able to show the user pre- and postmarket phases on a chart. Above is the screenshot of another control that does what I need.

To my understanding, I just need to implement the read only vertical range annotation and place it behind the series.

As I don’t have the source code license, could you please give me some advice from where to start the implementation process?

  • gman asked 9 years ago
1 vote
8k views

Is there an easy way to rotate the Chart(swapping X and Y-Axis) inclusive Annotations, Modifiers,…?

1 vote
10k views

My previous example/question worked because I hard coded to use two charts each with their own chart modifiers as follows all in the same class.

_chartModifiers = new ModifierGroup();
MouseManager.SetMouseEventGroup(_chartModifiers, "MyGroup");
_chartModifiers2 = new ModifierGroup();
MouseManager.SetMouseEventGroup(_chartModifiers2, "MyGroup");

I am now building the ui that allows me to add and remove a graph from an items control. Each graph now binds to a view model to get its data and a parent class manages a collection of graphs (view models). I set the mouse event group in the constructor which is empty when I call SetMouseEventGroup. This causes some weird behavior when zooming as both graphs zoom together plus scrolling the yaxis scolls both yaxis at the same time and sometimes crashes.

Note: in my code now this gets call two times; once for each chart.

public GraphViewModel()
{
  _chartModifiers = new ModifierGroup();
  MouseManager.SetMouseEventGroup(_chartModifiers, &quot;MyGroup&quot;);
}

private ModifierGroup _chartModifiers;
public ModifierGroup ChartModifiers
{
  get { return _chartModifiers; }
  set
  {
    _chartModifiers = value;
    NotifyPropertyChanged(_chartModifierArgs);
  }
}

I also tried to manage the number of items that I add to the mouse event group and while that stopped linking the zoom and yaxis scoll in this case I can no longer get the rollover to work.

ModifierGroup total = new ModifierGroup();
foreach (GraphViewModel www in vm.HistoricalHealthViewModel.DisplayedGraphs)
{
   foreach (IChartModifier chartModifier in <a target="_blank" href="http://www.ChartModifiers.ChildModifiers)"  target="_blank">www.ChartModifiers.ChildModifiers)</a> 
   {
      // do not add the drag modifiers
      if (!(chartModifier is YAxisDragModifier))
      {
         total.ChildModifiers.Add(chartModifier);
      }
   }
}
MouseManager.SetMouseEventGroup(total, &quot;MyGroup&quot;);

Can you please suggest how to use the mouse event group?

0 votes
8k views

Hello.
Using SciChart v2.2.
BaseRenderableSeries.HitTest(MousePoint) triggers not only in series pane, but also in other panes.

My hit-test code is below, called from public override void OnModifierMouseMove(ModifierMouseArgs mouseEventArgs)

foreach (var renderSeries in ParentSurface.RenderableSeries)
            {
                var series = renderSeries as BaseRenderableSeries;
                bool isCandleSeries = ((series as FastCandlestickRenderableSeries) != null);

                if (series != null && series.DataSeries != null)
                {
                    var hitTest = series.HitTest(mouseEventArgs.MousePoint);

                    if (hitTest.DataSeriesType == DataSeriesType.Ohlc)
                    {
                        seriesAnnotaion[k].X1 = hitTest.DataSeriesIndex;
                        seriesAnnotaion[k].Y1 = hitTest.CloseValue;

                        if (hitTest.IsHit)
                        {
                            //show tooltip
                        }
                     }
                  }
               }
0 votes
7k views

Is it possible use SciChart to rotate the point markers on chart by a z value? I’d like to produce a chart similar to the attached wind chart sample from the weather underground website.

  • wawr asked 7 years ago
  • last active 7 years ago
0 votes
8k views

HI,

After reading the example annotation code and articles in the forum, I still can’t find a way to achieve my purpose: My app has a thread to receive data sent by a server, the data may trigger an annotation created lively. My app also need to maintain all created annotations and change their properties like X/Y values or remove them later. So far I only see the way of creating annotation by clicking some button. I tries different ways but failed.

Please help me out with some detailed guides. I am a beginner for WPF.

regards
Chunxi

I try to do this in user thread:

LineAnnotation annotationBase = new LineAnnotation();
change annotationBase properties.

But get this exception:

2014-11-09 13:42:20,623 [11] ERROR WpfApplication2.MainWindow [(null)] – at System.Windows.Input.InputManager..ctor()
at System.Windows.Input.InputManager.GetCurrentInputManagerImpl()
at System.Windows.Input.KeyboardNavigation..ctor()
at System.Windows.FrameworkElement.FrameworkServices..ctor()
at System.Windows.FrameworkElement.EnsureFrameworkServices()
at System.Windows.FrameworkElement..ctor()
at System.Windows.Controls.Control..ctor()
at System.Windows.Controls.ContentControl..ctor()
at Abt.Controls.SciChart.ChartModifiers.ApiElementBase..ctor()
at Abt.Controls.SciChart.Visuals.Annotations.AnnotationBase..ctor()
at Abt.Controls.SciChart.Visuals.Annotations.LineAnnotationBase..ctor()
at Abt.Controls.SciChart.Visuals.Annotations.LineAnnotation..ctor()
at WpfApplication2.InstrumentViewModel.addZone() in c:\Users\jokeslala\Documents\Visual Studio 2013\Projects\WpfApplication2\WpfApplication2\InstrumentViewModel.cs:line 134
at WpfApplication2.InstrumentViewModel.addMA20(Int32 barIdx, Double ma) in c:\Users\jokeslala\Documents\Visual Studio 2013\Projects\WpfApplication2\WpfApplication2\InstrumentViewModel.cs:line 128
at WpfApplication2.MainWindow.processEMA(String str) in c:\Users\jokeslala\Documents\Visual Studio 2013\Projects\WpfApplication2\WpfApplication2\MainWindow.xaml.cs:line 222
at WpfApplication2.MainWindow.consumeQueue() in c:\Users\jokeslala\Documents\Visual Studio 2013\Projects\WpfApplication2\WpfApplication2\MainWindow.xaml.cs:line 155

  • chunxi asked 8 years ago
  • last active 8 years ago
0 votes
5k views

Hi

I have to build a financial chart, and the Y label must be always multiplied by 0.25 , as you can see in the image attached.
I didn’t find how to reach this goal in the documentation and in the knowledgebase articles either.

Could you please help me?

  • lorenzo522 asked 6 years ago
  • last active 6 years ago
0 votes
6k views

Since Google have dropped their support for Silverlight in Chrome the online demo pages no longer work. Just wondering if you will be fixing this so that people can view the demos in Chrome again? Thank you.

  • sdavies asked 7 years ago
  • last active 6 years ago
0 votes
9k views

My goal: Cumulate several values over a time span and show them as stacked bars, where the bars should be located exactly over the time span.

Current situation: Bars are always centered around the x value of the datapoint.

Question: How can bars be shifted to the left? In the attached picture the blue bars represent the current situation, the yellow bars are drawn by offseting the x values by -0.5s. The latter is what I wanted to achieve. Is there an easier approach I havn’t seen so far?

Thanks for your support!

  • jengel asked 8 years ago
  • last active 4 weeks ago
0 votes
6k views

I just found that if you have two y-axis on your graph, you need to define the YAxisId for your CustomAnnotation. Otherwise, it would look like the Y1 property does not work.

Posting here in case someone else run into the same problem I had.

<SciChart:CustomAnnotation
                AnnotationCanvas="BelowChart"
                CoordinateMode="Relative"            
                Opacity="0.50"          
                HorizontalAnchorPoint="Right"
                VerticalAnchorPoint="Bottom"
                X1="0.99"
                Y1="0.99" 
                YAxisId="GroupAAxisY">
  • Kwokon Ng asked 6 years ago
  • last active 6 years ago
0 votes
0 answers
6k views

Hi there,

if I use a ScaleTransform, the Fonts (e.g. axis text) are rendered with higher resolution – the chart is only scaled.
Is there a possibility to increase the render resolution for the chart also?

The intent is to print the chart with higher resolution.

Thanks and regards

  • miri asked 7 years ago
0 votes
9k views

Is there a way to bind to a collection of YAxisDragModifier?

<s:YAxisDragModifier DataContext="{Binding YAxisDragModifierList}"/>
_yAxisDragModifierList = new BindableCollection<YAxisDragModifier>();
                        YAxisDragModifier yAxisDragModifer = new YAxisDragModifier();
                        yAxisDragModifer.AxisId = y.Name;
                        _yAxisDragModifierList.Add(yAxisDragModifer);

The reason I wanted to be able to bind to the YAxisDragModifier is because some of my charts could have N numbers of Y-Axis and I need to be able to have N numbers of YAxisDragModifier that corresponds to the Y-Axis.

Y-Axis: Y1 -> YAxisDragModifier: Y1
Y-Axis: Y2 -> YAxisDragModifier: Y2

Y-Axis: YN -> YAxisDragModifier: YN

An alternative solution is to explicitly list a finite number of YAxisDragModifier and assign the AxisId to the YAxisDragModifier.:

<s:SciChartSurface.ChartModifier>
                <s:ModifierGroup s:MouseManager.MouseEventGroup="{Binding GUID}">
                    <s:LegendModifier x:Name="legendModifier" GetLegendDataFor="AllSeries"/>
                    <local:RubberBandXyZoomModifierEx ReceiveHandledEvents="True" ExecuteOn="MouseLeftButton"/>
                    <local:ZoomPanModifierEx ReceiveHandledEvents="True"/>
                    <s:MouseWheelZoomModifier />
                    <s:RolloverModifier ReceiveHandledEvents="True" />
                    <s:CursorModifier ReceiveHandledEvents="True" />
                    <s:YAxisDragModifier AxisId="R0"/>
                    <s:YAxisDragModifier AxisId="R1"/>
                    <s:YAxisDragModifier AxisId="R2"/>
                    <s:YAxisDragModifier AxisId="L0"/>
                    <s:YAxisDragModifier AxisId="L1"/>
                    <s:YAxisDragModifier AxisId="L2"/>
                    <s:XAxisDragModifier ReceiveHandledEvents="True"/>
                    <s:ZoomExtentsModifier ExecuteOn="MouseDoubleClick" IsAnimated="False"/>
                    <local:ContextMenuModifier x:Name="ContextMenuModifier" ReceiveHandledEvents="True"/>
                </s:ModifierGroup>
            </s:SciChartSurface.ChartModifier>

This means, if I have 10 Y-Axis, only six will have the YAxisDragModifier.

Does that make sense?

Thanks,

Johnny

0 votes
9k views

Is there a way to guarantee a label at the minimum and maximum axis values?

The min of my data is 0, but I can’t seem to get an axis label to appear at 0. The same goes for the maximum value. This would be very helpful in framing the chart data.

  • Todd asked 9 years ago
0 votes
8k views

Hello.

Found a bug: when working with the axis-X scales the Y-axis
To get started, you need to configure in SciChart so zooming and moving only happened on the axis-X

Next:

  1. Take any chart (1.png)
  2. Highly scalable any point (2.png)
  3. Try to move the schedule of shifts sharply to the side, Y-axis scale changes (3.png)
  4. increase the scale to its original condition(4.png)

At the same time if you do everything except the third paragraph then all is well

This is a bug or need to configure something else?

  • Nicholas asked 8 years ago
  • last active 8 years ago
0 votes
7k views

Hi,

Is possible in SciChart to plot just points in the chart, with no line connecting the points?

0 votes
10k views

Hi,

I’ve got couple of questions.

  1. Is there a way to automatically change the visible x axis range once we change the DataSeriesSet?

  2. What is the purpose of AutoRange property? If AutoRange is true, it doesn’t allow to zoom the chart. Is there a way to enable zooming when AutoRange true?

Thanks,
Charith

0 votes
21k views

I have the following code and want to move this portion to code-behind but have problems understanding how I can programmatically set the properties in Style:

<s:SciChartSurface.ChartModifier>

                <!-- Provides Interactivity -->
                <s:RubberBandXyZoomModifier IsAnimated = "False" IsXAxisOnly = "True" ExecuteOn = "MouseRightButton"/>
                <s:ZoomPanModifier XyDirection="XYDirection" ClipModeX = "ClipAtExtents" ExecuteOn ="MouseLeftButton" />
                <s:MouseWheelZoomModifier XyDirection = "XYDirection"/>
                <s:ZoomExtentsModifier IsAnimated = "False" ExecuteOn = "MouseDoubleClick" />
                <s:XAxisDragModifier  DragMode = "Scale"/>
                <s:CursorModifier SourceMode="AllSeries"  UseInterpolation="True"/>

                <!-- Provides selection of series and custom styling to the selected series -->
                <s:SeriesSelectionModifier ReceiveHandledEvents="True" SelectionChanged="SeriesSelectionModifier_OnSelectionChanged">
                    <s:SeriesSelectionModifier.SelectedSeriesStyle>
                        <Style TargetType="s:BaseRenderableSeries">
                            <Setter Property="SeriesColor" Value="White"/>
                            <Setter Property="PointMarkerTemplate">
                                <Setter.Value>
                                    <ControlTemplate>
                                        <s:EllipsePointMarker Fill="#FF00DC" Stroke="White" Width="7" Height="7"/>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </s:SeriesSelectionModifier.SelectedSeriesStyle>
                </s:SeriesSelectionModifier>

                <!-- Provides a data source for the legend control -->
                <s:LegendModifier ShowLegend="True" GetLegendDataFor="SelectedSeries" Margin="10"/>

            </s:ModifierGroup>
        </s:SciChartSurface.ChartModifier>

Particularly the SeriesSelectionModifier and its property setters seem difficult for me to implement in code-behind. Can you please provide some sample code how I would actually implement the SeriesSelectionModifier with above Property Setters above in C# code rather than in XAML?

Thanks

  • bbmat asked 7 years ago
  • last active 7 years ago
0 votes
5k views

Hi All,

We have included in our wpf chart vertical slices to show markers on data series, but when a vertical slice is added, one marker per series is shown at the same time.
Is it possible to show only one marker per series and per vertical line annotation? We want to add serveral vertical slices, and each one has a marker to only one series.
Please find attached two pictures: the first one represents what we have, and the second one represents what we need.

Thank you in advance
Regards,
Juan

0 votes
8k views

Hi guys,

Update: Based on some other desired functionality about how the mouse should interact with this element, I’ve developed my own modifier to handle the roll-over functionality. As such, this ticket doesn’t need a reply any more. Thanks – and my apologies if it consumed any resources in the meantime!

This is a strange one. I am using seven XyScatterRenderableSeries on the one SciChart, in conjunction with a style for each of these to display seven different icons (in my case, I use path geometry or ellipses to define a full-circle, a circle with a divider down the middle or a circle split into three from the centre – each section then gets its own color).

Have a look at the attached screenshot for an idea of what it looks like – not a conventional chart by any means. The YAxis range is hard-coded in to only allow three possible values, whereas the XAxis is a Date axis and can allow values at any week. To allow the circles to sit where they are they are assigned a Y-coordinate of either 0.5, 1.5 or 2.5 (this allows them to sit between the gridllines I’ve defined in the xaml.

My problem is that the RolloverModifier is not following all of the RendereableSeries at all, and is acting strange and not providing me with a tooltip for some circles some of the time. It all seems very random.

Are RolloverModifiers working for multiple scatter series, where each series may have a different number of points to all others?

Note that it is possible in my example for one of the DataSeries to have two values (Y) for the one DateTime (X) as well.

I have attached some snippets of code – pasting it in here was not working for me, apologies!

If you require any further information, please let me know.

Cheers,
Miles

P.S. I had originally attempted to do this using your annotations example in the demo (with the Trade Markers for buy/sell). The Control Template I created to add the circles in and the looping that followed at run-time made rendering any sizeable number of these simply too expensive. Everything was slowing down. After going down this new route and using the SciChart itself to render everything – there are no performance issues at all! So bravo, whatever you’re doing to render geometries is paying dividends. Everything is very quick.

1 vote
0 answers
8k views

Hallo,

Once again I have a strange behaivour with the labeltextformating.

I have xaml code wich wont work. If i do the same in code behind it works perfectly. Why is that?

Code wich won’t work:

<Style x:Key="VerticalLineAnnotationStyle" TargetType="s:VerticalLineAnnotation">
            <Setter Property="Stroke" Value="#FFFF6600"/>
            <Setter Property="StrokeThickness" Value="2"/>
            <Setter Property="ShowLabel" Value="False"/>
            <Setter Property="LabelPlacement" Value="Axis"/>
            <Setter Property="VerticalAlignment" Value="Stretch"/>
            <Setter Property="LabelTextFormatting" Value="dd MMM yyyy HH:mm:ss"/>
        </Style>

<s:SciChartSurface.Annotations>
               
                <pp:CustomVerticalLineAnnotation x:Name="FVert" YAxisId="GenYAxis" FontSize="12" ShowLabel="True" IsEditable="True" IsEnabled="True" Height="600"
                                          Style="{StaticResource VerticalLineAnnotationStyle}" IsHidden="True"/>


            </s:SciChartSurface.Annotations>

Code wich works:

internal void AddVerticalLineDiff(string annotationType)
        {
            var type = _annotationTypes[annotationType];
            var resourceName = String.Format(&quot;{0}Style&quot;, type.Name);

            CustomVerticalLineAnnotation HAnot = new CustomVerticalLineAnnotation();
            HAnot.Name = &quot;VAnot1&quot;;
            HAnot.YAxisId = &quot;GenYAxis&quot;;
            // HAnot.YAxisId = &quot;GenYAxis&quot;;
            HAnot.Style = (Style)Resources[resourceName];
            HAnot.DragDirections = XyDirection.XDirection;
            HAnot.Height = sciChart.RenderSurface.ActualHeight;
            HAnot.IsEnabled = true;
            HAnot.IsEditable = true;
            HAnot.ShowLabel = true;

            // Perform the hit test relative to the GridLinesPanel
            HitTestInfo hitTestInfo = sciChart.RenderableSeries[0].HitTest(new Point(0, 0));
            HAnot.X1 = hitTestInfo.XValue;

            //HAnot.AnnotationLabels[0].Template = (ControlTemplate)Resources[&quot;VerAnnotLabelTemplate&quot;];
            sciChart.Annotations.Add(HAnot);

        }
private readonly IDictionary<string, Type> _annotationTypes = new Dictionary<string, Type>()
        {
            { "LineAnnotation", typeof(LineAnnotation)},
            { "LineArrowAnnotation", typeof(LineArrowAnnotation)},
            { "TextAnnotation", typeof(TextAnnotation)},
            { "BoxAnnotation", typeof(BoxAnnotation)},
            { "HorizontalLineAnnotation", typeof(HorizontalLineAnnotation)},
            { "VerticalLineAnnotation", typeof(VerticalLineAnnotation)},
            { "AxisMarkerAnnotation", typeof(AxisMarkerAnnotation)}
        };
0 votes
7k views

Hi,

in a MVVM scenario, I bind the AnimatedVisibleRange to a property in the view model.

 <s:SciChartSurface SeriesSource="{Binding ChartSeries}">
   <s:SciChartSurface.XAxis>
     <s:NumericAxis AxisTitle="x" AnimatedVisibleRange="{Binding XVisibleRange, Mode=TwoWay}" AutoRange="Never" />
   </s:SciChartSurface.XAxis>
   <s:SciChartSurface.YAxis>
     <s:NumericAxis AxisTitle="y" AnimatedVisibleRange="{Binding YVisibleRange, Mode=TwoWay}" AutoRange="Never" />
   </s:SciChartSurface.YAxis>
   <s:SciChartSurface.ChartModifier>
     <s:ModifierGroup>
       <s:MouseWheelZoomModifier IsEnabled="True" XyDirection="XDirection"/>
     </s:ModifierGroup>
   </s:SciChartSurface.ChartModifier>
 </s:SciChartSurface>

Setting the XVisibleRange property in the view model smoothly animates the view. However, when I zoom in the chart with the mouse wheel, the view model property receives no updates (so the XVisibleRange property in the view model always stays on the value initially set by the view model).

The same thing works when I bind he VisibleRange instead of the AnimatedVisibleRange, i.e. in that case I get an update of the view model property on every mouse wheel zoom.

Is this intendend, or a bug? Building a workaround would require additional bindings, which I would like to avoid.

Best regards,

Andree

0 votes
8k views

I am trying to use SciChart to graph a logarithmic spiral with a fast line renderable series. I am also using the zoom pan and mouse wheel zoom chart modifiers to allow the user to zoom and pan the chart.

However, panning the chart so part of the spiral goes off the right side of the screen causes the corresponding left part of the spiral to disappear. Moving the center of the spiral off the right side of the screen causes the entire chart disappear.

I suspect SciChart is attempting to optimizing the line drawing and does not expect the line to loop back into the visible region. Is there a setting I can change to prevent the spiral in the visible region from disappearing?

I am using SciChart version 1.55.4761 and have noticed this behavior with the x-y scatter renderable series as well.

0 votes
11k views

We were recently asked on priority support tickets ‘How do I ZoomExtents a SciChartSurface to a specific range, e.g. VisibleRangeLimit, when double clicking on the chart’.

For the benefit of our user-base our solution is below.

0 votes
7k views

Hi,
How can i get smooth lines in FastLineRenderableSeries. Please see the attached image, specially when the stroke thickness is high, you see lots of small steps in the line.

Thanks
Aysan

0 votes
7k views

I successfully set my x-axis visible range between 0.0 and 5.0. I would like to have major grid lines every 1.0. How can I do this? I see a MajorDelta property which I set to 1.0. This did not work. Instead, the major grid lines are every 0.5 on the x axis.

0 votes
5k views

Hello again!
I’m creating fastlinerenderableseries and I need to show only one part of this line. For this purpose I’m using palette provider. But there is a strange side effect: when I set transparent color for line segment, it also paints lines on the chart (see pictures below-1 before switching on segment painting, 2 – after).
How can I fix it.

Thanks in advance
P.S. I ‘ve also attached project below.

  • Egor asked 6 years ago
  • last active 6 years ago
0 votes
8k views

Hello,

I am getting started with Scichart (again) and was hoping you could help me with a question.
I am attempting to plot a data series on a scatter plot. Is it possible to set the color for each individual point (either manually, or based on another piece of data)?

I thought I remember seeing an example on this a while back, but I can’t seem to find it now.

Thanks.

1 vote
9k views

I try using the EllipsePointMarker with the following code

new EllipsePointMarker
{
   Width = 4,
   Height = 4,
   StrokeThickness = 2
}

the markers usually draw looking like a plus sign or a diamond.

It only looks like a circle if I use a Width and Height of 8.

See attached.

3 votes
13k views
  • bstapylton asked 9 years ago
  • last active 7 years ago
1 vote
11k views

Hi,

I have a scichart surface defined in xaml like this,

<local:SciChartSurface x:Name="_ChartSurface"  Annotations="{Binding ChartAnnotations}">

        </local:SciChartSurface>

In the code behind I have ChartAnnotations defined as,

 public const string ChartAnnotationsPropertyName = "ChartAnnotations";
        private AnnotationCollection _ChartAnnotations = new AnnotationCollection();
        public AnnotationCollection ChartAnnotations
        {
            get { return _ChartAnnotations; }
            set
            {
                if (_ChartAnnotations == value)
                    return;

                _ChartAnnotations = value;
                RaisePropertyChanged(ChartAnnotationsPropertyName);
            }
        }

 public ViewModelExample()
{  
  ChartAnnotations.CollectionChanged += ChartAnnotations_CollectionChanged;    
}

 void ChartAnnotations_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            RaisePropertyChanged(ChartAnnotationsPropertyName);          
        }

Than in the code behind, I just initialize and add some annotations to the ChartAnnotations collection to populate my chart. The problem is that my Annotations property on the scichart surface is still null, and the RaisePropertyChanged() is not affecting the Bindings at all. I’m certain that the DataContext is set right as other stuff in the graph works fine. I works when I explicitly set the surface’s Annotations property with my ChartAnnotations collection, but obviously this is less than ideal.

Is there an additional step that I’m missing here?

Thanks

  • kewur asked 8 years ago
  • last active 8 years ago
0 votes
4k views

Hi,
I’d rather have one tooltips for all my series like a legend.
But I want this special legend to be placed on the first (main) series tooltip coordinates.

I understand using a rollover is the best way to do it.

0 votes
10k views

Hi,

I’m using 2 annotation markers, one horizontal and one vertical.

In xaml:

            &lt;SciChart:SciChartSurface.Annotations&gt;
                &lt;SciChart:HorizontalLineAnnotation HorizontalAlignment=&quot;Stretch&quot; IsEditable=&quot;True&quot; LabelPlacement=&quot;Axis&quot; LabelTextFormatting=&quot;0.0&quot; ShowLabel=&quot;True&quot; Stroke=&quot;Orange&quot; StrokeThickness=&quot;2&quot; Y1=&quot;{Binding Path=UpRightMarkerYPos, Mode=TwoWay}&quot; IsHidden=&quot;{Binding Path=TimeChartMarkerIsHidden}&quot;/&gt;
                &lt;SciChart:VerticalLineAnnotation VerticalAlignment=&quot;Stretch&quot; IsEditable=&quot;True&quot; LabelPlacement=&quot;Axis&quot; LabelTextFormatting=&quot;0.0&quot; ShowLabel=&quot;True&quot; Stroke=&quot;Orange&quot; StrokeThickness=&quot;2&quot; X1=&quot;{Binding Path=BowMarkerXPos, Mode=TwoWay}&quot; IsHidden=&quot;{Binding Path=TimeChartMarkerIsHidden}&quot;/&gt;
            &lt;/SciChart:SciChartSurface.Annotations&gt;

I’ve set the LabelPlacement on Axis, so I expect that the labels will not be drawn over the graphical data.
It works fine for the Vertical one, but the horizontal marker will display the label over the data, so I can’t see a part of my graph anymore.
How can I position the label so it will not be on top of the graphical data?

Thanks,
Egbert

0 votes
8k views

Hi, I’m trying to create an effect similar to the FastErrorBarsRenderableSeries, but I only want to render the horizontal min & max lines, and not the vertical line. Can you suggest a way to achieve this?

0 votes
0 answers
4k views

Hello,

I have another question on the Heatmap 3D.

I have attached a sample app to show what I’m trying to accomplish. Essentially, I want my data points to contain NaN whenever there’s no data available for it. In that way if I want I could find out which are the points that have no data and create an interpolation throughout those points.

The problem is that If I initialize all my data points to NaN, and then I add the actual valid data, that data won’t be shown in the heatmap. I suspect it has something to do with the GradientColorPalette that probably doesn’t know what to do with a NaN.

Can you help me solve this issue? Maybe I’m using the API in a wrong way.

NOTE: If you comment the code lines inside the HeatmapModel class where it is initializing the data points with NaN and run it, you should get all red and some thin lines of different colors, which would be the ones that contain actual data. The idea is that all the red is not colored and show empty space and only show the fine lines, because 0 is a valid value.

NOTE: due to limiting uploading size, you’ll have to add the SciChart DLLs to the project manually.

Thank you!
Best regards,
Sebastian

0 votes
9k views

Hello, suppose I want to make a real-time rollover tooltip that displays not only the y value but also the x value, how do I do it?
I currently have a rollover modifier which gives me the y values in RolloverModifier.RolloverData.SeriesInfo.Value. How do I find out the corresponding value on the X Axis?

I have also attached some images where you can see what I have now and what I want to do..

0 votes
8k views

Hi,

I have a chart with 4 axes (two X and two Y), when I try use AnnotationCreationModifier to create annotation, I get next error:

at Abt.Controls.SciChart.Visuals.Annotations.AnnotationBase.FromCoordinates(Double xCoord, Double yCoord)
at Abt.Controls.SciChart.Visuals.Annotations.AnnotationBase.FromCoordinates(Point coords)
at Abt.Controls.SciChart.Visuals.Annotations.AnnotationBase.UpdatePosition(Point point1, Point point2)
at Abt.Controls.SciChart.ChartModifiers.AnnotationCreationModifier.OnModifierMouseUp(ModifierMouseArgs mouseButtonEventArgs)
at Abt.Controls.SciChart.ChartModifiers.ModifierGroup.c9fd5ab524d787e8439d8933aeb87fdc5(IChartModifier c6b1effd112e5355cd5f051dd91cd4f67, ModifierMouseArgs cbb39038dde40bfc3fdcfa70f4bbf8778)
at Abt.Controls.SciChart.ChartModifiers.ModifierGroup.c9e8960a6a8527c20ac9e46e162c72b22(Action`2 c4bd4ab823835cf92d221476b6fb65a17, ModifierMouseArgs c4c23d80d4d060e409c3479ef17d6c65e)
at Abt.Controls.SciChart.ChartModifiers.ModifierGroup.OnModifierMouseUp(ModifierMouseArgs e)
at Abt.Controls.SciChart.Utility.Mouse.MouseManager.cad56cb88fe961ec17710025afdf79607(ModifierMouseArgs cbb39038dde40bfc3fdcfa70f4bbf8778, IReceiveMouseEvents c18509698be3f9366c690e7d2b107b62c, Boolean c3791a1b71c1577bde30b55c12b2a5583)
at Abt.Controls.SciChart.Utility.Mouse.MouseManager.cf88844ca415efe316ebbc6460c4d5477.c017276be757b162458755f3f8e0c9aa6.cd7319400482f82418e9a97b614eab2ca(IReceiveMouseEvents c133657388cc0f6f6615e21e129ac4b3a)
at A.c19dd4d74f6373c95c517d29624d76e4b.cacf72b657252e3e73860afb89d70cb9f[c13c28af86f0b14202b9c7ef43b1bd11a](IEnumerable`1 c40a30a1bb6416cd164565919fdef15a9, Action`1 c885aac61bc9832561b7ff07903c88d5e)
at Abt.Controls.SciChart.Utility.Mouse.MouseManager.cf88844ca415efe316ebbc6460c4d5477.cef5451dcf09f913b48c9730b7cb0d11d(Object cae49ecc8585f35e8dd5ce624f7fb7ab5, MouseButtonEventArgs c4c23d80d4d060e409c3479ef17d6c65e)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
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)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run()
at SciTest.App.Main() in d:\Projects\Test\SciChart\SciTest1\SciTest\obj\Debug\App.g.cs:line 0
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

My Xaml code:

<s:SciChartSurface x:Name="sciChart" Grid.Row="1" ClipModifierSurface="True" s:ThemeManager.Theme="Chrome">

    <s:SciChartSurface.RenderableSeries>
        <s:FastCandlestickRenderableSeries XAxisId="X" YAxisId="Y"/>
    </s:SciChartSurface.RenderableSeries>

    <s:SciChartSurface.XAxes>
        <s:CategoryDateTimeAxis Id="X"/>
        <s:CategoryDateTimeAxis Id="X2"/>
    </s:SciChartSurface.XAxes>

    <s:SciChartSurface.YAxes>
        <s:NumericAxis TextFormatting="0.0#" Id="Y"/>
        <s:NumericAxis TextFormatting="0.0#" Id="Y1"/>
    </s:SciChartSurface.YAxes>

    <s:SciChartSurface.ChartModifier>
        <s:ModifierGroup>
            <s:AnnotationCreationModifier YAxisId="Y" x:Name="annotationCreation" AnnotationCreated="OnAnnotationCreated"/>
            <s:YAxisDragModifier/>
            <s:XAxisDragModifier/>
        </s:ModifierGroup>
    </s:SciChartSurface.ChartModifier>

</s:SciChartSurface>
0 votes
0 answers
5k views

Hi,

I wonder, if it’s possible to force the SciChartSurface control to resize itself depending on a size of the actual data area, given that axis are in the auto-range mode. For example, when the Y range is large than X range, the entire control resizes into the portrait orientation, thus keeping square pixels in the data area.

Thank you in advance!
Ilia

  • corvex asked 7 years ago
  • last active 7 years ago
3 votes
12k views

Hi

I am trying to allow my user to hide/show annotations by binding the visibility property, but I can’t seem to get it to work. Actually when I manually set visibility to Hidden it’s still there. Is that just not implemented?

Lisbeth

0 votes
0 answers
7k views

HI,
My code works well with 3.1. Today I switch to 3.2. Get exception, please see the attached file.

my code is based on SciChart Trader. When mouse click the chart. the exception happens.

0 votes
10k views

I’m trying to have a two charts which have a x-axis points (datetime) that doesn’t intersect. And i want charts was synchronized like this:
enter image description here

How you can see here upper chart doesn’t have a point at 10.12.2013, but lower has. Can i reach same effect by SciChart?

  • l1pton17 asked 8 years ago
  • last active 8 years ago
0 votes
4k views

Is it possible to create a BoxRendableSeries with outliers by a predefined range (e.g. 2%-98%) and everything which exceeds will be drawn as a outlier (a ellipse a like dot)?

What I want to do is, given each box, I want to mark the box with a dot if parameters exceed certain values. Is this something that SciChart supports?

Showing 1 - 50 of 4k results