SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, iOS Chart, Android Chart and JavaScript Chart Components
Guys can you tell me please why I get this error after build on new `mac M1 chip and how to solve it:
error: unable to load standard library for target ‘arm64-apple-ios8.0’
/Users/nameuser/Projects/pojectname/ios/SciChart.framework/Modules/SciChart.swiftmodule/arm64.swiftinterface:1:1: error: failed to build module ‘SciChart’ from its module interface; the compiler that produced it, ‘Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)’, may have used features that aren’t supported by this compiler, ‘Apple Swift version 5.3.2 (swiftlang-1200.0.45 clang-1200.0.32.28)’
// swift-interface-format-version: 1.0`
Hello,
I would try out the examples with my trial but I got this error:
error: package io.reactivex does not exist import
io.reactivex.Observable;
I hope you can help me. Thank you.
BR
Marco
PS.: I did everything like in the Tutorial
I am creating a chart to represent certain vitals. The code is almost identical to the Vitals Monitoring Demo application, the difference being
I added some Line and text annotations. I am appending points to the data series every 100ms. I have verified that the anomalous behavior is not caused due to wrong data being provided,
leading me to believe it must be a bug within SciChart. I have attached screenshots of this anomalous behavior. Any help would be greatly appreciated. Thank you.
Edit: This happens randomly, ie it performs normally without glitches on application startup but misbehaves after left running for a while.
I also observed that when I call .clear() on the XyDataSeries objects, the graph returns to normalcy, but only until FIFO_CAPACITY is reached. It then goes back to wreaking havoc.
I have added sample data (data.txt) to the question for reference, and screenshots of Expected behavior and the abnormal behavior in question.
Gif of the problem is here: https://imgur.com/7SO4DFb
Code used for setting up the chart:
`SciChartBuilder sciChartBuilder;
static ISciChartSurface chart;
public final static XyDataSeries<Double, Double> pressureDataSeries = newDataSeries(FIFO_CAPACITY);
public final static XyDataSeries<Double, Double> pressureSweepDataSeries = newDataSeries(FIFO_CAPACITY);
public final static XyDataSeries<Double, Double> flowDataSeries = newDataSeries(FIFO_CAPACITY);
public final static XyDataSeries<Double, Double> flowSweepDataSeries = newDataSeries(FIFO_CAPACITY);
public final static XyDataSeries<Double, Double> volumeDataSeries = newDataSeries(FIFO_CAPACITY);
public final static XyDataSeries<Double, Double> volumeSweepDataSeries = newDataSeries(FIFO_CAPACITY);
public final static XyDataSeries<Double, Double> lastPressureSweepDataSeries = newDataSeries(1);
public final static XyDataSeries<Double, Double> lastFlowDataSeries = newDataSeries(1);
public final static XyDataSeries<Double, Double> lastVolumeDataSeries = newDataSeries(1);
private static XyDataSeries<Double, Double> newDataSeries(int fifoCapacity) {
final XyDataSeries<Double, Double> ds = new XyDataSeries<>(Double.class, Double.class);
ds.setFifoCapacity(fifoCapacity);
return ds;
}
private void setUpChart() { // Called from onCreate()
try {
SciChartSurface.setRuntimeLicenseKey("");
} catch (Exception e) {
e.printStackTrace();
}
final String pressureId = "pressureId";
final String flowId = "flowId";
final String volumeId = "volumeId";
SciChartBuilder.init(this);
sciChartBuilder = SciChartBuilder.instance();
chart = new SciChartSurface(this);
LinearLayout chartLayout = findViewById(R.id.charts);
chartLayout.addView((View) chart, 0);
final NumericAxis xAxis = sciChartBuilder.newNumericAxis()
.withVisibleRange(0, 10)
.withAutoRangeMode(AutoRange.Never)
.withAxisBandsFill(5)
.withDrawMajorBands(true)
.withAxisId("XAxis")
.build();
DoubleValues pressureRange = new DoubleValues(); pressureRange.add(-10); pressureRange.add(65);
DoubleValues flowRange = new DoubleValues(); flowRange.add(-150); flowRange.add(+250);
DoubleValues volumeRange = new DoubleValues(); volumeRange.add(-500); volumeRange.add(1000);
final NumericAxis yAxisPressure = generateYAxis(pressureId, getMinMaxRange(pressureRange));
final NumericAxis yAxisFlow = generateYAxis(flowId, getMinMaxRange(flowRange));
final NumericAxis yAxisVolume = generateYAxis(volumeId, getMinMaxRange(volumeRange));
UpdateSuspender.using(chart, new Runnable() {
@Override
public void run() {
Collections.addAll(chart.getAnnotations(),
sciChartBuilder.newTextAnnotation()
.withXAxisId("XAxis")
.withYAxisId(pressureId)
.withY1(0d)
.withFontStyle(18, ColorUtil.White)
.withText(" Pressure (cm H2O)")
.build(),
generateBaseLines(pressureId),
sciChartBuilder.newTextAnnotation()
.withXAxisId("XAxis")
.withYAxisId(flowId)
.withY1(0d)
.withFontStyle(18, ColorUtil.White)
.withText(" Flow (lpm)")
.build(),
generateBaseLines(flowId),
sciChartBuilder.newTextAnnotation()
.withXAxisId("XAxis")
.withYAxisId(volumeId)
.withY1(0d)
.withFontStyle(18, ColorUtil.White)
.withText(" Volume (ml)")
.build(),
generateBaseLines(volumeId)
);
Collections.addAll(chart.getXAxes(), xAxis);
Collections.addAll(chart.getYAxes(), yAxisPressure, yAxisFlow, yAxisVolume);
Collections.addAll(chart.getRenderableSeries(),
MainActivity.this.generateLineSeries(pressureId, pressureDataSeries, sciChartBuilder.newPen().withColor(Color.parseColor("#00ff00")).withThickness(1.5f).build()),
MainActivity.this.generateLineSeries(pressureId, pressureSweepDataSeries, sciChartBuilder.newPen().withColor(Color.parseColor("#00ff00")).withThickness(1.5f).build()),
MainActivity.this.generateScatterForLastAppendedPoint(pressureId, lastPressureSweepDataSeries),
MainActivity.this.generateLineSeries(flowId, flowDataSeries, sciChartBuilder.newPen().withColor(Color.parseColor("#ff6600")).withThickness(1.5f).build()),
MainActivity.this.generateLineSeries(flowId, flowSweepDataSeries, sciChartBuilder.newPen().withColor(Color.parseColor("#ff6600")).withThickness(1.5f).build()),
MainActivity.this.generateScatterForLastAppendedPoint(flowId, lastFlowDataSeries),
MainActivity.this.generateLineSeries(volumeId, volumeDataSeries, sciChartBuilder.newPen().withColor(Color.parseColor("#FFEA00")).withThickness(1.5f).build()),
MainActivity.this.generateLineSeries(volumeId, volumeSweepDataSeries, sciChartBuilder.newPen().withColor(Color.parseColor("#FFEA00")).withThickness(1.5f).build()),
MainActivity.this.generateScatterForLastAppendedPoint(volumeId, lastVolumeDataSeries)
);
chart.setLayoutManager(new DefaultLayoutManager.Builder().setRightOuterAxesLayoutStrategy(new RightAlignedOuterVerticallyStackedYAxisLayoutStrategy()).build());
}
});
}
private HorizontalLineAnnotation generateBaseLines(String yAxisId) {
return sciChartBuilder.newHorizontalLineAnnotation().withStroke(1, ColorUtil.White).withHorizontalGravity(Gravity.FILL_HORIZONTAL).withXAxisId("XAxis").withYAxisId(yAxisId).withY1(0d).build();
}
private NumericAxis generateYAxis(String id, DoubleRange visibleRange) {
return sciChartBuilder.newNumericAxis().withAxisId(id).withVisibleRange(visibleRange).withAutoRangeMode(AutoRange.Never).withDrawMajorBands(false).withDrawMinorGridLines(true).withDrawMajorGridLines(true).build();
}
private FastLineRenderableSeries generateLineSeries(String yAxisId, IDataSeries ds, PenStyle strokeStyle) {
FastLineRenderableSeries lineSeries = new FastLineRenderableSeries();
lineSeries.setDataSeries(ds);
lineSeries.setPaletteProvider(new DimTracePaletteProvider());
lineSeries.setStrokeStyle(strokeStyle);
lineSeries.setXAxisId("XAxis");
lineSeries.setYAxisId(yAxisId);
return lineSeries;
}
private IRenderableSeries generateScatterForLastAppendedPoint(String yAxisId, IDataSeries ds) {
final EllipsePointMarker pm = sciChartBuilder.newPointMarker(new EllipsePointMarker())
.withSize(4)
.withFill(ColorUtil.White)
.withStroke(ColorUtil.White, 1f)
.build();
return sciChartBuilder.newScatterSeries()
.withDataSeries(ds)
.withYAxisId(yAxisId)
.withXAxisId("XAxis")
.withPointMarker(pm)
.build();
}
private static DoubleRange getMinMaxRange(DoubleValues values) {
final DoubleRange range = new DoubleRange();
SciListUtil.instance().minMax(values.getItemsArray(), 0, values.size(), range);
range.growBy(0.1, 0.1);
return range;
}
// Appending to data series with:
UpdateSuspender.using(MainActivity.chart, new Runnable() {
@Override
public void run() {
MainActivity.pressureDataSeries.append(x, ppA);
MainActivity.pressureSweepDataSeries.append(x, ppB);
MainActivity.flowDataSeries.append(x, vFlowA);
MainActivity.flowSweepDataSeries.append(x, vFlowB);
MainActivity.volumeDataSeries.append(x, vtfA);
MainActivity.volumeSweepDataSeries.append(x, vtfB);
MainActivity.lastPressureSweepDataSeries.append(x, pp);
MainActivity.lastFlowDataSeries.append(x, vFlow);
MainActivity.lastVolumeDataSeries.append(x, vtf);
}
});
`
After installing the SciChart Licensing Wizard (for current user only), the Wizard hangs and does not display anything, which means I cannot activate the my license.
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 ...
hi everyone
when i use utf8 string such as ‘محور’ = axis in persian sciChart lookLike this .
i tried different fonts but did not work .
SciChartBuilder.init(this@Main2Activity)
// Obtain the SciChartBuilder instance
val sciChartBuilder = SciChartBuilder.instance()
val myCustomFont: Typeface? = ResourcesCompat.getFont(this, R.font.maryam)
val fontStyle = FontStyle(myCustomFont, 50f, Color.RED)
val s = String("محور".toByteArray(Charsets.UTF_8))
xAxis = sciChartBuilder.newNumericAxis().withAxisTitleStyle(fontStyle).withAxisTitle(s).withGrowBy(DoubleRange(0.1, 0.1)).build()
yAxis = sciChartBuilder.newNumericAxis().withAxisTitle("this is y").withGrowBy(DoubleRange(0.1, 0.1)).build()
val dataSeries = XyDataSeries(Double::class.javaObjectType, Double::class.javaObjectType)
dataSeries.append(arrayOf(0.0, 2.0, 4.0, 6.0, 8.0, 10.0), arrayOf(1.0, 5.0, -5.0, -10.0, 10.0, 3.0))
rs = sciChartBuilder.newColumnSeries()
.withDataSeries(dataSeries)
.withStrokeStyle(ColorUtil.White, 3f, false)
.build()
surface.chartModifiers.add(sciChartBuilder.newModifierGroupWithDefaultModifiers().build())
UpdateSuspender.using(surface) {
Collections.addAll<IAxis>(surface.xAxes, xAxis)
Collections.addAll<IAxis>(surface.yAxes, yAxis)
Collections.addAll<FastColumnRenderableSeries>(surface.renderableSeries, rs)
}
and the result :
Hi,
I’m evaluating SciChart for use in a production app.
Is there any way to log exceptions generated by SciChart? Currently I’m logging all handled and unhandled exceptions in my app to my server so that issues can be flagged without users having to manually submit support tickets. SciChart is printing internal exceptions to console – is there any way to override that with our own error handling mechanism? If not, how should we monitor for production errors generated internally by SciChart?
Thanks
Hello!
I’m writting an app with using SciChart Surface. After little changes in XAML code, that had no effect on surface, those surface show nothing. I turned all made changes back to correct working version but this didn’t help. What can it be? I attach veiw of surface that a see now. (Theme is presetup “Electric”)
I have 2 charts in my application. They work fine until I add an event to the chart (xaml). The Designer gives an Unhandled Exception with the following details
System.ArgumentException
An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary2.Insert(TKey key, TValue value, Boolean add)
1 propertyFilter)
at Microsoft.Expression.DesignModel.Metadata.MemberCollection.get_FieldIndex()
at Microsoft.Expression.DesignModel.Metadata.MemberCollection.CreateField(String fieldName, MemberKey& key)
at Microsoft.Expression.DesignModel.Metadata.MemberCollection.CreateMember(MemberType memberTypes, String memberName, MemberKey& key)
at Microsoft.Expression.DesignModel.Metadata.MemberCollection.TryGetCachedMember(MemberType memberTypes, String memberName, Boolean create, IMember& member)
at Microsoft.Expression.DesignModel.Metadata.MemberCollection.GetMember(MemberType memberTypes, String memberName, MemberAccessTypes access)
at Microsoft.Expression.DesignModel.Metadata.ProjectContextType.GetMember(MemberType memberTypes, String memberName, MemberAccessTypes access)
at Microsoft.Expression.Markup.XamlTypeHelper.GetPropertyKey(XamlParserContext parserContext, ITextLocation lineInformation, XmlNamespace xmlNamespace, String typeAndPropertyName, XmlNamespace targetTypeNamespace, IType targetTypeId, MemberType memberTypes, MemberType defaultType, Boolean allowProtectedPropertiesOnTargetType)
at Microsoft.Expression.Markup.XamlParser.GetPropertyKey(XamlParserContext parserContext, XmlElementReference xmlElementReference, XmlElement xmlElement, XmlAttribute attribute, IType targetType, Boolean allowProtectedPropertiesOnTargetType, IProperty& propertyKey)
at Microsoft.Expression.Markup.XamlParser.AddPropertiesAndChildren(XamlParserContext parserContext, DocumentCompositeNodeReference nodeReference, XmlElementReference xmlElementReference, XmlElement xmlElement, Predicate
at Microsoft.Expression.Markup.XamlParser.AddPropertiesAndChildren(XamlParserContext parserContext, DocumentCompositeNodeReference nodeReference, XmlElementReference xmlElementReference, XmlElement xmlElement)
at Microsoft.Expression.Markup.XamlParser.ParseCompositeElement(XamlParserContext parserContext, IDocumentNodeReference nodeReference, IType typeId, XmlElementReference xmlElementReference, XmlElement xmlElement)
at Microsoft.Expression.Markup.XamlParser.ParseElementContent(XamlParserContext parserContext, IDocumentNodeReference nodeReference, IType typeId, XmlElementReference xmlElementReference, XmlElement xmlElement)
at Microsoft.Expression.Markup.XamlParser.ParseElement(XamlParserContext parserContext, IDocumentNodeReference nodeReference, XmlElementReference xmlElementReference, XmlElement xmlElement, DocumentNode& node)
at Microsoft.Expression.Markup.XamlParser.ParseRegion(IReadableSelectableTextBuffer textBuffer, DocumentNode parentNode, DocumentNode oldNode, ITextRange span, IList1& errors)
1 errorsAndWarnings, IList`1& newErrors)
at Microsoft.Expression.Markup.XamlLanguageService.IncrementalParse(ITextChangesTracker textChanges, IList
at Microsoft.Expression.Markup.MarkupDocument.CommitTextEdits(Boolean forceUpdateIfWarnings)
at Microsoft.Expression.DesignSurface.View.SceneView.CommitTextEditsInternal(Boolean forceUpdateIfWarnings)
at Microsoft.Expression.DesignSurface.View.SceneView.SynchronizeTextEdits()
at Microsoft.Expression.DesignSurface.View.SceneView.StopTimerAndCommitTextEdits()
at Microsoft.Expression.DesignSurface.View.SceneView.TextCommitTimeoutTimer_Tick(Object sender, EventArgs e)
at System.Windows.Threading.DispatcherTimer.FireTick(Object unused)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.Run()
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)
at Microsoft.Expression.DesignHost.Isolation.DesignerProcess.RunApplication()
at Microsoft.Expression.DesignHost.Isolation.DesignerProcess.<>c__DisplayClass2.b__0()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
The Chart code is as below. If I remove the Preview mouse down and reload then it woks fine.
<s:SciChartSurface x:Name="sciChartFull" s:ThemeManager.Theme="Chrome" Grid.Column="0" PreviewMouseDown="sciChartFull_PreviewMouseDown" >
<s:SciChartSurface.RenderableSeries>
<s:FastLineRenderableSeries x:Name="lineSeriesFull" SeriesColor="#FFBB6464" />
<s:XyScatterRenderableSeries x:Name="pointSeriesFull">
<s:XyScatterRenderableSeries.PointMarker>
<s:EllipsePointMarker Width="5" Height="5" Fill="#FF04571B" Stroke="#FF04571B" StrokeThickness="1"></s:EllipsePointMarker>
</s:XyScatterRenderableSeries.PointMarker>
</s:XyScatterRenderableSeries>
</s:SciChartSurface.RenderableSeries>
<s:SciChartSurface.XAxis>
<s:TimeSpanAxis DrawMajorGridLines="False" DrawMinorGridLines="False" />
</s:SciChartSurface.XAxis>
<s:SciChartSurface.YAxis>
<s:NumericAxis DrawMajorGridLines="False" DrawMinorGridLines="False" Visibility="Collapsed"/>
</s:SciChartSurface.YAxis>
</s:SciChartSurface>