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 10 years ago
- last active 9 months 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 14 years ago
- last active 5 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 14 years ago
- last active 8 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 14 years ago
- last active 1 year 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 14 years ago
- last active 3 years 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 13 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 13 years ago
- last active 12 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 12 years ago
- last active 8 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 9 years ago
- last active 1 year 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 14 years ago
- last active 12 months 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 14 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 14 years ago
- last active 1 year ago
Hi all,
Sorry for yet another overview question!
We are trying to modify the colours of the Overview. The various properties on the SciChartOverview itself provide all-but-one element that needs to change colour.
The one remaining element is the SciChartSurface.GridLinesPanelStyle underneath the Overview.
See the screenshot for what I’m interested in changing the colour of :)
Thanks!
Miles
- bstapylton asked 13 years ago
- last active 11 years 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 13 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 13 years ago
- last active 5 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 13 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 13 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 13 years ago
- last active 1 year 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 13 years ago
- last active 1 year 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 13 years ago
- last active 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 13 years ago
- last active 5 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 12 years ago
- last active 1 year 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 12 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 12 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 12 years ago
- last active 12 months 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 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 11 years ago
- last active 11 years 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 11 years ago
- last active 7 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 9 years ago
- last active 10 months 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 4 years ago
- last active 4 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 14 years ago
- last active 1 year ago
Is there any documentation besides the tutorials? Something like the one found on MSDN, with all the Properties of the SciChart elements that can be styled.
- catalin asked 14 years ago
- last active 10 years ago
Hi guys,
I’m tackling a difficult problem in my solution here. Our chart will allow users to add as many as 50 different series at any one time.
As well as this – the user will be able to specify the RenderableSeries (Chart Type) of each of these between; column, line and mountain.
One solution is to replicate the method found in your own SciChart SciTrader demonstration (in which each type of RenderableSeries is added to the xaml once for each data series, they share a DataSeries and then the Visibility property within the style is managed to only show the one the user requests), but this would require 150 (50 placeholders for 50 possible series * 3 definitions per series) definitions of different RenderableSeries, each with their own Style defined.
Is there any way to create a custom RenderableSeries that extends BaseRenderableSeries and add a DependencyProperty that allows a binding from the xaml to modify the type of RenderableSeries that is displayed?
Even better – is there a way to add RenderableSeries using MVVM (I noticed the add/remove dynamic series tutorial has a note to standby for such a tutorial). I will attempt to find a solution by going down this path as it sounds much less verbose.
Thanks in advance for all your help!
Miles
- bstapylton asked 14 years ago
- last active 3 years ago
Hi!
I want SciChart to display always the first and last value of an axis. I created a chart wich shows volume on the y-axis and time in seconds on the y-axis. The axis are initialized in the view model with fixed axis dimensions like this:
this.TimeAxis = new NumericAxis();
this.TimeAxis.VisibleRange.SetMinMax(0, 60);
this.TimeAxis.AxisTitle = "Time [s]";
((AxisBase)this.TimeAxis).Style = (Style)Application.Current.FindResource("DefaultSciChartAxisStyle");
this.VolumeAxis = new NumericAxis();
this.VolumeAxis.VisibleRange.SetMinMax(0, 8);
this.VolumeAxis.AxisTitle = "Volume [l]";
this.VolumeAxis.AxisAlignment = AxisAlignment.Left;
((AxisBase)this.VolumeAxis).Style = (Style)Application.Current.FindResource("DefaultSciChartAxisStyle");
How is it possible to display the first and last value of the axis as shown with red numbers in the attached example.png which are not shown by default?
Best regards,
Joerg
- Joerg Hoehn asked 14 years ago
- last active 10 years ago
Hi!
I would like to add a margin to the x-axis number so that they don’t stick on the axis anymore. See attached screenshot for detailed explanation.
Is that possible?
Best regards,
Joerg
- Joerg Hoehn asked 14 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 14 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 13 years ago
attachment is one type chart used in our product. could the sciChart implement this functions?
great thanks.
- darkgone asked 13 years ago
- last active 1 year 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 13 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 13 years ago
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 13 years ago
- last active 11 years ago
I am using the SciChart control to render real-time data as it arrives from a data source. This source could be producing data many times per second. New values are appended to the series. If I leave my application running for a long time, the data series gets very long and rendering slows down. I can remove data points from the series when they are older than the VisibleRange and that certainly helps.
My problem is that the user might set the VisibleRange to span several days. If the data source is sending data at 10Hz then that would be 6 million data values per week, redrawing at 10Hz, which I guess will cause some CPU loading. I would like to be able to remove intermediate data from the series if new data being appended to the series would render in the same horizontal pixel as the previous data and is neither the maximum nor minimum Y value at that pixel. In order to do that I need to be able to examine the DateTime of the incoming value and determine its X pixel, then walk back through the existing data to see if it would be visible if rendered (in a new X pixel, or a new min or max in the same pixel as the previous value).
So, finally, to the question: Is there a method for determining the X,Y pixel coordinate for a give X and Y value?
- asthomas asked 13 years ago
- last active 11 years ago
Hi Guys,
I am just wondering if you can help us with the following issue.
We are trying to create a scatter char. The data series set looks like :
public IDataSeriesSet<float, float> ChartDatafloat
The problem that we are having is that there are points that are missing on the chart when it gets generated. so, we would like if you guys could test with the points that I am attaching (scattercsv.csv) and figure out why this is happening… We have seen that points around 14 and between 2000 and 2050 in the Xaxis are not displaying.
<SciChart:SciChartSurface x:Name="SciChartSurface" SciChart:ThemeManager.Theme="BrightSpark"
DataSet="{Binding ChartDataXfloat, Mode=TwoWay}">
<!-- Declare RenderableSeries -->
<SciChart:SciChartSurface.RenderableSeries>
<SciChart:XyScatterRenderableSeries>
<SciChart:XyScatterRenderableSeries.PointMarkerTemplate>
<ControlTemplate>
<Grid Height="7" Width="7">
<Viewbox>
<Path Data="M0,0 L10,10 M0,10 L10,0 M0,5 L10,5" Stretch="Uniform" Stroke="Blue" StrokeThickness="1"/>
</Viewbox>
</Grid>
</ControlTemplate>
</SciChart:XyScatterRenderableSeries.PointMarkerTemplate>
</SciChart:XyScatterRenderableSeries>
</SciChart:SciChartSurface.RenderableSeries>
<!-- Create an X Axis with Growby -->
<SciChart:SciChartSurface.XAxis>
<SciChart:NumericAxis VisibleRange="0,2800">
<SciChart:NumericAxis.GrowBy>
<SciChart:DoubleRange Min="0.1" Max="0.1"/>
</SciChart:NumericAxis.GrowBy>
</SciChart:NumericAxis>
</SciChart:SciChartSurface.XAxis>
<!-- Create a Y Axis with Growby -->
<SciChart:SciChartSurface.YAxis>
<SciChart:NumericAxis>
<SciChart:NumericAxis.GrowBy>
<SciChart:DoubleRange Min="0.1" Max="0.1"/>
</SciChart:NumericAxis.GrowBy>
</SciChart:NumericAxis>
</SciChart:SciChartSurface.YAxis>
</SciChart:SciChartSurface>
I am attaching as well an image that shows how the chart should looks like. I am only trying to display the blue points. So, chart number 1 displays all the points that I am attaching in the spreadsheet and chart number 2 is the one that I am trying to create with the same points and as you can see is missing some of the points.
Hope you can help us….
Thanks very much
- vaquita50 asked 13 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 13 years ago
- last active 1 year ago
Hi I’m just wondering if there is anyway to force Y values to show up on the chart for all data points like a Histogram. I’ve attached screenshots to show what I would like the final screen to look like (ChartTest) so you have an idea. Hoping there is a way to force rollover to always show, or maybe have axis markers on the bottom that can display the y value at each x point. Hopefully you understand what I’m trying to achieve. Thanks.
- Kohins asked 12 years ago
- last active 1 year ago
I’m currently using the MouseWheelZoomModifier to allow the user to zoom into charts (XyDirection=”XYDirection”), but I’ve now had a request to provide an way for the user to zoom X only, Y only, or both. I realise it’s possible to change the XyDirection property (e.g. using checkboxes, like in your demo), but the PM is asking if a more “user friendly” solution is possible.
One option might be to change the zoom direction based on where the mouse is, e.g. if it’s over the X-axis then zoom X only, over the Y-axis then zoom Y only, otherwise zoom XY.
Another option may be to use modifier keys, e.g. wheel + Ctrl = X only, wheel + Shift = Y only, wheel on its own = XY.
Can you offer some pointers towards a suitable solution, if such a thing is possible? Ideally it would be nice if I could implement a customer modifier, if it’s not too complicated, rather than combining the out-of-the-box modifier with mouse events.
- andyste1 asked 12 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 12 years ago
- last active 11 years ago
I’m new to SciCharts, so this might be a terminology issue or something like that.
I’m trying to add a vertical line annotation to my chart that the user can drag around. So far so good. However, I’d like it to also display the values of the series data the line intersects with. This is where I’m unsure of the best way to proceed. What I want is basically the behavior of the RolloverModifier, which displays tooltips when it intersects with series data, but it’s always visible rather than triggered by a rollover. It may be possible to use the RolloverModifier for this, but I ran into an issue where I couldn’t have both a VerticalLineAnnotation with IsEditable=true and a RolloverModifier, and I need to add another VerticalLineAnnotation in addition to this one.
Any advice?
Hopefully I just missed something in the documentation.
- smhinsey asked 12 years ago
Hi,
I’ve got a chart with several XyScatterRenderableSeries and I want to add functionality to switch between Logarithmic and normal Numeric axes. Could you please let me know the best approach to do that?
Thanks & Regards,
Charith
- Charith Jayasundara asked 12 years ago
- last active 6 years ago
Hello,
based on your sample Screenshots, XPS Printing, X-Axis Text Labels i render a offscreen SciChart and copy it to the clipboard. It seems to works, but the Axis labels of X and Y axes are at the wrong positions (they are all at the same position). Please see the sample attached.
Many thanks,
Robin
- Andreas Mueller-Bluemlein asked 12 years ago
- last active 12 months ago

