Recreating a Circle from an Image using a Scatter Plot
Pada awalnya, kita memiliki sebuah gambar yang berupa citra RGB daripada biner. Hal ini berarti kita memiliki sebuah matriks tiga-dimensi alih-alih dua dimensi, di mana setiap slice merepresentasikan komponen merah, hijau, dan biru pixel pada citra gambar.
Dalam hal ini, jika Anda menggunakan citra RGB, koordinat J akan menjadi koordinat maju kolom jika kita membagi dimension kedua dan ketiga. Oleh karena itu, karena citra Anda adalah biner, hanya ekstrak salah satu channel dan coba lagi. Untuk citra biner, setiap triplet RGB akan berupa (0,0,0) atau (255,255,255) dalam kasus Anda.
Maka, coba dengan cara seperti ini:
X = imread('circle.png'); [I,J] = find(X(:,:,1) == 0); scatter(I,J)
Atau, jika Anda membaca citra langsung dari StackOverflow:
X = imread('https://i.sstatic.net/RbOPG.png');
... saya mendapatkan citra sebagai berikut:
The Scatter Series Type | SciChart Android Documentation
Scatter Series dapat dibuat menggunakan tipe XyScatterRenderableSeries.
Scatter Series memerlukan bentuk untuk marker titik. SciChart memberikan beberapa bentuk yang tersedia:
- CrossPointMarker
- EllipsePointMarker
- SquarePointMarker
- TrianglePointMarker
- SpritePointMarker
Bisa juga definisi bentuk marker titik sendiri dengan mengacu pada artikel API PointMarkers.
Perlu diingat bahwa dalam scenario multi-aksis, seri harus dipasangkan ke aksises X dan Y tertentu. Hal ini dapat dilakukan dengan melewati ID aksis ke property xAxisId dan yAxisId.
Create a Scatter Series
Untuk membuat XyScatterRenderableSeries, gunakan kode sebagai berikut:
Java
@Override
protected void initExample(@NonNull SciChartSurface surface) {
final IXyDataSeries<Double, Double> dataSeries = new XyDataSeries<>(Double.class, Double.class);
dataSeries.append(0.0, -3.0);
dataSeries.append(1.0, 1.0);
dataSeries.append(2.0, 4.0);
final EllipsePointMarker pointMarker = new EllipsePointMarker();
pointMarker.setFillStyle(new SolidBrushStyle(Color.CYAN));
pointMarker.setSize(20,20);
final XyScatterRenderableSeries scatterSeries = new XyScatterRenderableSeries();
scatterSeries.setDataSeries(dataSeries);
scatterSeries.setPointMarker(pointMarker);
UpdateSuspender.using(surface, () -> {
Collections.addAll(surface.getXAxes(), new NumericAxis(requireContext()));
Collections.addAll(surface.getYAxes(), new NumericAxis(requireContext()));
Collections.addAll(surface.getRenderableSeries(), scatterSeries);
});
}
Dalam kode di atas, instance Scatter Series dibuat dan dipasangkan untuk menggambar data yang disediakan oleh IDataSeries<TX,TY> yang dipasangkannya. Scatters drawn dengan marker titik yang diberikan oleh EllipsePointMarker instance. Akhirnya, Scatter Series ditambahkan ke properti renderableSeries.
Scatter Series Features
Scatter Series juga memiliki beberapa fitur seperti:
- Render a Gap
- Draw Series With Different Colors
Render a Gap in a Scatter Series Mungkin untuk menggambar gap pada serii Scatter dengan melewati data point yang memiliki nilai NaN sebagai nilai Y. Perlu diingat bahwa referensi ke artikel API RenderableSeries.
Paint Scatters With Different Colors Dalam SciChart, Anda dapat menggambar setiap scatter dari serii Scatter dengan warna yang berbeda menggunakan API PaletteProvider.
Untuk menggunakan palette provider untuk scatters - custom IPointMarkerPaletteProvider harus disediakan ke properti paletteProvider. Perlu diingat bahwa referensi ke artikel API PaletteProvider.