let xAxis = SCINumericAxis3D()
xAxis.growBy = SCIDoubleRange(min: 0.1, max: 0.1)
let yAxis = SCINumericAxis3D()
yAxis.growBy = SCIDoubleRange(min: 0.1, max: 0.1)
let zAxis = SCINumericAxis3D()
zAxis.growBy = SCIDoubleRange(min: 0.1, max: 0.1)
let dataSeries = SCIXyzDataSeries3D(xType: .double, yType: .double, zType: .double)
for _ in 0 ..< 200 {
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)
}
let pointMarker = SCISpherePointMarker3D()
pointMarker.fillColor = 0xFF32CD32;
pointMarker.size = 10.0
let rs = SCIScatterRenderableSeries3D()
rs.dataSeries = dataSeries
rs.pointMarker = pointMarker
rs.selectedVertexColor = 0xFF00FF00
rs.metadataProvider = SCIDefaultSelectableMetadataProvider3D(seriesType: SCIScatterRenderableSeries3D.self)
let orbitModifier = SCIOrbitModifier3D()
orbitModifier.gestureRecognizer?.minimumNumberOfTouches = 2
SCIUpdateSuspender.usingWith(surface) {
self.surface.xAxis = xAxis
self.surface.yAxis = yAxis
self.surface.zAxis = zAxis
self.surface.renderableSeries.add(rs)
self.surface.chartModifiers.add(ExampleViewBase.createDefault3DModifiers())
}
var dataManager = DataManager.Instance;
var dataSeries3D = new XyzDataSeries3D<double, double, double>();
for (int i = 0; i < 100; i++)
{
double x = dataManager.GetGaussianRandomNumber(5, 1.5);
double y = dataManager.GetGaussianRandomNumber(5, 1.5);
double z = dataManager.GetGaussianRandomNumber(5, 1.5);
dataSeries3D.Append(x, y, z);
}
var rSeries3D = new SCIScatterRenderableSeries3D
{
DataSeries = dataSeries3D,
PointMarker = new SCISpherePointMarker3D { FillColor = ColorUtil.Lime, Size = 10.0f },
};
using (Surface.SuspendUpdates())
{
Surface.XAxis = new SCINumericAxis3D { GrowBy = new SCIDoubleRange(0.1, 0.1) };
Surface.YAxis = new SCINumericAxis3D { GrowBy = new SCIDoubleRange(0.1, 0.1) };
Surface.ZAxis = new SCINumericAxis3D { GrowBy = new SCIDoubleRange(0.1, 0.1) };
Surface.RenderableSeries.Add(rSeries3D);
Surface.ChartModifiers.Add(CreateDefault3DModifiers());
Surface.Camera = new SCICamera3D();
}
In the code above, a Scatter Series instance is created and assigned to draw the data provided by the ISCIDataSeries3D assigned to it.
The Scatters 3D are drawn with a PointMarker provided by the SCISpherePointMarker3D instance.
Finally, the 3D Scatter Series is added to the ISCIChartSurface3D.renderableSeries collection.