iOS & macOS Charting Documentation - SciChart iOS & macOS Charts SDK v4.x

The Bubble 3D Chart Type

The Bubble 3D Chart can be created using the SCIScatterRenderableSeries3D type. It is exactly the same Chart Type that Scatter Chart 3D is except it has individually colored points via the MetadataProvider API.

NOTE: Please see the Scatter Chart 3D article for more information about SCIScatterRenderableSeries3D.

Bubble Chart 3D

NOTE: Examples for the Bubble Series 3D can be found in the SciChart iOS Examples Suite as well as on GitHub:

There is a special class SCIPointMetadataProvider3D which stores collection of SCIPointMetadata3D. Is expects to have metadata for each point in your ISCIDataSeries3D.

The SCIPointMetadata3D allows you to change the Color as well as Scale of your vertexes in point-by-point basis.

Please see the code below to see how to use SCIPointMetadataProvider3D to provide metadata for the SCIScatterRenderableSeries3D:

SCIXyzDataSeries3D *ds = [[SCIXyzDataSeries3D alloc] initWithXType:SCIDataType_Double yType:SCIDataType_Double zType:SCIDataType_Double]; SCIPointMetadataProvider3D *metadataProvider = [SCIPointMetadataProvider3D new]; for (int i = 0; i < 250; ++i) { double x = [SCDDataManager getGaussianRandomNumber:15 stdDev:1.5]; double y = [SCDDataManager getGaussianRandomNumber:15 stdDev:1.5]; double z = [SCDDataManager getGaussianRandomNumber:15 stdDev:1.5]; [ds appendX:@(x) y:@(y) z:@(z)]; // Provide metadata for each point in DataSeries SCIPointMetadata3D *metaData = [[SCIPointMetadata3D alloc] initWithVertexColor:[SCDDataManager randomColor] andScale:[SCDDataManager randomScale]]; [metadataProvider.metadata addObject:metaData]; } ... // Apply the MetadataProvider onto the Scatter Series 3D SCIScatterRenderableSeries3D *rs = [SCIScatterRenderableSeries3D new]; rs.metadataProvider = metadataProvider;
let dataSeries = SCIXyzDataSeries3D(xType: .double, yType: .double, zType: .double) let pointMetaDataProvider = SCIPointMetadataProvider3D() for _ in 0 ..< 250 { let x = SCDDataManager.getGaussianRandomNumber(5, stdDev: 1.5) let y = SCDDataManager.getGaussianRandomNumber(5, stdDev: 1.5) let z = SCDDataManager.getGaussianRandomNumber(5, stdDev: 1.5) dataSeries.append(x: x, y: y, z: z); // Provide metadata for each point in DataSeries let metadata = SCIPointMetadata3D(vertexColor: SCDDataManager.randomColor(), andScale: SCDDataManager.randomScale()) pointMetaDataProvider.metadata.add(metadata) } ... // Apply the MetadataProvider onto the Scatter Series 3D let rs = SCIScatterRenderableSeries3D() rs.metadataProvider = pointMetaDataProvider
var dataSeries3D = new XyzDataSeries3D<double, double, double>(); var metadataProvider = new SCIPointMetadataProvider3D(); for (int i = 0; i < 250; i++) { var x = dataManager.GetGaussianRandomNumber(5, 1.5); var y = dataManager.GetGaussianRandomNumber(5, 1.5); var z = dataManager.GetGaussianRandomNumber(5, 1.5); dataSeries3D.Append(x, y, z); // Provide metadata for each point in DataSeries var metadata = new SCIPointMetadata3D((uint)dataManager.GetRandomColor().ToArgb(), dataManager.GetRandomScale()); metadataProvider.Metadata.Add(metadata); } ... // Apply the MetadataProvider onto the Scatter Series 3D var rSeries3D = new SCIScatterRenderableSeries3D(); rSeries3D.MetadataProvider = metadataProvider;