Hello,
I am trying to create a XABCD pattern annotation. Currently, I am able to create the XA, AB, BC, CD legs using LineAnnotation then add the two remaining XB and BD lines programmatically. However, when creating the LineAnnotations, I am not getting the real-time feedback between the 1st and 2nd clicks. I have full source code but from what I can see, all SciChart annotations are at most, limited to 2 clicks. I’ve read through the Fibonacci composite annotations which are close to what I’m trying to achieve but only allow interaction by 2 clicks since they’re based on BoxAnnotation.
I am currently using full MVVM with a custom derived class from AnnotationCreationModifier per this article: Editing annotations and keeping track of them in an mvvm application combined with the Multi-Pane Stock Chart example. For the PatternAnnotationViewModel, I am using dependency properties for X, A, B, C, D so they are bindable if needed.
Huge thanks in advance,
Jason
Psuedo code
1st click
Place point X portion of XA LineAnnotation, begin visual feedback for point A
2nd click
Place point A
Set beginning of AB to A, begin visual feedback for point B
3rd click
Place point B
Set beginning of BC, begin visual feedback for point C
Draw XB LineAnnotation
PolygonFill XAB region
4th click
Place point C
Set beginning of CD, begin visual feedback for point D
5th click
Place point D
Draw BD LineAnnotation
PolygonFill BCD region
- Jason Neeley asked 8 years ago
- last active 5 years ago
I will continue to this question here, but with more details. So I need to be able to drag axis annotations separately. Is there any possible way to achieve this in iOS? Basically I subclassed SCIAxisMarkerAnnotation and implemented my own -onPanGesture:At: but it does not separate instances of the class when I try to drag one of the annoation. All moves to same place. How can I detect which annotation is being dragged?
CDAxisMarkerAnnotation.h
#import <SciChart/SciChart.h>
@class CDAxisMarkerAnnotation;
@protocol CDAxisMarkerAnnotationDelegate <NSObject>
- (void)axisMarkerAnnotation:(CDAxisMarkerAnnotation *)axisMarkerAnnotation
didPanToAxisValue:(double)axisValue;
@end
@interface CDAxisMarkerAnnotation : SCIAxisMarkerAnnotation
@property (weak, nonatomic) id<CDAxisMarkerAnnotationDelegate> delegate;
@end
CDAxisMarkerAnnotation.m
#import "CDAxisMarkerAnnotation.h"
@implementation CDAxisMarkerAnnotation
- (BOOL)onPanGesture:(UIPanGestureRecognizer *)gesture At:(UIView *)view
{
if (![view isKindOfClass:[SCIChartSurfaceView class]]) {
return [super onPanGesture:gesture At:view];
}
switch (gesture.state) {
case UIGestureRecognizerStateBegan:
case UIGestureRecognizerStateChanged:
case UIGestureRecognizerStateEnded: {
CGPoint location = [gesture locationInView:view];
id<SCIRenderSurface> renderSurface = [self.parentSurface renderSurface];
CGPoint pointInChart = [renderSurface pointInChartFrame:location];
id<SCICoordinateCalculator> yCalculator = [self.yAxis getCurrentCoordinateCalculator];
double valueForYAxis = [yCalculator getDataValueFrom:pointInChart.y];
[self.delegate axisMarkerAnnotation:self didPanToAxisValue:valueForYAxis];
break;
}
default: {
break;
}
}
return YES;
}
@end
Thanks,
Irmak
- Irmak Can Ozsut asked 7 years ago
- last active 3 weeks ago
Hi,
I added VerticalLineAnnotation to my SciChartSurface with multiple FastLineRenderableSeries. This is working fine, but I can’t figure out how to show the corresponding Y values at side of vertical line. (Each Dataserie has its own YAxes.)
I Found a place in VerticalLineAnnotations template, where I can insert a stackpanel or something to show the values, but I don’t know how to make the data binding work.
I want to do something like in the attached picture.
Best Regards,
Martti
- Martti.Ojala@NJ asked 11 years ago
How do I implement zooming in real time charts. The examples are all static data, and the zooming works, and a couple of links I found, do not explain it very well.
How can I accomplish zooming on a real time SciChart?
- darlon asked 10 years ago
- last active 6 years ago
Hi,
I’ve got the following scenario that I need to implement and it would be very nice if you could give me a jump-start. I need to bind the x-axes values represented by 2 vertical lines and the y-axis values represented by 2 horizontal lines to a viewmodel, so that the values inside the viewmodel change when moving the lines per mouse on the screen and the other way around (see mockup for how it should look like). I think the rollover modifier could be usable for this, but I need some pseudo code or an example app on how to bind the rollover modifiers value to the viewmodel and how to display 4 rollover modifiers on the chart surface.
Thanks
Joerg
- Joerg Hoehn asked 12 years ago
- last active 3 years ago
I am using WPF SciChart version 1.3.1.1107 under the MVVM pattern.
I’ve included some sample code from a couple of my view models for reference purposes but it identical to sample code I copied from your examples.
My problem is that the data values arrive in a non sorted date time order and as a result my chart line does not connect the points based on the xaxis datetime value, but instead connects the points based on when the codes adds the points to the data series.
Do you have a feature that will allow me to plot a line based on a date time values?
IDataSeries dataSeries = ChartDataSeriesSet.AddSeries(); private IDataSeriesSet _chartDataSeriesSet = new DataSeriesSet(); public IDataSeriesSet ChartDataSeriesSet { get { return _chartDataSeriesSet; } set { _chartDataSeriesSet = value; NotifyPropertyChanged("ChartDataSeriesSet"); } } private IDataSeries _dataValues = null; public IDataSeries DataValues { get { return _dataValues; } set { _dataValues = value; NotifyPropertyChanged("DataValues"); } }
- sdemooy asked 12 years ago
- last active 10 years ago
I am trying to add Zoom capability to application that is based on ECG Monitor sample. As ECG Monitor manages VisibleRange, I need to stop setting VisibleRange when zoom is started. I am setting flag in RubberBandXyZoomModifier.OnModifierMouseDown.
Is there any way to create a custom ChartModifier to be notified when the user clicks mouse down on the chart, or axis?
- manishdoshi asked 12 years ago
- last active 2 years ago
Hi,
I would like to display simple equations as axis titles. For example cm^2 (with the 2 superscript) or g / mol with the “mol” under the g.
Is there a way to do that? At least being able to superscript or subscript any letter would be a must.
Thanks.
- xhahn asked 11 years ago
- last active 9 years ago
Hi guys,
After adding a YAxis to the left of my SciChart I’ve noticed that this code no longer functions as I expect:
public override void OnModifierMouseDown(ModifierMouseArgs e) { base.OnModifierMouseDown(e); if (ParentSurface.RenderableSeries.First().XAxis == null) return; if (!_mouseDragged && IsFunctional) { _mouseDragged = true; _selectionStart = (DateTime) ParentSurface.RenderableSeries.First().HitTest(e.MousePoint).XValue; } }
_selectionStart should be a Date under the cursor where the user has just clicked. Instead it’s a Date approx. 40pixels to the right of where the user has just clicked because the Left YAxis is approx. 40 pixels, and the ModifierMouseArgs.MousePoint is considering the YAxis space into it’s X coordinate value.
So when I take that point and perform a HitTest, I am not getting the expected result here.
I will write a fix for this to take into account a Left Y Axis if one exists and modify the point’s X coordinate value, but I thought to give you a heads-up in case this is outside of expected functionality and is indeed a bug.
Cheers,
Miles
- bstapylton asked 12 years ago
- last active 1 year ago
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
- Lisbeth Skogland asked 11 years ago
- last active 3 years ago
…sucks. Likely a programming error.
Trying to show a larger chart which has 16000 annotations on it. Besides that being a programming error at this point – we do / will have zoom out charts with that many data points.
I spend minutes, literally, in
Annotations.Add – no way to add an enumeration of them.
SuspendUpdates
has been called around this – so updates SHOULD not happen, but it seems there is a lot of overhead here.
What is adviced?
Besides that slowness in creating the chart, it is also (very) slow to change sizes etc.
Any advice for a heavily annotated chart?
- NetTecture asked 11 years ago
I have a realtime linear chart with multiple x/y axes. When I am zooming the surface, I am changing the X/Y AutoRange mode from AutoRange.Always to AutoRange.Never, which allows me to have Modifiers zooming and panning on a realtime AutoRange chart.
After, I want to re-enable AutoRange when ZoomExtents (double click) occurs.
See below:
public class ZoomExtentsXAxesModifier : ZoomExtentsModifier { private Point _startPoint; private bool _isMouseDoubleClick; public override void OnModifierMouseDown(ModifierMouseArgs e) { base.OnModifierMouseDown(e); if(e.Modifier == MouseModifier.Ctrl) return; if (e.MouseButtons == MouseButtons.Left) _startPoint = e.MousePoint; _isMouseDoubleClick = false; } public override void OnModifierMouseUp(ModifierMouseArgs e) { base.OnModifierMouseUp(e); if (e.Modifier == MouseModifier.Ctrl) return; if (e.MouseButtons != MouseButtons.Left || _startPoint == e.MousePoint || _isMouseDoubleClick) return; using (ParentSurface.SuspendUpdates()) { foreach (var axise in XAxes.Where(axise => axise.AutoRange != AutoRange.Never)) { axise.AutoRange = AutoRange.Never; axise.Zoom(_startPoint.X, e.MousePoint.X); } foreach (var axise in YAxes.Where(axise => axise.AutoRange != AutoRange.Never)) { axise.AutoRange = AutoRange.Never; axise.Zoom(_startPoint.Y, e.MousePoint.Y); } } } public override void OnModifierDoubleClick(ModifierMouseArgs e) { base.OnModifierDoubleClick(e); if (e.Modifier == MouseModifier.Ctrl) return; foreach (var axise in XAxes) axise.AutoRange = AutoRange.Always; foreach (var axise in YAxes) axise.AutoRange = AutoRange.Always; _isMouseDoubleClick = true; } }
For the one chart it is working ok, but when I have more then 2 charts, it is zooming incorect? What can I solve this? I need to recieve one event, when user is zooming, panning or resizing chart. Is it possible?
Thanks,
Arthur
- Arthur Romanov asked 10 years ago
I’m wondering what the established methods would be for the following scenario:
You generate data in your own assembly and dump it into an XyDataSeries and point or line render series with an IChartSeriesViewModel object and bind that using the SeriesSource api.
But it is relatively common to have additional metdata about a given datapoint that is keyed to something other than an X or Y value. For example, the plot may be based on the a computed number that is independent of a time value, but you still want to display the time value for that chart in the rollover tooltip.
What are the options for dealing with this in scichart?
Best and thanks!
- dsantimore asked 10 years ago
- last active 1 year ago
Request for enhancement to polar charts to allow for rotation of the X axis. I want to use this chart type with compass directions. Therefore a range of 0-360 with 0 at the top of the chart.
I was able to use the workaround for rotation here:
https://www.scichart.com/questions/question/polar-chart-x-axis-starting-point-and-direction
However as the OP on that question noted there are several drawbacks to simply rotating the entire chart surface.
Also I found that at run-time rotating the chart surface is inaccurate as in this example:
As you can see the 100 degree mark is not in the correct location. Directly right should be 90.
In the designer the chart axis looks as it should:
- wawr asked 9 years ago
- last active 5 years ago
Hi,
I am trying to build a chart with two series in it. One is an OHLC chart with the time on the X axis and price on the Y Axis. The other is an Bar chart with the price as the X Axis and an integer scale for the YAxis. The bar chart will need be have horizontal columns though which will need to align with the prices on the OHLC series. I have attached an image here with what the chart should look like, is there a way to achieve this ?
- deepakb1 asked 10 years ago
I am using MVVM and am having problems and need you to have a quick look please as this is substantial
1)Run Solution
2)Click on Load, browse to folder Configuration\20120814 and select OK
3) 6 data series will load, the program then adds random data for each trace. The point count for each trace is shown on the form
4) After a few minutes, the update speed of the points reduces (this is not intended) the counter should update each second
5) when the count reaches about 16000 the program is pretty well locked up and non responsive.
It may well be a problem that I have introduced, at least I hope it is, as our intended application will be using very large data sets
Please could you have a look ASAP and get back to me
You have also not replied to the annotation problem I explained in another thread, I sent you example code to show you the problem
Thanks
- wilx asked 11 years ago
- last active 7 months ago
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
Hi,
Can you tell me if it is possible to make a contour plot like on the image i have attached?
I cant seem to find a way to do that.
Best regards,
Jeppe
- Unisense A/S Tueager asked 10 years ago
Hi Guys,
My Sci Chart has dates along the X-Axis. So far my data is at week level (one point for each week).
Ideally I would like to have a subtle grid line at each week, a more noticeable grid line to represent the start of each month, and a major grid line to represent the start of each year.
I understand that the current implementation of the XAxis seems to only use Minor and Major gridlines.
I am interested in drawing grid lines such that:
one minor vertical grid-line is drawn on the start of each week
one medium vertical grid-line is drawn on the start of each month
one major vertical grid-line is drawn on the start of each year
And for these grid lines to be drawn regardless of the current visible range or “zoom” of the chart.
Is there a simple tutorial or some snippet of code illustrating what I need to overwrite in a custom class in order to get this functionality into my chart?
Thanks again,
Miles
- bstapylton asked 12 years ago
I was trying to figure out why I couldn’t get minor tick marks to appear on my axes and then I realized it’s because of the theme I was using (BrightSpark). Just a heads up to anyone else who may run into this.
IMO themes should not hide chart features such as tick marks.
- David Adams asked 9 years ago
- last active 9 years ago
Is there a way to have axis X placed vertically and Y horizontally? Other words rotate chart 90 degrees to the left or right.
- sdvinin asked 12 years ago
- last active 8 years ago
Hey guys,
I’m looking at changing the Numeric Axes on the Right and Left axes of my Chart, to right-align the Text within the Axis Labels.
I noticed this topic where Yuriy hinted that in 2.0 this would be a supported feature, but can’t seem to see what it would be:
http://http://www.scichart.com/questions/question/x-and-y-axis-formatting/
The “work around” featured in that topic doens’t seem to change anything in my situation.
I have tried setting FlowDirection to “RightToLeft”, which does the job, but has some ugly placement side-effects.
Is there something I’ve overlooked?
Thanks,
Miles
- bstapylton asked 10 years ago
- last active 8 years ago
The issue I’m dealing with is that after setting up the SeriesSelectionModifier, I require a double-click (and a very, very precise double click, at that) to select a series. Naturally, this is also competing with the ZoomExtents() call that is the normal effect of a doubleclick.
<!-- Chart --> <scichart:SciChartSurface Grid.Column="1" Grid.Row="1" x:Name="sciChartSurface" SeriesSource="{Binding SeriesList, Mode=OneWay}" ChartTitle="{Binding Title}" > <scichart:SciChartSurface.XAxis> <scichart:NumericAxis x:Name="AxisX" Id="AxisX" AxisTitle="{Binding XTitle}" AxisAlignment="Bottom" /> </scichart:SciChartSurface.XAxis> <scichart:SciChartSurface.YAxes> <scichart:NumericAxis x:Name="AxisY1" Id="AxisY1" AxisTitle="{Binding Y1Title}" AxisAlignment="Left" /> <scichart:NumericAxis x:Name="AxisY2" Id="AxisY2" AxisTitle="{Binding Y2Title}" AxisAlignment="Right" IsEnabled="{Binding ShowY2Axis}" Visibility="{Binding RelativeSource={RelativeSource Self}, Path=IsEnabled, Converter={StaticResource convBooleanToVisibility}}" /> </scichart:SciChartSurface.YAxes> <!-- Modifiers --> <scichart:SciChartSurface.ChartModifier> <scichart:ModifierGroup> <!-- TODO: Comment --> <scichart:ZoomPanModifier ExecuteOn="MouseRightButton" /> <!-- TODO: Comment --> <scichart:RubberBandXyZoomModifier IsEnabled="True" x:Name="rubberBandZoomModifier" IsXAxisOnly="False" ZoomExtentsY="False" IsAnimated="True"/> <!-- TODO: Comment --> <!--<scichart:RolloverModifier x:Name="rolloverModifier" DrawVerticalLine="False" UseInterpolation="True" SourceMode="AllSeries" />--> <!-- TODO: Comment --> <scichart:CursorModifier x:Name="cursorModifer" SourceMode="AllSeries" UseInterpolation="True"/> <!-- TODO: Comment--> <scichart:ZoomExtentsModifier /> <!-- Exposes a LegendData property (of type ChartDataObject) which can be accesed via elementName from another control --> <!-- ChartDataObject exposes a list of SeriesInfo --> <scichart:LegendModifier x:Name="legend" GetLegendDataFor="AllSeries"/> <!-- Provides selection of series and custom styling options (to the selected series) --> <scichart:SeriesSelectionModifier SelectedSeriesStyle="{StaticResource selectedSeriesStyle}" ExecuteOn="MouseLeftButton" /> </scichart:ModifierGroup> </scichart:SciChartSurface.ChartModifier> </scichart:SciChartSurface>
- dsantimore asked 11 years ago
Zoom History
Ok, so as I had not had a reply,I have managed to slog this out and I have created a customRubberBandXyZoomModifier.
In this I keep a copy of all the VisibleRanges on the mouse down and on the mouse up ( if it was dragging) I copy these ranges into a list of ranges in my ViewModel (parent) see below.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Abt.Controls.SciChart; using AVR_HMI.ViewModels; namespace AVR_HMI.Charting { public class customRubberBandXyZoomModifier : RubberBandXyZoomModifier { AnalogueChartViewModel _parent; IRange _tempOldXRange; List<IRange> _tempOldYRange = new List<IRange>(); public customRubberBandXyZoomModifier(AnalogueChartViewModel parent) { _parent = parent; } public override void OnModifierMouseDown(ModifierMouseArgs e) { _tempOldXRange = XAxis.VisibleRange; _tempOldYRange.Clear(); foreach (NumericAxis na in YAxes) { _tempOldYRange.Add(na.VisibleRange); } base.OnModifierMouseDown(e); } public override void OnModifierMouseUp(ModifierMouseArgs e) { if (IsDragging) { if (_tempOldXRange != null) { _parent.OldXRange = _tempOldXRange; _parent.XRangeHistory.Add(_tempOldXRange); _tempOldXRange = null; } if (_tempOldYRange.Count != 0) { int n = 0; foreach (IRange ra in _tempOldYRange) { if (_parent.YRangeHistories[n] != null) { _parent.YRangeHistories[n].RangeHistory.Add(_tempOldYRange[n]); } else { break; } n++; } } _parent.ZoomBack.RaiseCanExecuteChanged(); _parent.AutoRangeEnable = false; } base.OnModifierMouseUp(e); } } }
Then in the view model, I have an unzoom button which takes the last set of Ranges off the list and restores these ranges as below
List<IRange> _xRangeHistory = new List<IRange>(); public List<IRange> XRangeHistory { get { return _xRangeHistory; } set { _xRangeHistory = value; } } List<YRangeHistory> _yRangeHistories = new List<YRangeHistory>(); public List<YRangeHistory> YRangeHistories { get { return _yRangeHistories; } set { _yRangeHistories = value; } } DelegateCommand _zoomBack; public DelegateCommand ZoomBack { get { if (_zoomBack == null) { _zoomBack = new DelegateCommand( this.OnZoomBackCommandExecute, this.OnZoomBackChangedCommandCanExecute); } return _zoomBack; } } private bool OnZoomBackChangedCommandCanExecute(object obj) { if (YRangeHistories.Count == 0 || YRangeHistories[0].RangeHistory.Count == 0) { return false; } return true; } private void OnZoomBackCommandExecute(object obj) { if (XRangeHistory.Count != 0) { XAxis.VisibleRange = XRangeHistory[XRangeHistory.Count-1]; XRangeHistory.Remove(XAxis.VisibleRange); } if (YRangeHistories.Count != 0) { int n=0; foreach (NumericAxis na in YAxes) { int offset = YRangeHistories[n].RangeHistory.Count; if(offset > 0) { na.VisibleRange = YRangeHistories[n].RangeHistory[offset - 1]; YRangeHistories[n].RangeHistory.Remove(na.VisibleRange); } n++; } } if (YRangeHistories.Count == 0 || YRangeHistories[0].RangeHistory.Count == 0) { AutoRangeEnable = true; } ZoomBack.RaiseCanExecuteChanged(); VPManager.InvalidateParentSurface(RangeMode.None); }
On adding a new YAxis, I add a new YRangeHistory
YAxes.Add(numericAxis); YRangeHistories.Add(new YRangeHistory());
YRangeHistory Class
using System.Collections.Generic; using System.Linq; using System.Text; using Abt.Controls.SciChart; namespace AVR_HMI.Charting { public class YRangeHistory { List<IRange> _RangeHistory; public List<IRange> RangeHistory { get { return _RangeHistory; } set { _RangeHistory = value; } } public YRangeHistory() { _RangeHistory = new List<IRange>(); } } }
Hope this helps others, and if there is a better/easier way of doing this, please get back to me, I know I am on the demo version of SciChart at the moment, but we are intending to buy it and I worry about the lack of good documentation/support. I don't want to start looking elsewhere.
- wilx asked 11 years ago
I am currently adding line to a chart to show when a value is ON and using the gap in a series feature to indicate when the value is OFF. In order for this to work I need to update the chart every few seconds when the value is ON; however, I do not want to add additional points; instead I want to either update a point in the line series or I want to remove a point and then add a new point. In my case its the x-axis value that I need to change.
Can you please suggest if this is possible?
If yes I am also wondering how to best find a specific point in a line series.
- sdemooy asked 12 years ago
Hi,
In my application I am using two charts for represent different values. I am using LegendModifier on the first chart. Is it possible when i uncheck the series on first chart and the same color series on second chart also need to hide from the second chart. Any event callback function available in LegendModifier ?
- Arun Surendran asked 2 years ago
- last active 2 years ago
I am considering applying server-side licensing for my javerScript application.
In the document below, there is a phrase “Our server-side licensing component is written in C++.”
(https://support.scichart.com/index.php?/Knowledgebase/Article/View/17256/42/)
However, there is only asp.net sample code on the provided github.
(https://github.com/ABTSoftware/SciChart.JS.Examples/tree/master/Sandbox/demo-dotnet-server-licensing)
I wonder if there is a sample code implemented in C++ for server-side licensing.
Can you provide c++ sample code?
Also, are there any examples to run on Ubuntu?
- bstapylton asked 11 years ago
- last active 9 years ago
Hi,
When we have 9 horizontal gridlines, we would also like to see 9 yvalues.
Is it possible to also show 300 and -500 on Yaxis1 and 500 and -300 on Yaxis2
(see attachment)
Thanks and best regards,
Egbert
- EJansen asked 10 years ago
Hi!
Got a wierd issue. My client is installing my application (built with Scichart) and everything works fine, except on the laptop of this one particular guy, where the zoom does a wierd thing. It zooms the axes, but the graph is not moving. I’m quite sure there is nothing wrong with my application as it works everywhere else, but can any of you think of anything that I should check on this guys machine? I am at a complete blank here…
Thanks for helping me out….
- Lisbeth Skogland asked 10 years ago
- last active 3 years ago
Hi there!
I successfully build trader chart from nice example “2D Charts -> Create Stock Charts -> Using SciStockChart”.
Then I had to draw line on the chart with candles, but the problem was, that the line didn’t have data on some dates (there is data for lots of candles, but for the red line there is only 4 points: A,B,C,D), and result i want in shown here (solved):
Axes:
XAxis: CategoryDateTimeAxis (Dates)
YAxis: NumericAxis (Prices)
Series:
Candles: FastCandlestickRenderableSeries (OhlcDataSeries<DateTime, double>)
Red Line: FastLineRenderableSeries (XyDataSeries<DateTime, double>)
Problem:
CategoryDateTimeAxis type ignores the XAxis values for computation of x-coordinate, and choosing only the index of the value instead. CategoryDateTimeAxis vs DateTimeAxis. I have N-number of candles and only 4 values for red line. How to receive line with no gaps, with points on their places (dates on X-axis) ? I can’t use simple DateTimeAxis, because candles don’t draws.
Solution:
1) Use double.NaN for each date (x-axis value) if no data for the red-line on date given.
2) In FastLineRenderableSeries set DrawNaNAs = LineDrawMode.ClosedLines (if don’t use this flag, you will receive something like this: WPF Chart Gaps (Nulls) in Series
Thanks a million to Julia Skorobogata from SciChart!
- Andrey Гевин asked 7 years ago
- last active 7 years ago
I’m trying out polar chart for my specific needs. In my scenario x-axis needs to display 0-360 (angle) values starting from bottom and going counter-clockwise so that 0 is at the bottom, 90 is at right, 180 is at the top and so on. Looking at polar chart default x-axis display it starts from right and go clockwise. Is there any way to change this behavior?
- Parashar Satpute asked 9 years ago
- last active 5 years ago
Hi,
I have some XyDataSeries<DateTime, double> showing some data on my chart. Also I have 2 vertical line annotations (red and blue) where I know the two DateTime values.
Is there a effective way to get the double values between this range of each XyDataSeries.
Regarrds Markus
- Rupertsberger Markus asked 10 years ago
- last active 3 months ago
Hi,
I am currently trying the iOS Charting Library and want to implement a Column series with the drill-down functionality (when touching one of column points by end user). Does the charting component supports the hit-testing or selection feature to determine which point has been clicked at runtime?
Thanks!
Liza
- liza yudup asked 7 years ago
- last active 7 years ago
Hello, @scichart team,
one question please for Column Chart (2D; WPF).
Based on on the example from your SDK for Column Chart (2D Charts – Column Chart).
No changes to the code at all;
My need is to display each “X” value on X axis;
I.e. right now it is “0, 2, 4, 6 etc”
But I need “0, 1, 2, 3, 4, 5 etc.”
I.e. no changes expect this one.
I played with https://www.scichart.com/documentation/v5.x/SciChart.Charting~SciChart.Charting.Visuals.Axes.AxisCore_members.html and with the custom NumericLabelProvider but didn’t find how to make this.
Please suggest how to achieve this.
Thanks!
-Egor
- Egor Baykov asked 6 years ago
- last active 6 years ago
Hi There,
I work for a company where they use WPF SciChart alot in many applications.I am new bee to SciChart but I need to learn them in deep to meet our user requirements.So can you please let us know how can we get good command of sci charts.Are there any video tutorials? Are there any simple samples to start.
Regards,
Priya
- priya asked 10 years ago
- last active 10 years ago
Hi
I not really understand how i could display the X and Y value separated in a rolloverLabel?
In the example is always on value like Y.
Can you help me?
Thanks
- Marcel asked 12 years ago
- last active 9 years ago
Hi
This is a little snippet of my code
<s:SciChartSurface SeriesSource="{Binding ChartSeries}"
YAxes="{Binding YAxisCollection}"
XAxis="{Binding XAxis}"
Annotations="{Binding AnnotationCollection}"
s:HorizontalGroupHelper.HorizontalChartGroup="horizontalChartGroup">
I would like to be able to set throught my ViewModel the “syncWidthGroup” of the HorizontalChartGroup like this.
s:HorizontalGroupHelper.HorizontalChartGroup="{Binding ChartGroup}"
But an exception is thrown saying I can only bind to DP og DO.
System.Windows.Markup.XamlParseException occurred
HResult=-2146233087
Message=A 'Binding' cannot be set on the 'SetHorizontalChartGroup' property of type 'SciChartSurface'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.
Source=PresentationFramework
LineNumber=14
LinePosition=324
StackTrace:
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at Sekal.DrillScene.Desktop.Application.Views.TrackView.InitializeComponent() in c:\dev\projects\SekalApplications\Client\Sekal.DrillScene.Desktop\obj\Debug\decoratedxaml\Application\Views\TrackView.xaml:line 1
at Sekal.DrillScene.Desktop.Application.Views.TrackView..ctor() in c:\dev\projects\SekalApplications\Client\Sekal.DrillScene.Desktop\Application\Views\TrackView.xaml.cs:line 10
InnerException:
So how would I go about doing this through code and not xaml, as I use ViewModel first approach and ViewModels are dynamically appended to an Items collection? (Using Caliburn.Micro)
- Sander Struijk asked 9 years ago
- last active 9 years ago
Hi Guys
I am using an ItemsControl to display a collection of SciStockCharts. I want to be able to use a single SciChartOverview (not part of the Item Template) to set the visible range on all of the charts displayed in the ItemsControl. Is this possible and if so how would I go about achieving it.
Thanks in advance
Regards
Ian Carson
- Ian Carson asked 10 years ago
- last active 9 years ago
Hi SciChart-Team!
This is more a feature than a support request but I could not find a more suitable place for it.
One of the strengths of SciCharts is its ability to select – use case dependend – the most appropriate resampling technique for drawing from a wide variety of options. Currently I depict a 2-dimensional empirical probablity density function (PDF) with the heatmap. The best way for a sub-/resampling would be a kind of “Sum”-Mode to represent the new “Cell-Count” and to prevent the disappearance of strongly localized, concentrated PDF-spikes if the window is scaled down. Maybe it is possible to implement such a resampling mode for the heatmap in a future release?
Due to the lack of a “Sum”-Mode I tried to use “Max”-Mode to keep the PDF-Spikes visible after scaling down but that didn’t worked as I expected. Was my expectation wrong? I know I can do it by myself and recalculate the PDF for the new heatmap size, create a new Heatmap2DArrayDataSeries … etc. but it would be nice if it would work out of the box.
Thanks!
Janko
- janko asked 9 years ago
Hello,
This is my data structure which needs to be plotted using XyScatterRenderableSeries:
public class Measurement
{
public Color Color { get; set; }
public double X { get; set; }
public double Y { get; set; }
}
I need to plot a list of measurements. It can be done in one series but each point color needs to be read from measurement data. To achieve that I’ve used a custom PaletteProvider and the result is satisfactory:
It looks good but there is a huge problem with a performance. If I try to pan, zoom etc. the application horribly slows down.
Also I’ve tried to group measurements by Color and then plot a couple of series with specified color but the result is the same.
I am attaching a simple application which shows the problem.
Hope anyone can help me.
Best regards,
Darek
- Darek Marek asked 6 years ago
- last active 6 years ago
Hello support team,
Im looking for a way to use keys to navigate through values in the graph. The rollover provides this easily with the mouse.
I include the rollovermodifier and the template I have. Do you have an idea how to do this? I just need to navigate left and right with the cursors. Any input or idea is extremely welcome.
Thank you very much for your great support
Marcel
- Marcel asked 11 years ago
Hi,
Annotation chart sample Drag Horizontal Threshold allow us to draw custom controllable color for the data series. The same way I need to draw the chart surface background color. I couldn’t find the appropriate API to do this job. Could you advise how to draw surface background color.
Update:
Attached the graph image, I like to draw the grey and white backgrounds based on horizontal and vertical line positions.
Thanks.
- Santhoshkumar asked 10 years ago
- last active 10 years ago
Good afternoon,
In the project Im working I need to save the annotations created so I can load generate them when the graph is generated.
I have tried to serialize them but maybe because its obfuscated I get an exception I try serialization:
There was an error reflecting type ‘Abt.Controls.SciChart.LineArrowAnnotation’
inner exception: There was an error reflecting property ‘InputBindings’.
Do you have an easy solution for this?
I would like to ask if its possible to have such a feature included, a method that would return the xml of the current state of the object.
or the list of minimum properties needed for annotation base:
X1, X2, Y1, Y2, YAxisId
then each different annotation type has different properties, thats why serialization would be extremely useful in this case.
Thank you for your attention
- Marcel asked 11 years ago
Hi
Has anyone implemented or has any thoughts on how to implement keyboard shortcuts to zoom and pan? Something like key up/down/right/left to pan and shift+up/down/right/left to zoom?
- Lisbeth Skogland asked 11 years ago
I want to have a BoxAnnotation where Y1 (- double.Infinity) and Y2 (+ double.Infinity). Basically I wanna specify only X1 and X2. And the behaviour must ensure always the box annotations Y1 & Y2 stretch to visible area even when I resize (zoomout) the chart.
In the screen shot its not stretched.
- Matthias Kientz asked 9 years ago
- last active 9 years ago
I’m trying to create a spectrum viewer with your library. One important feature is a cursor supporting both automatic mode and manual mode. In automatic mode, it stays at the maximum value. In manual mode, it moves with finger panning. It’s close to the SCICursorModifier with the cross lines, but it should always stay on the plot even without touch. Also it should reside on real data points instead of anywhere in between like the SCIRolloverModifier instead of the SCICursorModifier.
Could you give me some advices about how to achieve it? Thanks.
EDIT: after reading more of your documents, I believe HorizontalLineAnnotation and VerticalLineAnnotation are the way to go. I have already added them as the automatic mode cursor. For the manual mode, I still need your help to achieve either:
1) a callback function for the VerticalLineAnnotation drag event, so that I could move both lines to the corresponding data point
or
2) a custom ZoomPanModifier to allow me to distinguish one point or two points touch: one point panning to move the whole plot and two points panning to determine the new cursor location and redraw the two annotations there
EDIT2: I was able to create a custom VerticalLineAnnotation class to handle the panning event. There is one more question left. Right now in order to update the verticallineannotation and horizontallineannotation on the graph, I remove them from sciChartSurface.annotations, change x/y locations and add them back. Is there a redraw or refresh or update function to call directly?
Thanks
- Haoran Xie asked 5 years ago
- last active 5 years ago
Hi,
Now that I’m binding to a SeriesSource instead of creating my RenderableSeries in XAML, I don’t know how to apply a RolloverMarkerTemplate.
In XAML I had the following:
<SciChart:FastLineRenderableSeries SeriesColor="Blue"> <SciChart:FastLineRenderableSeries.Style> <Style TargetType="{x:Type SciChart:FastLineRenderableSeries}"> <Setter Property="RolloverMarkerTemplate"> <Setter.Value> <ControlTemplate> <Ellipse Width="7" Height="7" Fill="SlateGray" Stroke="SlateGray" StrokeThickness="1" /> </ControlTemplate> </Setter.Value> </Setter> </Style> </SciChart:FastLineRenderableSeries.Style> </SciChart:FastLineRenderableSeries>
But now I do something like this:
_chartSeries.Add(New ChartSeriesViewModel(rawSeries, New FastLineRenderableSeries())) With _chartSeries(0).RenderSeries .SeriesColor = Colors.Blue End With
I’m able to set the SeriesColor = Colors.Blue in code, but I don’t know how to generate the RolloverMarkerTemplate to control other features such as the ellipse shape.
Thanks,
–George
- yefchak asked 11 years ago
Now I using white collor for backgrounds:
<!-- Background defaults -->
<item name="sciChartBackground">@color/white</item>
<item name="legendBackground">@color/white</item>
<item name="axisTooltipBackground">@color/white</item>
But I whant to display text view uhder chart
When I set backgrounds as transparent I see black lines
And questions is:
1. how can I setup chart to display text under chart component
2. where I can read/see information about styles and for which each parameter is needed.
On first screenshot its what I needed
On second one what I have
- Evgeny Khramov asked 6 years ago
- last active 6 years ago
Hi,
How can I get my application to do the following:
- RubberBandXyZoomModifier execute on left mouse
- ZoomPanModifier execute on left mouse + ctrl
I tried extending the ZoomPanModifier as such:
public class ZoomPanModifierEx : ZoomPanModifier { public override void OnModifierMouseDown(ModifierMouseArgs e) { IsEnabled = (e.MouseButtons == MouseButtons.Left) && (e.Modifier == MouseModifier.Ctrl); base.OnModifierMouseDown(e); } }
This did not work though.
Thanks in advance.
Johnny
- johnnyp112 asked 10 years ago
Trying to install SciChart.iOS NuGet package for Xamarin.iOS project results the following error:
Package SciChart.iOS 2.0.1.527 is not compatible with xamarinios10 (Xamarin.iOS,Version=v1.0). Package SciChart.iOS 2.0.1.527 supports: xamarinios (xamarin-ios,Version=v0.0)
Wondering what the heck is “xamarin-ios,Version=v0.0”? It must be xamarinios10. We’re considering to buy SciChart but right now our build server is stuck on this error. As a workaround, we raname xamarin-ios to xamarinios10 in the lib directory but this not an option for a cloud build server.
- rubs00 asked 7 years ago
- last active 6 years ago