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

0 votes
100 views

Dear SciChart Team:

My application is a time chart, the X axis is TimeSpan, the Y axis is a value, I want to append points with a fixed X axis length, but my current practice is to fix the number of points.

For example:
TimeSpan is fixed at ten seconds. After points is appended, if TimeSpan exceeds ten seconds, the first point is deleted, and the latest point are retained.

  • Johnny Yeh asked 2 months ago
  • last active 2 months ago
0 votes
99 views

Dear SciChart Team:

An exception occurs when I drag the X-axis to change the scale via the XAxisDragModifier (as shown in the attached image).
This happens when the X-axis scale is dragged out of view.
Is there any reason for this exception to occur? How can I rule out?

  • Johnny Yeh asked 2 months ago
  • last active 1 month ago
0 votes
98 views

Dear SciChart Team:

I want to extend the chart to fit the size to match DataRange and have two operational scenarios:
1. Call SciChartSurface.ZoomExtents()
2. Double click on the canvas with ZoomExtentsModifier

When I change the Y-axis(X-axis) scale through the YAxisDragModifier(XAxisDragModifier) and append points to the curve, and then execute ZoomExtents(), the chart does not match the DataRange.

How do I zoom extents the chart to match DataRange?

  • Johnny Yeh asked 2 months ago
  • last active 2 months ago
0 votes
89 views

I am not able to find the data point corresponding to current mouse position on heatmap series PreviewMouseMove event.

Here is my code,

private void Contour_PreviewMouseMove(object sender, MouseEventArgs e)
    {
        var xCalc = Contour.RenderableSeries[0].XAxis.GetCurrentCoordinateCalculator();
        var yCalc = Contour.RenderableSeries[0].YAxis.GetCurrentCoordinateCalculator();
        Point mousePoint = e.GetPosition(((SciChartSurface)sender).ModifierSurface as UIElement);
        double peakXCordInfoValue = xCalc.GetDataValue(mousePoint.X);
        double peakYCordInfoValue = yCalc.GetDataValue(mousePoint.Y);
    }

“Contour” is my SciChart object. When I debugged to find out my X and Y axis data points and compared them with what I find above in peakXCordInfoValue, then they don’t match. Ideally if I am finding the data point then it should match exactly.

I also tried to find index

var index = Contour.RenderableSeries[0].DataSeries.FindIndex(yDataForCoordinate, SearchMode.Nearest);

But it gives error “Operation is not valid due to the current state of the object.”
I also tried cursormodifier and its OnModifierMouseMove event, but it gives same error.

For Example: The actual data point on Y axis is 280.774501562118, and the above code returns 280.523009343212

  • Anil Soman asked 2 months ago
  • last active 2 months ago
0 votes
103 views

Hi SciChart!

I am evaluating the trial for possible use in a major project within our organisation.

We have decided to use the System.Reactive reactive extensions as our event handler and I have reached the point where I have an IObservableCollection (instantiated as ObservableCollectionExtended) of where T can be any type containing X and Y values.

My question is, is it possible to Bind a scichart Line Series on to such a collection in order to update via the reactivestream updates?

I’d rather not have to copy points into yet another collection type if possible.

Note: I looked at the nuget for scichart wpf reactive library and that seems to bind on to rx 2.2.5 whereas I’m using system.reactive 4.1.6

Any direction for a new-to-reactive developer would be greatly received.

Greg

0 votes
0 answers
94 views

Hey all,

is there a way on iOS to export a SciChartSurface to a vector format in order to embed the exported chart into a PDF document? Right now the only thing I can find in the Documentation is exportToUIImage(). If not – any ideas for a workaround until such feature is implemented?

0 votes
110 views

Hello Team,

I am evaluating Sci Chart for using in our production applications. I am creating a POC for the same if it fits our requirements.

I have created a scattered chart successfully. Our next requirement is to select a part of the chart, basically, like data from this date to this date. I was trying to explore VerticalSlice Modifier for it. My purpose was that the user will place the sliders on the start date and end date and we will get those values. Can you tell me if this approach is correct or suggest a different technique, annotation or marker, any other modifier to select data between two dates?

<Grid Grid.Row="1">
        <s:SciChartSurface s:ThemeManager.Theme="BrightSpark">
            <s:SciChartSurface.ChartModifier>
                <s:ModifierGroup>
                    <s:VerticalSliceModifier Name="sliceModifier">
                        <s:VerticalSliceModifier.VerticalLines>
                            <s:VerticalLineAnnotation X1="{Binding SelectedStartDate, Mode=TwoWay}" IsEditable="True"/>
                            <s:VerticalLineAnnotation X1="{Binding SelectedEndDate, Mode=TwoWay}" IsEditable="True"/>
                        </s:VerticalSliceModifier.VerticalLines>
                    </s:VerticalSliceModifier>
                </s:ModifierGroup>
            </s:SciChartSurface.ChartModifier>
            <s:SciChartSurface.XAxis>
                <s:DateTimeAxis AxisTitle="Number of Samples (per Series)"/>
            </s:SciChartSurface.XAxis>
            <s:SciChartSurface.YAxis>
                <s:NumericAxis AxisTitle="Value"/>
            </s:SciChartSurface.YAxis>
            <s:SciChartSurface.RenderableSeries>
                <s:XyScatterRenderableSeries x:Name="scatterSeries" Stroke="OrangeRed" DataSeries="{Binding Chirps}">
                    <s:XyScatterRenderableSeries.PointMarker>
                        <s:EllipsePointMarker Width="9" Height="9" Fill="SteelBlue" Stroke="LightSteelBlue" StrokeThickness="2"/>
                    </s:XyScatterRenderableSeries.PointMarker>
                </s:XyScatterRenderableSeries>
            </s:SciChartSurface.RenderableSeries>
        </s:SciChartSurface>
    </Grid>

Thanks for the help and support

0 votes
114 views

Hi,

I tried submitting a priority support ticket but I always get a 500 error after submitting.

I have an issue with a realtime graph tick label. The “zero” label sometimes changes to a strange value (-5.5511E-17) for no reason.

This only happens when the graph is running in a 32bit process, I can’t replicate it when running at 64bit.

Some info:

No operations on the labels in the code-behind

Data is stored in a XyDataSeries<double,double>


The issue is visible in the video and the image called “G5”. Image “Hashes” shows the alternative text formatting option of “#.#####” which doesn’t show a “0” value at all.
I can write a workaround, but I would like to know if this is a known issue or there is something wrong with my settings.

Video here: https://youtu.be/OGaAOVe9Yew

Thank you

0 votes
114 views

Hi,

I am using .NET 4.0 and SciChart v4.2.6.11205.

I have a viewmodel with the following property:
public AnnotationCollection Annotations { get; set; }

I have tried binding to the Annotations property from my view with the following code but without success:
Annotations=”{Binding Annotations}”
Annotations=”{Binding Path=Annotations}”

How to I bind to an AnnotationsCollection with SciChart 4.0?

Do you have an example you can send me.

Regards,
peter.crowley@snapon.com

0 votes
0 answers
103 views

Hello,

I’m trying to drag several VerticalLineAnnotationViewModel simultaneously. So if I drag one all other should move the same delta.
I subscribed the “DragDelta”-Event for each VerticalLineAnnotationViewModel. My problem is that “AnnotationDragDeltaEventArgs” seems in pixel unit and I didn’t find a CoordinateCalculator for the NumericAxisViewModel. Is there any solution to convert the dragged delta to dataValue or axis coordinates so I could just add the delta to the X1 property of my VerticalLineAnnotationViewModels?

0 votes
0 answers
109 views

Hello,

I am using mountain chart to draw some data. First time open the chart screen, the graph plots properly. If we do scroll forward the graph x-axis last label is missing. If we do scroll backward the graph x-axis first label is missing.

Here I have attached working .swift file.

Note: We are using mountain chart with multiple line series. We are not using stacked mountain chart.

0 votes
118 views

Hello,

I am creating a LineAnnotation using Annotation Modifier.

In AnnotationCreated event, I need the Hit Test Info of the start and end Points of annotation i.e. annotation.X1,Y1,X2,Y2 points in order to find out the series name and other information(similar to HitTestAPI example in examples suit).

I also need to verify if they are lying on a series or not.

The problem here is series.HitTest() accepts a raw point which I am unable to get from annotation.

Is there any way to do this.

0 votes
178 views

Hi,

we have a graph which it’s x axis visible range changed when the graph draw until the max (as a travel graph)
we also have logic for each serie a minimum\maximum range, outside of this range the color should be red
so, we use the ExtremePointMarkerPaletteProvider and set for each value the suttible color in the colors list.

our problem is when the graph visible range changed – the serie points is draw correctly but it’s color is not match.
the colors are stay the same as they was before the range changed.
we looked at the colors list and YValues list – the value and the color on each index was match.
the problem is only in the view.

also, after some time it’s fixed, we don’t know what cause it to be fixed…

Thanks

0 votes
114 views

Hi,

every time we update the chart, the lines jump around and it seems we need to have a delay before calling zoomExtents() for it to work properly – but even with 500ms delay, zoomExtents still does not work always (see 0:27 of below video- what helped was manually moving the chart). We want a smooth transition when changing timescale. My guess is we are misusing the library somehow, but after thorough reading through the docs we could still not fix this.

Here is a video showcasing this problem:

https://screencast-o-matic.com/watch/cqiUjxOkV6

Here is the code that updates the surface. Basically we clear the Renderable Series of surface before we show new data. Full code where we make charts (on each update) is seen here:

// OHLC Chart Data
ohlcData.append(ohlcSeries.getDateData(), ohlcSeries.getOpenData(), ohlcSeries.getHighData(), ohlcSeries.getLowData(), ohlcSeries.getCloseData());

// Bollinger Upper Band
XyDataSeries<Date, Double> bollUpper = sciChartBuilder.newXyDataSeries(Date.class, Double.class).withSeriesName("BBU").build();
bollUpper.append(ohlcSeries.getDateData(), upperBB_data);
BaseRenderableSeries seriesBBU = sciChartBuilder.newLineSeries().withDataSeries(bollUpper).withStrokeStyle(Color.rgb(70,130,180), 1f).withYAxisId(PRICES).build();
seriesBBU.setClipToBounds(true);

//* ... some more lines and indicators built here ... */

// clear surface on update
if(!surfaceOhlc.getRenderableSeries().isEmpty())
    surfaceOhlc.getRenderableSeries().clear(); 

// create series
seriesMA.setIsVisible(SharedPreferencesInstance.getBoolean("advanced_chart_show_ma", true));
seriesEMA.setIsVisible(SharedPreferencesInstance.getBoolean("advanced_chart_show_ema", true));
seriesBBU.setIsVisible(SharedPreferencesInstance.getBoolean("advanced_chart_show_boll", true));
seriesBBL.setIsVisible(SharedPreferencesInstance.getBoolean("advanced_chart_show_boll", true));
seriesBBM.setIsVisible(SharedPreferencesInstance.getBoolean("advanced_chart_show_boll", true));

surfaceOhlc.getRenderableSeries().add(sciChartBuilder.newCandlestickSeries().withDataSeries(ohlcData).withSeriesInfoProvider(new CustomOHLCSeriesInfoProvider()).withYAxisId(PRICES).build()); // todo : setClipToRounds(true)
surfaceOhlc.getRenderableSeries().add(seriesBBU);
surfaceOhlc.getRenderableSeries().add(seriesBBL);
surfaceOhlc.getRenderableSeries().add(seriesBBM);
surfaceOhlc.getRenderableSeries().add(seriesEMA);
surfaceOhlc.getRenderableSeries().add(seriesMA);

surfaceOhlc.getAnnotations().add(annPrice);
  • Primoz asked 2 months ago
  • last active 2 months ago
0 votes
198 views

Hello,

I am adding a line annotation using annotation modifier, and it works perfectly fine.

But the problem is, I want to restrict the creation when the start and end points of annotation are not part of a line. I don’t care if they are not part of dataseries points, user can select any point on the line.

I am unable to find a way to verify this. Can you look into this.

0 votes
0 answers
128 views

I am creating point data series using SCIXyScatterRenderableSeries.
I need to tap on specific data points and display pop over or some view on top of it. Pop over provides information regarding that point.

How can I implement that in iOS.

0 votes
0 answers
126 views

Hello.
I am working on a stock chart with socket.
When received a new data, it is added to the chart,
but the labels of xAxis do not update their datetimes.
And I touch the surface of the chart,
then the labels of xAxis are updated.
What is wrong?
I attach some parts of my code.
Please let me know the correct way that I can update automatically the labels of x axis when a new data is added to.

The function for the x Axis creation
void setYAxis() {
yAxis = sciChartBuilder.newNumericAxis().withGrowBy(0d, 0.1d).withAxisAlignment(AxisAlignment.Right).withAutoRangeMode(AutoRange.Always).build();

    PenStyle tickStyle = new SolidPenStyle(_chartSetting.tickStyle, true, 2, null);
    BrushStyle bandStyle = new SolidBrushStyle(_chartSetting.bandStyle);
    PenStyle gridlineStyle2 = new SolidPenStyle(_chartSetting.gridlineStyle2, true, 2, null);
    // PenStyle gridlineStyle = new SolidPenStyle(_chartSetting.gridlineStyle, true, 1, new float[]{10, 10});
    PenStyle gridlineStyle = new SolidPenStyle(_chartSetting.gridlineStyle, true, 1, null);

    yAxis.setAxisBandsStyle(bandStyle);
    yAxis.setDrawMajorBands(true);
    //yAxis.setMinorTickLineStyle(tickStyle);
    yAxis.setMajorTickLineStyle(tickStyle);


    yAxis.setMajorGridLineStyle(gridlineStyle);
    yAxis.setMinorGridLineStyle(gridlineStyle2);
    String yFormat = "%.2f";
    if (chartData != null) {
        SmSymbolManager symbolManager = SmSymbolManager.getInstance();
        SmSymbol symbol = symbolManager.findSymbol(chartData.symbolCode);
        yFormat = "%.";
        if (symbol != null)
            yFormat += Integer.toString(symbol.decimal);
        else
            yFormat += Integer.toString(2);
        yFormat += "f";
    }
    yAxis.setLabelProvider(new NumericLabelProviderEx(yFormat));

    Collections.addAll(surface.getYAxes(), yAxis);

    if (_style == "mock_left" || _style == "mock_right") {
        yAxis.setVisibility(View.GONE);
    }

    if (_style == "mock_main") {
        yAxis.setVisibility(View.VISIBLE);
        yAxis.setAxisAlignment(AxisAlignment.Left);
    }
}

The callback function for the new data arrival.
private synchronized Action1 onNewPrice() {
return new Action1() {
@Override
public void execute(final PriceBar price) {
if (symbolCode.compareTo(price.getSymbolCode()) != 0 ||
lastPrice == null ||
lastPrice.getDate() == price.getDate())
return;

            DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
            String strDate = dateFormat.format(price.getDate());

            //Log.d("TAG", "onNewPrice:  -> " + price.getSymbolCode() + "::" + strDate);

            if (getSeriesType() == SmSeriesType.CandleStick || getSeriesType() == SmSeriesType.Ohlc) {
                ((IOhlcDataSeries) dataSeries).append(price.getDate(), price.getOpen(), price.getHigh(), price.getLow(), price.getClose());
            } else {
                ((IXyDataSeries) dataSeries).append(price.getDate(), price.getClose());
            }

            IRange dataRange = xAxis.getDataRange();

            final IRange visibleRange = surface.getXAxes().get(0).getVisibleRange();
            if (visibleRange.getMaxAsDouble() > dataSeries.getCount()) {
                visibleRange.setMinMaxDouble(visibleRange.getMinAsDouble() + 1, visibleRange.getMaxAsDouble() + 1);
                xAxis.updateAxisMeasurements();
            }

            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    ohlcAxisMarker.setBackgroundColor(price.getClose() >= price.getOpen() ? STOKE_UP_COLOR : STROKE_DOWN_COLOR);
                }
            });

            //smaAxisMarker.setY1(smaLastValue);
            ohlcAxisMarker.setY1(price.getClose());

            lastPrice = price;
        }
    };
}
0 votes
145 views

I want to made custom verticalLine extension which drag to series point. I use MVVM pattern. I made a custom VerticalLine from VerticalLineAnnotationViewModel. I set X1 value from model then the position of line chaning, then I drag the line with mouse. I get the earlier value of X1 in the DragSarted event, not that value which I set in model.
How can I gat correct value from DragStart?
I found similar problem in forum https://www.scichart.com/questions/wpf/problem-setting-a-vertical-line-annotation-position-in-mvvm

  • Zsolt Huse asked 2 months ago
  • last active 2 months ago
0 votes
146 views

I made wpf project with MVVM. I added LineRenderableSeriesViewModel to the model. SelectedSeriesStyle contains StrokeThickness=3 property. When I click on series, the SeriesSelectionModifier set correctly the line thicknes, but when I set IsSelected property in model, the seriesline thickness not changing. The stroke and PointMarkerTemplate properties work correctly.
Why not changing StrokeThickness property by model?

  • Zsolt Huse asked 2 months ago
  • last active 2 months ago
0 votes
155 views

Hi,

this is my scenario: I want to create a “band annotation”, a stretched box with some text.
I can use Text annotation but I want that annotation stretch in some directions.

In example, X1 = extreme left (as X1=0 in relative mode), X2 = Some X Axis Value, Y1 = Some Y Axis Value, Y2= Some Y Axis Value. This is a band without definite X1 value.

Or: X1 = Some axis value, Y1 = Some Axis Value, X2 = extreme right, Y2=Extreme Bottom, this is a rectangle that stretch to the bottom right corner.

At the end I must place a text in the center of box.

Can you help me?

Thank’s
marc.

0 votes
161 views

hello, i have question is how to draw minor label.
When i use logaxis and zoom to high precision, yaxis have only minor point.
it is not draw any label.

0 votes
149 views

I want to develop a rollover in my IOS application, like the example of Using RolloverModifier. However, the axis label & tooltip display of rollover in this example is static, I want to customize a the the label & tooltip that I want, .xib file or coding to develop also fine.

Can anyone help or give suggestions to my problems? Thanks.

  • Gumbo F asked 2 months ago
  • last active 2 months ago
0 votes
164 views

I was looking at the example given at this link for NonUniformHeatmapDataSeries in SciChart. In this example, the width and height of heatmap is given as h=4 and w=7. As I understand h is for Y axis and w is for X axis and data[,] is for Z axis. However, the counts in actual data filled for these axis are not matching wight h and w.

var xRangeMapping = new int[] { 0, 10, 20, 26, 36, 60, 72, 84 };   // 8 points for w
var yRangeMapping = new int[] { 100, 250, 390, 410, 600 };         // 5 points for h

What is the purpose of extra points added at first place (0 and 100)? Are these required to set the starting point for both axis?

Here is the code given at above link:

int w = 7, h = 4;
var data = new double[h, w];
double maxValue = double.MinValue;
for (int x = 0; x < w; x++)
    for (int y = 0; y < h; y++)
    {
        data[y, x] = 3.5 * ((h - y) * (w - x));
        maxValue = Math.Max(maxValue, data[y,x]);
    }
var xRangeMapping = new int[] { 0, 10, 20, 26, 36, 60, 72, 84 };
var yRangeMapping = new int[] { 100, 250, 390, 410, 600 };
var heatmapDataSeries = NonUniformHeatmapDataSeries<int, int, double>(data, i => xRangeMapping[i], i => yRangeMapping[i]);

// Apply the Heatmap DataSeries to a FastNonUniformheatmapRenderableSeries
var heatmapRenderableSeries = new FastUniformHeatmapRenderableSeries()
 {      
     ColorMap = new HeatmapColorPalette()
    {
        Maximum = maxValue,
        Minimum = 0,
        GradientStops = // exercise left to the reader
    }
 };
  • Anil Soman asked 2 months ago
  • last active 2 months ago
0 votes
0 answers
152 views

How to make chart axis (date axis in my case) to move with scrolling?

Because currently labels staying on it’s positions and just refreshing its values.

let xAxis = SCIDateTimeAxis()
xAxis.axisId = ChartWrapper.SURFACE_MAIN_X_AXIS_ID
xAxis.autoRange = .never
xAxis.visibleRange = sharedXRange
xAxis.style.drawMajorBands = false
xAxis.style.drawMajorTicks = false
xAxis.style.drawMinorTicks = false
xAxis.style.drawMinorGridLines = true
xAxis.textFormatting = "HH:mm:ss"
xAxs.style.drawLabels = true

Best regards, Vadim

0 votes
172 views

Hello there

I’m looking for any solution to work with milliseconds timestamps (like that one 1563448997279), but haven’t found anything yet.

Is it possible to handle them without losing precision?

Solutions like drop milliseconds not working for me.

One more question to developers:
What is the difference in SCIDataType_DateTime and SCIDataType_SwiftDateTime?

In source code i only found this:
@field SCIDataType_DateTime – NSDate

0 votes
147 views

We have a graph surface with some point markers on it and we want to show a custom tooltip every time the user taps on a point marker. So far I’ve used a UITapGestureRecognizer, convert the touchpoint in the chart frame and for each of the renderable series perform a HitTestAtX with a radius (I’ve tried 1, 5 and 30) but it always returns true, even if I tap on an area where there’s a gap in the chart. Here’s some sample code:

SCIHitTestInfo hitTestInfo = renderableSeries.HitTestProvider.HitTestInterpolateModeAtX(touchPoint.X, touchPoint.Y, 30, renderableSeries.CurrentRenderPassData);

if (hitTestInfo.match)
{
       Console.WriteLine($"Tapped {hitTestInfo.xValue} {hitTestInfo.yValue} with index {hitTestInfo.index} of the series {renderableSeries.DataSeries.SeriesName}");

       var elementSeries = Model.BottomRightLegendList.FirstOrDefault(tup => tup.DataSeries.SeriesName == renderableSeries.DataSeries.SeriesName);

       var element = elementSeries.GraphElement;

       if (element != null)
       {
            matchedElements.Add(element);
       }
}

Why is the “match” property always true, even if there are no Point Markers in the radius?

0 votes
0 answers
122 views

Hi

I have a SCIFastLineRenderableSeries backed by data in SCIXyDataSeries.

I setup FIFO to 300 (this just a number I may increase, but it stores 30+ seconds of data)

x data is time stamp.

each time I have new data, I set a new visibleRange to show about 30 seconds of data on screen

xAxis.visibleRange = [[SCIDoubleRange alloc] initWithMin:SCIGeneric(secondSinceStart-31) Max:SCIGeneric(secondSinceStart)];

So this will scroll along showing latest 30 seconds of data. And that’s great.

But I want to scroll to the left to view the older data. because of the visibleRange is set I am not able to touch the axis labels and do anything)

how do I set the visibleRange or maybe not set it, so I can enable the scroll.

Here is the drag modifier I use , but I think it does not do anything either because of the visibleRange
SCIXAxisDragModifier * xAxisDragmodifier = [SCIXAxisDragModifier new];
xAxisDragmodifier.dragMode = SCIAxisDragMode_Pan;
xAxisDragmodifier.clipModeX = SCIClipMode_None;

Thanks

0 votes
162 views

I am using a custom CursorModifier class in my WPF code. I have created a class inherited from CursorModifier for this purpose. Now I want to apply cross-hair cursor style to my chart. The style in XAML is not getting applied at all. However, when I use the CursorModifier directly (instead of custom modifier class) in XAML, then it applies.

If I changed the TargetType to “loca:MyCursorModifier”, then it gives error “The memeber StrokeThickness is not recognized” & “The “memeber Stroke is not recognized”.

<UserControl.Resources>
    <Style x:Key="CrossLineStyle" TargetType="Line">
        <Setter Property="StrokeThickness" Value="1" />
        <Setter Property="Stroke" Value="Black " />
    </Style>
</UserControl.Resources>

<local:MyCursorModifier ShowTooltip="False" ShowTooltipOn="Never" ShowAxisLabels="False" SourceMode="AllSeries" LineOverlayStyle="{StaticResource CursorLineStyle}"/>
  • Anil Soman asked 2 months ago
  • last active 2 months ago
0 votes
146 views

i want to implement a custom modifier to track the users touch, similar to rollover but without displaying a view

I tried to do this by implementing SCIGestureModifier and overriding all the onTouches methods, but – no matter the user behaviour – the modifier will always receive an onTouchesCancelled event after about a second and receive no more of these events after that.

What does work is implement onPanGesture to actually track all the user’s movement but i don’t see any way of how you would receive a touch up event this way (which i do need)

Is there any fundamental misunderstanding on how this should work on my side?

0 votes
172 views

Hi there!

I am relatively new to C# and I am currently trying to plot a network dependency graph in my wpf application. This is something like a hierarchical edge bundling graph. https://vega.github.io/vega/examples/edge-bundling/

Are there any good plotting libraries out there that can help me achieve this? I have looked into Scichart and it does not seem to be able to do it.

0 votes
0 answers
127 views

I am using SCIStackedMountainRenderableSeries in my iOS application, I am always getting chart background as black grids, I want to make it clear or white background. How can I do that?

I have tried

sciChartSurface?.backgroundColor = UIColor.white
sciChartSurface?.applyThemeProvider(nil)

That did not worked, Please help.

0 votes
0 answers
145 views

So for both SCIZoomPanModifier and SCIXAxisDragModifier you can set a clip mode, that will cause the graph to not zoom in if you try to scroll past the edges.

This is not possible for the y-axis however, so everytime anyone scrolls up or down to far, the graph zooms in, which is not useful to anyone ever

Is there any way to change this behaviour at all?

Thanks in advance

0 votes
163 views

Is it possible to display the X Axis peak Value on SciChartRadarSurface?
I tried to use Text Annotation but I don’t know how to use it on SciChartRadarSurface
I tried also to use RadarAxisPanel but I did not find examples that explain how to use it and if I can insert Text annotations inside
Please help
Thank you

0 votes
0 answers
136 views

So I want to draw multiple charts so is there any way I can have stacked yAxes like yAxis 2 should be drawn below yAxis1. I have gone through your example and there I got that we can add multiple surface but its becoming difficult for us to show a crosshair on all surfaces since we have a custom cross hair. Can you guide on same. Thanks in advance

0 votes
180 views

Hello,

I have been trying to figure out how can one have datetime support for Polar x axis? Is this already supported? If yes, how?

Looking forward for the response!

0 votes
169 views

We have an application where we have different tabs to control the content of one SciChartSurface. Each tab have its own view on data with different visible YAxes and LineSeries which are changing the surface. The goal is to have one history for each view. For right now the ZoomHistoryManager resets after each change. Is it possible to store the history of each view?

0 votes
232 views

Has anyone encountered this before?

XamlParseException: Unexpected record in Baml stream. Trying to add to SciChartSurface which is not a collection or has a TypeConverter.

<DataTemplate x:Key="SciLineChartTemplate"><Grid><s:SciChartSurface ...

0 votes
162 views

I am trying to plot a column plot. However, my column with is always 0. In debugging, I find that dataPointWidth = Math.Abs(xCoordinateCalculator.GetCoordinate(DataSeries.MinXSpacing) – xCoordinateCalculator.GetCoordinate(0)); is called. However, the DataSeries.MinXSpacing is 0. My XValues are just incremental numbers as 0, 1, 2, 3.. 90. What would cause DataSeries.MinXSpacing to be 0? It should be 1.

  • Ning Qiang asked 3 months ago
  • last active 3 months ago
0 votes
189 views

Hi! I’ve purchased your products including source code. I need to modify some of your code and have tried in many ways, but I have not compiled your source codes successfully. I am working on it on my Mac Osx, using android studio version of Android Gradle Plugin Version 3.1.0 and Gradle Version 4.4. I’ve got these errors, but I could not find any hints to solve this problem from your QnA site and google. The messages are following. Please let me know how to compile your source code properly. The source codes I have is SciChart_Android_v2.5.0.2540_SDK. Thank you for your good products and service.

Build command failed.

Error while executing process /Users/shiwansung/Library/Android/sdk/ndk-bundle/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/Android.mk NDK_APPLICATION_MK=/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/Application.mk APP_ABI=x86_64 NDK_ALL_ABIS=x86_64 NDK_DEBUG=1 APP_PLATFORM=android-19 NDK_OUT=/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/build/intermediates/ndkBuild/debug/lib -j4 /Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/build/intermediates/ndkBuild/debug/obj/local/x86_64/libdata.so}

[x86_64] Compile++ : data <= SciListUtil.cpp

[x86_64] Compile++ : data <= arrayOperations.cpp

[x86_64] Compile++ : data <= NativePointResamplerFactory.cpp

[x86_64] Compile++ : data <= resampling.cpp

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:59:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

MAKE_NATIVE(double, double)

^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:23:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMinMax(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex,jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:59:1: error: variable has incomplete type ‘void’

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:23:16: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMinMax(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex,jint viewportWidth, jboolean isCategoryData)\

           ^

:359:1: note: expanded from here

Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double

^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:59:1: error: expected ‘;’ after top level declarator

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:23:98: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMinMax(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex,jint viewportWidth, jboolean isCategoryData)\

                                                                                             ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:59:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:28:104: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void JNICALL Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ResampleWithoutReduction(JNIEnv *env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jboolean isCategoryData)\

                                                                                                   ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:59:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:33:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMax(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:59:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:38:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMin(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:59:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:43:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMid(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:59:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:48:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMinMaxUnevenlySpaced(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jdouble minXInclusive, jdouble maxXInclusive, jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:59:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:53:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ResampleInClusterMode(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:60:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

MAKE_NATIVE(double, float)

^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:23:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMinMax(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex,jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:60:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:28:104: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void JNICALL Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ResampleWithoutReduction(JNIEnv *env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jboolean isCategoryData)\

                                                                                                   ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:60:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:33:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMax(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:60:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:38:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMin(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:60:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:43:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMid(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:60:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:48:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMinMaxUnevenlySpaced(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jdouble minXInclusive, jdouble maxXInclusive, jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:60:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:53:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ResampleInClusterMode(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:61:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

MAKE_NATIVE(double, short)

^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:23:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMinMax(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex,jint viewportWidth, jboolean isCategoryData)\

                                                                                           ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:61:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:28:104: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void JNICALL Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ResampleWithoutReduction(JNIEnv *env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jboolean isCategoryData)\

                                                                                                   ^

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:61:1: error: pasting formed ‘Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_double##’, an invalid preprocessing token

/Users/shiwansung/Downloads/SciChart_Android_v2.5.0.2540_Source/data/src/main/jni/NativePointResamplerFactory.cpp:33:96: note: expanded from macro ‘MAKE_NATIVE’

JNIEXPORT void Java_com_scichart_data_numerics_pointresamplers_NativePointResamplerFactory_##TX####TY##ReducePointsMax(JNIEnv* env, jclass, jobject resampledSeries, j##TX##Array xColumn, j##TY##Array yColumn, jint startIndex, jint endIndex, jint viewportWidth, jboolean isCategoryData)\

0 votes
156 views

I’m trying to add more intervals into the legend of the Heat map. So far it only displays 10, 8, 6, 4, 2, 0, but I would like to edit it to display the numbers 0-10. From what I understand, the TickProvider API only works with an X or Y axis so I’m not sure if there’s a way to add the function.

0 votes
144 views

I’m using the Ternary Chart to plot three variables of interest.

Technically, a ternary plot should have three variables that sum to a constant.

However, the domain of my variables includes negative values.

Now, in theory, the linear space of the domains of each of the variables could be mapped onto R => [0,100].
From this, we can then compute the sum and normalize each variable by this sum to produce a [0, 100] value for each of the axes.

The problem is, I lose the original domain values prior to the transformation.

So my question is, can I use negative values for the ternary plot?

Thanks.

0 votes
0 answers
144 views

hello

0 votes
206 views

Hi,
so I want ask about the gradient color does the latest version of scichart support using gradient color in charts for both xamrin.android and Xamarin.ios

0 votes
181 views

Hello,
My requirement is to plot 3 dimensional data(x,y,z) in 2 D WPF chart. I know this is possible with bubble chart. But , i would like the plot to be seen as shown in the attached image file. I would like have Crossmark point marker instead of bubble(ellipse marker?) and crossmark should not be scaled according to z value(no scaling of point marker and it should be of default size ).
Please let me know how to achieve this one?

  • deepak b asked 3 months ago
  • last active 3 months ago
0 votes
222 views

Hi,
I’m using SciChart version 5.1.1.11473, runtime v4.0.30319 and SciChartEx 1.0.0.0.
I am having difficulty using LineArrowAnnotation and I need some help to solve my problem.

My problem is when I use the zoom and the size of the arrows.
When I zoom I need the length of the arrow not to change.
What process do I need to do to make the arrow the same size even when zoomed in?

. Below is a brief explanation of the program.
I made a linear graph where in certain points I show arrows down or up on the screen. (see Image01 below)
enter image description here ( Image01 )

With “HeadLength” and “HeadWidth” I can make the arrow head, the arrow body I am using “Y1” and “Y2”. (see Image02 below)
enter image description here ( Image02 )

When I zoom, I noticed that the arrow head does not change, but the length of the arrow does.
I need this length of arrow not to change like the head of the arrow. (see Image03 below)
enter image description here ( Image03 )

Finally, I apologize for my lack of knowledge of the products of your lordships.
And thanks for the attention paid.
Waiting for an answer.

Hamilton.

0 votes
172 views

Does Sci chart has any framework to support UI Automation in Android/iOS? Also I came across some screenshot based test for verification, Is this available for licensed user to test in Android/iOS?

0 votes
209 views

Hello,

I recently upgraded from v3 to v5, and I cannot figure out what to replace ToolTipLabelTemplate types with now that it’s missing. I saw in a different question like this that you directed them to look at ToolTipModifier documentation, and I have looked there, but I can’t find anything helpful for this problem. Could you please direct me to an example or explain what to change for a ToolTipLabelTemplate to make it work in v5.

Thanks,
Rachel

0 votes
159 views

Hi, if I have multiple graphs stacking on top of one another, is there any way for me to align them by the Y axis on the left?

I noticed that padding is applied to the most outer edge drawn item, so in many cases that would be the label, not the axis.

  • Sen Lin asked 3 months ago
  • last active 3 months ago
0 votes
0 answers
168 views

Hello,

I am trying to develop a WPF Chart with multiple X and Y Axes. I am able to achieve this perfectly and also I am able to remove a data series using the example available:

WPF Chart Add or Remove DataSeries

But, I am unable to remove the corresponding axes of the series whenever it is removed.

I am using the same logic used to remove a series:

sciChart.XAxes.Remove(sciChart.XAxes.GetAxisById(sampleId));

But, I am unable to get the expected result.

Am I missing something?

0 votes
0 answers
168 views

Hello.

It’s very strange, but chart can not be zoomed with pinch, only by double tap fitting full screen.
And when trying to zoom app freezes and CPU load became 100%.

func installChart() {
    sciChartSurface = SCIChartSurface(frame: self.view.bounds)
    sciChartSurface?.translatesAutoresizingMaskIntoConstraints = false


    self.vGraphBox.subviews.forEach({ $0.removeFromSuperview() })

    self.vGraphBox.addSubview(sciChartSurface!)

    NSLayoutConstraint.activate([
        sciChartSurface!.leftAnchor.constraint(equalTo: self.vGraphBox.leftAnchor),
        sciChartSurface!.rightAnchor.constraint(equalTo: self.vGraphBox.rightAnchor),
        sciChartSurface!.bottomAnchor.constraint(equalTo: self.vGraphBox.bottomAnchor),
        sciChartSurface!.topAnchor.constraint(equalTo: self.vGraphBox.topAnchor)
        ])

    // Add the SCIChartSurface as a subview
    self.vGraphBox.addSubview(sciChartSurface!)

    let xAxis = SCILogarithmicNumericAxis()
    xAxis.growBy = SCIDoubleRange(min: SCIGeneric(0.1), max: SCIGeneric(0.1))
    xAxis.scientificNotation = .logarithmicBase
    //xAxis.textFormatting = "#.#E+0"
    xAxis.logarithmicBase = 10.0
    xAxis.visibleRange = SCIDoubleRange(min: SCIGeneric(100), max: SCIGeneric(22000.0))

    let yAxis = SCINumericAxis()
    yAxis.autoRange = .never
    yAxis.visibleRange = SCIDoubleRange(min: SCIGeneric(-300.0), max: SCIGeneric(0.0))

    lineRenderableSeries.dataSeries = self.dataSeries
    lineRenderableSeries.strokeStyle = SCISolidPenStyle(colorCode: 0xFFE13219, withThickness: 1)

    //self.sciChartSurface?.chartModifiers.add(pinchZoomModifier) //Causes freeze
    self.sciChartSurface?.chartModifiers.add(SCIZoomPanModifier())
    self.sciChartSurface?.chartModifiers.add(SCIZoomExtentsModifier())

    SCIUpdateSuspender.usingWithSuspendable(sciChartSurface!) {
        self.sciChartSurface?.xAxes.add(xAxis)
        self.sciChartSurface?.yAxes.add(yAxis)
        self.sciChartSurface?.renderableSeries.add(self.lineRenderableSeries)
        self.sciChartSurface?.renderableSeries.add(self.lineRenderableSeriesMax)
    }
}
Showing 51 - 100 of 3k results