Pre loader

Forums

Welcome to the SciChart Forums!

  • Please read our Question Asking Guidelines for how to format a good question
  • Some reputation is required to post answers. Get up-voted to avoid the spam filter!
  • We welcome community answers and upvotes. Every Q&A improves SciChart for everyone

WPF Forums | JavaScript Forums | Android Forums | iOS Forums

0 votes
10k views

Hi, SciChart team.
Our users can add many VerticalLineAnnotations to chart. Also they need to know what annotation is active. It is usefull for annotation removing for example.

What way schould I use for change visual style for selected annotation. By default selected annotation do not differ with not selected.

At this time I am modify AddAdorners RemoveAdorners(I am use MyCustom Annotaion inherited from VerticalLineAnnotation). And use different colors. But names of theese methods confuse me.

May be it is good idea to add methods like MakeSelected and MakeUnselected. Documentation in chm file is not helpfull for this situation.

0 votes
13k views

I would like to have a line chart where only some of the markers along a given trace are highlighted. For example, to be able to click with the mouse on several points along a line and have them change from regular point markers to looking like a rollover marker.

One way I can think to do this is to overlay an xy scatter series on top of a line series, and when the user toggles points with the mouse, add or subtract them from the data source for the scatter series. Is this a reasonable way to do this, or is there a better way?

Thanks,
Jerry

0 votes
17k views

Hi,

I would like to create a bitmap/png of the scichart surface.
How can i do this in MVVM?

I saw an example with a “ExportElementToPng(FrameworkElement element, string filename)” function.
This works in Code behind, but in mvvm I don’t have the SciChartSurface.

Thanks…

3 votes
26k views

Hi,

I have a chart for a temperature line using FastLineRenderableSeries and a couple of HorizontalLineAnnotation to show some thresholds for that line.
When I call DataSeriesSet.InvalidateParentSurface(RangeMode.ZoomToFit) the chart zoom to fit the data from the data series (which is fine).
Now I would like to be able to zoom to the chart extents but including those threshold line. What would be the best way to accomplish this?

Screen shots attached.

Chart with RangeMode.ZoomToFit: c1
Chart manually zoomed out to show threshold line: c2
(the chart is that small green dot that is showing just bellow the lower threshold)

The goal is to be able to provide a feature that my users can zoom chart so that both data set and thresholds are shown. I guess a variation of the current zoom to fit but taking into account the annotation lines.

Thanks!

  • jsimoes asked 11 years ago
  • last active 6 years ago
0 votes
13k views

Hi guys,

Related with my previous question: how do I add the anottation lines to the chart legend? It seems it only gives me options about the data series, nothing else…

Thanks

0 votes
11k views

Hi, there.

Our users want CreateAnnotationModifier be active while Control button is pressed. Also they want to delete selected annotation with delete button.

I add handlers for

sciChartSurface.KeyDown
sciChartSurface.KeyUp
sciChartSurface.GotFocus
sciChartSurface.GotMouseCapture
sciChartSurface.PreviewKeyDown

When control capture mouse it can do not recieve focus, thereby button events do not handle.
I am not sure but when control has focus it can not handle button events too.

Chart start handle button events when I am select annotation and click on chart after it.

It is impossible to manually call Focus(), because application has other controls.

When I am delete or add annotation chart loss and recieve focus many times.

Is this correct behaviour?

What additional information do you need for fixing this issue?

2 votes
17k views

Hi folks,

I haven’t been able to produce scatter charts using a XyScatterRenderableSeries. To demonstrate, I took a sample project you sent me earlier and replaced one line as shown below:

_chartSeries = new ObservableCollection<IChartSeriesViewModel>();
//var renderableSeries = new FastLineRenderableSeries { SeriesColor = Colors.BlueViolet};
var renderableSeries = new XyScatterRenderableSeries { SeriesColor = Colors.BlueViolet};
_chartSeries.Add(new ChartSeriesViewModel(ds0, renderableSeries));

With the original FastLineRenderableSeries, I see the chart. But with XyScatterRenderableSeries, the data does not appear. (Annotations remain visible, of course.)

Am I doing something wrong, or does the ChartSeriesViewModel not work with scatter charts?

Thanks,
–George

  • yefchak asked 11 years ago
  • last active 9 years ago
0 votes
11k views

Is there any way to improve the sharpness of lines for the plots? As seen on the two attachments the original plot is crisp and clear, whereas the SciChart version have jagged edges (at least for the default FastMountainRenderableSeries).

Also, is there a built in crosshair (x,y) tracking that displays both horizontal and vertical lines and has the option to track only when a specific mouse button is down?

I’m loving how the chart renders data FAAST, but just need more info for evaluation.

Thanks!

Thanks!

0 votes
15k views

When using the CursorModifier and rolling over a series the numbers appear without thousand seperators ie: 10000 instead of 10,000. Is there a way I can add these?

  • kelias asked 11 years ago
  • last active 8 years ago
0 votes
10k views

Is there a way when a user hovers over a series, to dim the other series so the hovered series stands out more?

Something like detecting the user hovered over a series then enumerating the other series and setting the alpha to half of the original?

0 votes
10k views

I’ve got a problem with a chart I’m developing. I’m adding just four points to an XY scatter series – the X values are 0, 1, 5, 10, and the Y values range from approx 3000 up to approx 60000.

We measure chemical elements, and in my app I can change the unit of measure from “parts-per-billion” (ppb) to “parts-per-quadrillion” (ppq), resulting in the X-values changing to 0, 1000000, 5000000, 10000000 (note that the Y-values remain unchanged). Even though there are still only four points, the chart now takes several seconds to render. Any ideas why this might be, and what I can do to improve things?

I have attached my chart XAML in case it is relevant. Note the MajorDelta is being calculated as “largest_X_value / 5” (I would always like to see 5 ticks/labels on the X-axis). The VisibleRange is simply being bound to 0 and the maximum X-value. I’m having a bit of a hard time getting the axis labels/ticks “just so”, hence why I’m resorting to some of these bindings and GrowBy values.

Regards
Andrew

0 votes
12k views

what’s the way to bind the overview control to a chart in code?

I’m looking to add an overview control to a generic xaml chart, but only enable/bind the control when the I set the grid row visible.

I also plan to abstract the overview control into its own, freestanding control in order to bind it to the currently selected chart in a mult-chart window.

thanks in advance.

0 votes
14k views

I am trying to keep stacked charts the same with, however when the Y-Axis values contain a decimal point the grid background width scales automatically therefore causing the edge of stacked charts to be mis aligned. I have attached an image to demonstrate. How can I work around this.

1 vote
13k views

Hi there

How to change crosshair’s and rollover’s tooltip, in particular lowest to low and highest to high?

  • VRueda asked 11 years ago
  • last active 10 years ago
0 votes
10k views

I’m not clear how you set up FIFO with the SciStockChart class and mvvm; docs are a little weak; all the examples seem to use datasets rather than ChartSeriesViewModel. Do I simply set the fifocapacity? Do I need to set it at instantiation? Do all the ChartSeriesViewModels in a collection need to have the same Fifocapacity? Can I change the fifocapacity at runtime; and if so how would I change the capacity of all of the ChartSeriesViewModels (assuming they must all be the same) in a collection?

thanks in advance.

0 votes
11k views

Hi guys,

I have a very customised RolloverModifier in place for my main SciChart. I take the SeriesInfo data after your RolloverModifier OnModifierMouseMove has completed, grab the data and build my own objects that are later used to build a complex Legend for my SciChart, complete with Total / Average columns for the series data points, as well as some XAxis info (Dates) in rows.

I also define a TemplatableControl in my XAML (UserControl.Resources section) and assign it to the RolloverLabelTemplate property of the RolloverModifier, and it provides the little ToolTips when you hover the RolloverMarker on the various data points.

My question is – how could I possibly extend your SeriesInfo class, such that I can distinguish one Series from another for presentation. My specific problem is that some series that are added need to have one particular StringFormat, while others need a different StringFormat applied. If I could add a flag my custom RolloverModifier code, and then use a DataTrigger in the XAML, I’ll be home free.

I have tried creating a custom class to extend/implement SeriesInfo, and assigning a collection of those to the SeriesInfo property underneath the RolloverData object in my code, but the binding in the XAML doesn’t seem to be able to see the Properties in my extended class.

I’m a bit stuck here. Is it possible without performing open-heart surgery on RolloverModifier?

Cheers,
Miles

0 votes
13k views

Hi, SciChart team.
Our users wat to see graphics in real-time mode. It means that chart must contain point for last 10 minutes, chart contains several graphics, each graphic update at random moments. Points older than 10 minutes must be removed.

Approximation for this situation is FIFO data series. But there is one problem I do not know count of data points. For example graphic can be updated 100 times in one minute, and only 1 time in other minute.

Thereby I am remove old points manually with IXyDataSeries.RemoveAt() method. After removing I am call ZoomExtents method for update visible data range, and I get a issue. ZoomExtents do not hide period where points were removed. It show time range for graphic where point were not removed.

I need help.

0 votes
11k views

Hello

Im doing mutual crosshair, like this

static class ModifierFactory
{
    public static ModifierGroup Crosshair () 
    {
        SeriesSelectionModifier SelSerMod = new SeriesSelectionModifier() { SelectedSeriesStyle = new Style(typeof(BaseRenderableSeries)) { }, ExecuteOn = ExecuteOn.MouseRightButton };
        LegendModifier LegendModifier = new LegendModifier() { GetLegendDataFor = GetLegendDataFor.SelectedSeries, };

        MouseWheelZoomModifier MouseWheelZoomModifier = new MouseWheelZoomModifier() { ReceiveHandledEvents = true };
        ZoomPanModifier ZoomPanModifier = new ZoomPanModifier() { ReceiveHandledEvents = true };
        ZoomExtentsModifier ZoomExtensModifier = new ZoomExtentsModifier() { ReceiveHandledEvents = true, ExecuteOn = ExecuteOn.MouseDoubleClick };
        CursorModifier CursorModifier = new CursorModifier() { ReceiveHandledEvents = true };
        RolloverModifier RolloverModifier = new RolloverModifier() { ReceiveHandledEvents = true };

        return  new ModifierGroup(CursorModifier, MouseWheelZoomModifier, ZoomPanModifier, ZoomExtensModifier) {  MouseEventGroup = &quot;MyGroup&quot; };
    }

    public static ModifierGroup Rollover ()
    {
        SeriesSelectionModifier SelSerMod = new SeriesSelectionModifier() { SelectedSeriesStyle = new Style(typeof(BaseRenderableSeries)) { }, ExecuteOn = ExecuteOn.MouseRightButton };
        LegendModifier LegendModifier = new LegendModifier() { GetLegendDataFor = GetLegendDataFor.SelectedSeries, };

        MouseWheelZoomModifier MouseWheelZoomModifier = new MouseWheelZoomModifier() { ReceiveHandledEvents = true };
        ZoomPanModifier ZoomPanModifier = new ZoomPanModifier() { ReceiveHandledEvents = true };
        ZoomExtentsModifier ZoomExtensModifier = new ZoomExtentsModifier() { ReceiveHandledEvents = true, ExecuteOn = ExecuteOn.MouseDoubleClick };
        CursorModifier CursorModifier = new CursorModifier() { ReceiveHandledEvents = true };
        RolloverModifier RolloverModifier = new RolloverModifier() { ReceiveHandledEvents = true };

        return new ModifierGroup(RolloverModifier, ZoomPanModifier, MouseWheelZoomModifier, ZoomExtensModifier) { MouseEventGroup = &quot;MyGroup&quot; };
    }

    public static ModifierGroup SimpleModifier() 
    {
        SeriesSelectionModifier SelSerMod = new SeriesSelectionModifier() { SelectedSeriesStyle = new Style(typeof(BaseRenderableSeries)) { }, ExecuteOn = ExecuteOn.MouseRightButton };
        LegendModifier LegendModifier = new LegendModifier() { GetLegendDataFor = GetLegendDataFor.SelectedSeries, };

        MouseWheelZoomModifier MouseWheelZoomModifier = new MouseWheelZoomModifier() { ReceiveHandledEvents = true };
        ZoomPanModifier ZoomPanModifier = new ZoomPanModifier() { ReceiveHandledEvents = true };
        ZoomExtentsModifier ZoomExtensModifier = new ZoomExtentsModifier() { ReceiveHandledEvents = true, ExecuteOn = ExecuteOn.MouseDoubleClick };
        CursorModifier CursorModifier = new CursorModifier() { ReceiveHandledEvents = true };
        RolloverModifier RolloverModifier = new RolloverModifier() { ReceiveHandledEvents = true };

        return new ModifierGroup(ZoomPanModifier, MouseWheelZoomModifier, ZoomExtensModifier) { MouseEventGroup = &quot;MyGroup&quot; }; 
    }
}



SciChartSurface FirstChart;
SciChartSurface SecondChart;
...
...
FirstChart.ChartModifier = ModifierFactory.Crosshair ();
SecondChart.ChartModifier = ModifierFactory.Crosshair ();

But it is not mutual, every chart get single crosshair
Mb its because i got winForms project, which load wpf dll and open a wpf window ?

  • VRueda asked 11 years ago
  • last active 10 years ago
1 vote
16k views

I’m new to SciChart and I’m trying to play with stockcharts now. In the file ‘SciChart Class Library.chm’ in some places description is missing for example in DataSeries.Append Method I see [Missing documentation for “M:Abt.Controls.SciChart.DataSeries2.Append(0,`1[])”].

This is slows the progress to get clear understanding how things works. Is there any full description of the library, maybe I’m missing something?

  • ivankostin asked 11 years ago
  • last active 7 years ago
0 votes
12k views

I currently have a DateTime X axis on my SciChart and a Numeric Y Axis.

When I call YAxis.DataSet.YRange, I get correct values based on the data tied to the axis.

If I do the same with the X axis, XAxis.DataSet.XRange, I get the following value for both the Min and Max: ~6.34E+17.

Is this a bug, or is there a better way to get the correct values for the extents of the axes?

The intention is to implement ZoomToFit type function only related to that axis. I did not see this in the API. Is there an easier way to do it for all axis types?

0 votes
11k views

Hi,
I have a multichart MVVM Light based application with each chart having its own view model. In particulat I have an XYScatter chart with multiple series, each coloured differently. I need to select a point in one of the series with the left mouse button such that all that series points change and the index of the selected series is available in my view model. Simultaneously I need to have the groupRubberBandZoomModifier, groupXAxisDragModifier & groupYAxisDragModifier enabled.

I’ve found a couple of ways of doing this, overriding a modifier or EventToCommand directly on the mouse events and re-drawing the appropriate series, but I either don’t get the interrupt or the groupRubberBandZoomModifier doesn’t work and I can’t figure out what is happening.

Please could you elaborate on how the interrupts are handled in this situation.

Many Thanks
Dai

  • Dai asked 11 years ago
0 votes
21k views

When displaying a graph in a chart, I would like to set my own range and tickmark values. So when setting a range from -0.15 to 0.65 with the majortickmark set to 0.1, I would like to see Yvalues of 0.65, 0.55, 0.45, 0.35 till -0.15.
When using it now, it will move the axis to display nice round numbers
(see green graph in the attachment).
How can I do this?

Thanks,
Egbert

0 votes
11k views

I am binding to the Rollover Data Series Info and displaying the YValue in a grid. I want to also display the XValue, however when I bind using XValue nothing is returned. It only seems to display data for the Value property and the seriesname property

0 votes
11k views

Hi

 

I’ve been developing an application which monitors parameters such as pressure and temperature in real time over serial communications. The data is displayed with SciChart in realtime, the user can configure what is displayed, change the time periods being viewed and the sample time amongst other settings.

 

The performance problem I’m experiencing appears to be from the drawing to SciChartSurface. I have tried a number of different approaches though I’m not sure I’m using the most efficient.

 

I have 5 FastLineRenderableSeries and 5 corresponding IDataSeries<DateTime, double> with the DateTime used as the x axis. The serial comms running separately is on a cycle time of approximately 100mS. The sample time for data appended to the data series can be set between 0.5 and 2 seconds.

 

As a means to monitor the performance of the application I have a separate serial comms application running on a different computer listening and displaying the data, from this data streaming on the screen it is easy to see when the performance is slowing.

 

Initially I had the series scrolling from left to right with all new data causing the x axis VisibleRange to be recalculated. This gives a scrolling effect with the whole chart shifting to the left but concerned the VisibleRange recalculation was causing too much of a processing overhead I changed it. Now data starts from the center of the x axis and only recalculates the x axis VisibleRange when the series reaches the far right of the graph similar to the ECG example.

 

The results were the same every time data was appended without any x axis VisibleRange recalculated there would be a pregnant pause on the serial data around 400mS (this is proportional to the length of time running and number of series being displayed).

 

I also set it up to use FIFO series although I don’t want to lose data I thought I’d try it. This obviously just restricts the performance hit by limiting the buffer size and is not practical unless using an exceptionally small FIFO size.

 

Not sure whether it was the appending or drawing process I allowed the two to be separated. Allowing the user to stop when data is appended and manually trigger when a redraw is performed with InvalidateElement().

 

Initially I let the application run for a minute to store some data then prevented the addition of any more data. It was then evident triggering when a redraw was performed would cause the slowing of serial data.

 

Additionally I have tried the other performance tips and tricks with little effect. If this is the best configuration I will have to open up the sample time to 2 seconds and limit the buffer size using FIFO series as the application could be running for days at a time.

Many Thanks

Miles

0 votes
14k views

Hello guys

How to change Crosshair annotation string format?
I need to round it to decimals. shall i make new Control Template?

  • VRueda asked 11 years ago
  • last active 8 years ago
0 votes
13k views

What would be the best way to get only the data that is currently visible for a particular DataSeries?

I have currently used the following:

var dataSeries = series.DataSeries as XyDataSeries;
var indexRange = series.DataSeries.GetIndicesRange(SciChart.XAxis.VisibleRange);
var count = indexRange.Max - indexRange.Min;
var newSeries = new XyDataSeries();
newSeries.Append(dataSeries.XValues.Skip(indexRange.Min).Take(count), dataSeries.YValues.Skip(indexRange.Min).Take(count));

however it feels like maybe there should be a more efficient way in the API to solve this.

If not, it would be nice to have an easy way to retrieve a cut down version of a data series based on a Range so we can pass the VisibleRange directly to the data series and a get a new data series with the data for that range.

0 votes
10k 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
12k views

Hi,
I’m trying to create a custom axis class, inheriting NumericAxis but the labels don’t show anymore. My code :

public class CustomAxis : NumericAxis {}

                           &lt;SciChart:SciChartSurface.XAxis&gt;
                                &lt;core:CustomAxis DrawMinorGridLines=&quot;False&quot; DrawMajorGridLines=&quot;False&quot; AutoRange=&quot;False&quot; Height=&quot;{Binding XAxisHeight, Mode=OneWay}&quot; 
                                          VisibleRange=&quot;{Binding ParentViewModel.XVisibleRange, Mode=TwoWay}&quot; VisibleRangeChanged=&quot;XAxis_OnVisibleRangeChanged&quot;&gt;
                                &lt;/core:CustomAxis&gt;
                            &lt;/SciChart:SciChartSurface.XAxis&gt;

The user should be able to change the label formatting, eg.: “3000ms” or “00:03:00”.
How can I dynamically change axis formatting ? The axis data type will always be double.

0 votes
12k views

Hi – I’m making charts as WPF controls and using multiple versions in a single WinForms app.

1) From a performance standpoint, is that approach likely to be a problem? We’re looking at 3 graphs streaming the same data at the moment.

2) What are the best practices for streaming the same set of data (about 90 readings per second) to multiple charts? Currently, each one has its own series, and adds readings to it on their own and things slow down quite a bit. What is the right way to approach the handling of data for multiple charts?

Thanks for your help!

0 votes
14k views

From example “SciTrader” I created stockcharting which allows to see multiple charts. From main menu I’m creating new windows with content of userControl from example, binds them to ViewModel class and put ViewModel instances into collection of ViewModels. It works fine with historic and realtime date for different stocks. But I have a problem when I’m adding crosshair cursor in my charts. If I have a mouse with crosshair in one chart in all others chart I have vertical line of this crosshair in the same X axis point. And If I scroll chart with left mouse pressed others chart affected too.
I suggest the problem is in this piece of code:

<sciChart:SciChartSurface.ChartModifier>
<sciChart:ModifierGroup sciChart:MouseManager.MouseEventGroup="MySharedMouseGroup">
<sciChart:XAxisDragModifier />
<sciChart:YAxisDragModifier />
<sciChart:ZoomPanModifier IsEnabled="True" />
<sciChart:CursorModifier IsEnabled="True"/>
<!–<sciChart:RubberBandXyZoomModifier IsEnabled="{Binding ChartModifier, Mode=TwoWay, Converter={StaticResource IsModifierTypeConverter}, ConverterParameter=RubberBandZoom}" IsXAxisOnly="True" />–>
<sciChart:MouseWheelZoomModifier />
<sciChart:ZoomExtentsModifier ExecuteOn="MouseDoubleClick" />
</sciChart:ModifierGroup>
</sciChart:SciChartSurface.ChartModifier>

Please give me some hints how can I have independent crosshair appearing only in window where my mouse is.

It worked fine with stockchart controls from CreateRealTimeTickingStockChart but I want to use SciChartSurface from SciTrader example because of volume pane and more powerfull customizing ability of SciChartSurface.

0 votes
11k views

Hi,

if I use the RolloverModifier, how can I prevent the little tooltip showing if I hoover over a data-point (from code and from XML)?

Kind Regards,
Robert

0 votes
12k views

Hi,
Is it possible to set up size of a margin fields beyond borders of chart area? I would like to shrink it because when having a lot of charts every inch of display is valued. Please see screenshot.

1 vote
12k views

Hi all, me again !

I’m looking for inverting the Y axis. I want to make a chart which chronology goes from top to the bottom. I don’t see any property that talks about this and there is no example showing that kind of feature. Is it possible to do ?

Thank you

0 votes
9k views

I’d like to Pan a chart with a DateTime xAxis some number of seconds (or bars) through code. It looks like the IRange for the chart rationalizes to so I somehow need to be able to convert a TimeSpan to an appropriate range I can use and set the XaxisVisibleRange. If there is an example I’m missing it.

  1. How should I specify a given timeSpan range for the XaxisVisibleRange?
  2. How should I validate that the new timeSpan range is within the range of the underlying dataSeries?
0 votes
16k views

Hi there

I got 2(or more) charts, and want to make line annotation on both
So i create 2 or more annotationCreationModifier, and want to releaseMouseCapture after the first point of line is placed at any of charts, for this im using SciChartSurface.MouseDown event

    List&lt;AnnotationCreationModifier&gt; AnnotationCreatorsList = new List&lt;AnnotationCreationModifier&gt;();

    public void LineAnotationCreaterModifier() 
    {
        AnnotationCreatorsList.Clear();

        AnnotationCreater = new AnnotationCreationModifier() { AnnotationType = typeof(LineAnnotation) };
        AnnotationCreater.AnnotationCreated += new EventHandler(AnnotationCreater_LineAnnotationCreated);
        PriceChart.ChartControl.ChartModifier = AnnotationCreater;
        PriceChart.ChartControl.MouseDown += new MouseButtonEventHandler(ChartControl_MouseDown);


        AnnotationCreatorsList.Add(AnnotationCreater);

        foreach (ChartArea a in SecondaryCharts)
        {
            AnnotationCreater = new AnnotationCreationModifier() { AnnotationType = typeof(LineAnnotation) };
            AnnotationCreater.AnnotationCreated += new EventHandler(AnnotationCreater_LineAnnotationCreated);
            a.ChartControl.MouseDown += new MouseButtonEventHandler(ChartControl_MouseDown);
            a.ChartControl.ChartModifier = AnnotationCreater;
            AnnotationCreatorsList.Add(AnnotationCreater);
        }
    }


    void ChartControl_MouseDown(object sender, MouseButtonEventArgs e)
    {
        PriceChart.ChartControl.MouseDown -= new MouseButtonEventHandler(ChartControl_MouseDown);
        foreach (ChartArea a in SecondaryCharts)
        {
            a.ChartControl.MouseDown -= new MouseButtonEventHandler(ChartControl_MouseDown);
        }

        if (e.ChangedButton == MouseButton.Left)
        {
            var area = sender as SciChartSurface;

            foreach (var ancr in AnnotationCreatorsList)
            {
                if (ancr.ParentSurface == area) { }
                else { ancr.ReleaseMouseCapture(); }
            }
        }
    }

But i cant understand when mousedown event executes
It allways executes when i click on a board
And sometimes executes at the second click (after first click, when the first point is placed)

I made video, and will post it

Here is link for video:

[video] https://http://www.youtube.com/watch?v=p9z0K09xRGI [/video]
0 votes
13k views

How do I get the data O, H, L, C and sent to another user control?I do not see any event to start.

1 vote
14k views

Hi,

I would like to achieve dynamic loading finely sampled data from db when user zooms in.

For example I would like to display 1 month of data sampled by day (one sample per each day). As user zooms in to day-level, I would like to load data only for visible day but sampled in finer resolution (for example one sample per minute). User could zoom in further to seconds or milliseconds details.

I could probable detect displayed time range and load data with corresponding sampling and switch the dataset bound to the control.

But after that the control will be bound only to visible portion of time interval and user will not be able to zoom out back to coarser level of detail (ie whole month).

Is there a way how to do this?

Thanks,
Petr

  • pal asked 11 years ago
  • last active 5 months ago
0 votes
11k views

Hey guys,

I have a couple of KeyBindings (up/down keys) that do custom stuff in my Chart.

Unfortunately, though – if I use the Shift + Up or Shift + Down key combinations, the old directional key logic comes back in, and I lose keyboard focus of the Chart Surface.

I am trying to disable it by using KeyboardNavigation.DirectionalNavigation=”None”, but I’m not having any luck.

Have you guys got a solution for me, to disable Directional Navigation on the SciChartSurface?

I would prefer not to add key bindings for Shift + Up that does nothing – just to make sure the event isn’t propagated up the chain, if possible.

Thanks,
Miles

0 votes
11k views

Hi!

I am trying out a feature in my application with editable vertical lines annotations. My problem is that my set method needs to perform some calculations when the vertical line is moved, and since the set method is being called multiple times when moving the annotation, it slows it down and doesn’t give the user that great feeling that it should

Is there any way of delaying the set method being called until the user actually drops the annotation?

0 votes
12k views

Hi folks,

What’s the recommended practice for returning values from hit testing back to my viewmodel? I’m calling HitTest() from a mouse click handler in my view codebehind, but I’d like to deal with the results in the viewmodel.

Thanks,
–George

  • yefchak asked 11 years ago
  • last active 5 years ago
0 votes
10k views

Is this normal ? I was expecting SetMinMax() to set both properties and then trigger validation …

When executing this with a Axis.VisibleRange
range.SetMinMax(100, 200);
range.SetMinMax(300, 400);
I get an ArgumentEcception : VisibleRange.Min (value=300) must be less than VisibleRange.Max (value=200)

I managed to get around it like this:

        if (min &gt; range.Max)
        {
            range.Max = max;
            range.Min = min;
        }
        else
        {
            range.Min = min;
            range.Max = max;
        }  
0 votes
10k views

Hi folks,

I’m using a RubberBandXyZoomModifier in the usual way, and it’s working fine.

But my application must support a mode where the user does essentially a rubberband selection of an area (actually just X-range, not Y-range) in order to specify a data range needed for subsequent calculation. I would like to use the built-in drawing of the range but disable the actual zooming.

Is there an easy way to do this? If not, does anybody have a pointer toward drawing an equivalent shaded region on top of the graph (maybe using Adorners, or Popups, or… whatever I guess?)

Thanks,
–George

3 votes
16k 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
11k views

I’m working on a Fifo series chart that fills up to its capacity, then calls xaxis.SuspendUpdates() to freeze the labels, then the line scrolls by – the view is of the last x seconds of data.

When SuspendUpdates has been called, then I maximize the app, the x-axis doesn’t resize properly, which is not really surprising. If I do a quick ResumeUpdates, then SuspendUpdates again, the label numbers have changed to the most recent values – also expected. So, how can I tell a suspended x-axis to refresh/redraw/resize the axis to properly fill, but not ResumeUpdates?

0 votes
9k views

Hi.

I’m having problems to get FastImpulseRenderableSeries or FastColumnRenderableSeries to behave as I need them to.

Issue 1:
FastColumnRenderableSeries doesn’t scale the column width as I need it when there’s more than one series with interdigitated columns. I need different FillColor for some of the columns, but all columns of all series should be displayed with the same width and spacing. Is there a way to achieve this? e.g. absolute column width setting?

Issue 2:
FastImpulseRenderableSeries doesn’t work with the default RolloverModifier. I’ll actually need a custom RolloverModifier, since I’ll need to display some custom properties which are not part of the IChartSeriesViewModel interface. But I thought the issue with the default RolloverModifier might be a bug, or something I haven’t quite understood yet.

I’ve written a demo application to illustrate both issues.

Best regards,
Axel.

  • axel asked 11 years ago
0 votes
11k views

Another question – is it possible to set the style of the most recent point in a chart? Like putting a “ball” or something visually larger onto the most recent item of the chart?

0 votes
15k views

Hi,

I’m using the following code for showing/hiding the axis:

    /// &lt;summary&gt;
    /// Show/hide all axis and labels
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;visibility&quot;&gt;The visibility status&lt;/param&gt;
    public void ShowHideAllAxis(Visibility visibility)
    {
        if (this.RenderableSeries != null)
        {
            for (int seriesCnt = 0; seriesCnt &lt; this.RenderableSeries.Count; seriesCnt++)
            {
                var renderSeries = this.RenderableSeries.ElementAt(seriesCnt);
                var axis = this.YAxes.GetAxisById(renderSeries.YAxisId);

                if (axis != null)
                {
                    ((AxisBase)axis).Visibility = visibility;
                }
            }
        }
    }

This will hide everything.
Is there a way for only showing the axis title and hide the rest of the axis stuff?

Thanks,
Egbert

0 votes
10k views

I’ve attached a screen-shot of the proof-of-concept App I am currently working on. It’s build according to the MVVM guidelines.

This App deals with large amounts of scientific measurement data. Each single measurement is flagged as belonging to a category: Outlier, Regular-Sample, Negative-Control, Positive-Control.

A single measurement is shown as a FastLineRenderableSeries on the “MST time traces” chart and as a single impulse (FastImpulseRenderableSeries) on the “Ranking plot”.
The charts use colours (grey, blue, green, red) in order to visualize the categories. Additionally there’s a “Selected” state, used to highlight the currently selected measurements and which is kept in sync across the DataGrid and the two charts (displayed pink on the charts).

Since the charts display such a vast amount of items (about 5000) I’ve to make sure that the important categories remain visible on the charts and do not get shadowed by less important categories. On the lines-chart I just have to care about the sequence of the IChartSeriesViewModel inside the ObservableCollection which I bind to the SeriesSource of the SciChartSurface. On the impulse-chart I have to split up each category into its own IChartSeriesViewModel. I therefore have up to 5 FastImpulseRenderableSeries shown on the “Ranking plot” (Outlier, RegularSample, NegativeControl, PositiveControl, Selected). This way the “selected items” always stick out of the crowd.

Now that you know a bit about my context: The otherwise terrific implementation of the standard RolloverModifier, which deals very elegantly with jammed charts like my “MST time traces”, is not very suited on my “Ranking plot”. As soon as there is more than one series, it displays RolloverMarkers for each of the series and generates as many SeriesInfo instances in its RolloverData-Property, which inconveniently aren’t sorted by distance to the mouse pointer, but by series index. The vertical line gets stuck at the first series’ XValue, which happens to be the less important category in my use case (outliers). (I’m using SourceMode=AllSeries).

Therefore question number 1: Is there a way for the RolloverModifier to display only the nearest series’ datapoint? If there isn’t: it would be great if you could extend the list of available SourceModes by something like “SourceMode.OnlyNearest” and implement such behaviour. For the time being: Is it my only option to write my own implementation of the RolloverModifier?

As to your other suggestions:

  • I can’t use PaletteProvider for the colouring, because of two reasons: The colouring is based on data (categories) which is not exposed on IRenderableSeries, thus not available to the PaletteProvider. It would actually need a reference to the corresponding ViewModel instance of a measurement. (BTW: I’m feeding those ViewModels to SciChart; they implement IChartSeriesViewModel.)
    The second reason is that a PaletteProvider won’t solve the “shadowing” problem, since it would not be able to influence the “Z-order” of the plots.

  • The SeriesInfo generated by the RolloverModifier also doesn’t expose any of the really interesting info I’d like to include on the RolloverMarkers. It’s the meta-data which is most interesting to the user in this context, less the plot data which he is already seeing displayed on the chart. I’ve meanwhile worked around this, by creating a converter which takes the XValue of an Impulse and converts it into a reference to the corresponding Measurement-ViewModel.

I hope I do not sound like only being complaining about SciChart. I’m actually very pleased with its performance when dealing with several thousands of plots on a chart. No other charting library I’ve tested so far has matched that!
I also love the interactive line annotations and the ChartModifiers. Furthermore, it was astonishingly simple to write my own “RectangleSeriesSelectionModifier”, which I can now deploy on any SciChart instance with just a single line of XAML. Nice work!

Best regards,
Axel.

  • axel asked 11 years ago
0 votes
9k views

I have a SciChartSurface with several FastLineRenderableSeries. I may have several days worth of per second data in each series. I have set my XVisibleRange to 10 minutes and I update it every second to make sure the view stays current. I want to also allow the user to either pan or zoom that view but only on the x axis. I see the demo of the SciStockChart using the IsPanEnabled that allows the functionality I want but that does not appear to be available on the SciChartSurface. Is there another way to accomplish this or do I need a different type of chart?

1 vote
20k views

I want YAxis Auto Scale less than the value max 10% and greater value min 10%, how?

  • kingsoff asked 11 years ago
  • last active 9 years ago
Showing 151 - 200 of 4k results