Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara menambahkan warna ke visual kustom Anda dan cara menangani titik data untuk visual yang telah menentukan warna.
IVisualHost
, kumpulan properti dan layanan yang berinteraksi dengan host visual, dapat mengatur warna dalam visual kustom dengan layanan colorPalette
. Contoh kode dalam artikel ini memodifikasi Visual SampleBarChart. Untuk kode sumber visual SampleBarChart, lihat barChart.ts.
Untuk mulai membuat visual, lihat Mengembangkan visual kartu lingkaran Power BI.
Menambahkan warna ke titik data
Untuk mewakili setiap titik data dalam warna yang berbeda, tambahkan color
variabel ke BarChartDataPoint
antarmuka, seperti yang ditunjukkan dalam contoh berikut:
/**
* Interface for BarChart data points.
*
* @interface
* @property {number} value - Data value for point.
* @property {string} category - Corresponding category of data value.
* @property {string} color - Color corresponding to data point.
*/
interface BarChartDataPoint {
value: number;
category: string;
color: string;
};
Menggunakan layanan palet warna
Layanan ini colorPalette
mengelola warna yang digunakan dalam visual Anda. Instance dari layanan colorPalette
tersedia di IVisualHost
.
Tentukan palet warna dalam update
metode dengan kode berikut:
constructor(options: VisualConstructorOptions) {
this.host = options.host; // host: IVisualHost
...
}
public update(options: VisualUpdateOptions) {
let colorPalette: IColorPalette = host.colorPalette;
...
}
Menetapkan warna ke titik data
Selanjutnya, tentukan dataPoints
. Dalam contoh ini, masing-masing dataPoints
memiliki nilai, kategori, dan properti warna yang ditentukan.
dataPoints
juga dapat menyertakan properti lain.
Dalam SampleBarChart
, metode visualTransform
merupakan bagian dari viewmodel Bagan Batang. Karena metode visualTransform
mengiterasi melalui semua dataPoints
perhitungan, ini merupakan tempat yang ideal untuk memberikan warna, seperti dalam kode berikut:
public update(options: VisualUpdateOptions) {
....
let viewModel: BarChartViewModel = visualTransform(options, this.host);
....
}
function visualTransform(options: VisualUpdateOptions, host: IVisualHost): BarChartViewModel {
let colorPalette: IColorPalette = host.colorPalette; // host: IVisualHost
for (let i = 0, len = Math.max(category.values.length, dataValue.values.length); i < len; i++) {
barChartDataPoints.push({
category: category.values[i],
value: dataValue.values[i],
color: colorPalette.getColor(category.values[i]).value,
});
}
}
Kemudian, terapkan data dari dataPoints
ke d3-selection barSelection
di dalam metode update
.
// This code is for d3 v5
// in d3 v5 for this case we should use merge() after enter() and apply changes on barSelectionMerged
this.barSelection = this.barContainer
.selectAll('.bar')
.data(this.barDataPoints);
const barSelectionMerged = this.barSelection
.enter()
.append('rect')
.merge(<any>this.barSelection);
barSelectionMerged.classed('bar', true);
barSelectionMerged
.attr("width", xScale.bandwidth())
.attr("height", d => height - yScale(<number>d.value))
.attr("y", d => yScale(<number>d.value))
.attr("x", d => xScale(d.category))
.style("fill", (dataPoint: BarChartDataPoint) => dataPoint.color)
.style("stroke", (dataPoint: BarChartDataPoint) => dataPoint.strokeColor)
.style("stroke-width", (dataPoint: BarChartDataPoint) => `${dataPoint.strokeWidth}px`);
this.barSelection
.exit()
.remove();