Bu makalede, özel görsellerinize renk ekleme ve tanımlı renkler içeren bir görsel için veri noktalarını işleme açıklanmaktadır.
IVisualHost, görsel konakla etkileşim kuran özellikler ve hizmetler koleksiyonu, hizmetle birlikte colorPalette özel görsellerde renkleri tanımlayabilir. Bu makaledeki örnek kod SampleBarChart görselini değiştirir. SampleBarChart görsel kaynak kodu için bkz . barChart.ts.
Her veri noktasını farklı bir renkte göstermek için BarChartDataPoint aşağıdaki örnekte gösterildiği gibi değişkeni arabirime ekleyincolor:
TypeScript
/**
* 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;
};
Renk paleti hizmetini kullanma
Hizmet, colorPalette görselinizde kullanılan renkleri yönetir. Hizmetin bir örneği colorPalette üzerinde IVisualHostkullanılabilir.
yönteminde renk paletini update aşağıdaki kodla tanımlayın:
Ardından belirtin dataPoints. Bu örnekte, her biri tanımlı bir değere, kategoriye dataPoints ve renk özelliğine sahiptir. dataPoints diğer özellikleri de içerebilir.
visualTransform içinde SampleBarChartyöntemi Çubuk Grafik görünüm modelinin bir parçasıdır. visualTransform yöntemi tüm dataPoints hesaplamalarda yinelediğinden, aşağıdaki kodda olduğu gibi renkleri atamak için ideal yerdir:
TypeScript
public update(options: VisualUpdateOptions) {
....
let viewModel: BarChartViewModel = visualTransform(options, this.host);
....
}
functionvisualTransform(options: VisualUpdateOptions, host: IVisualHost): BarChartViewModel{
let colorPalette: IColorPalette = host.colorPalette; // host: IVisualHostfor (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,
});
}
}
// This code is for d3 v5// in d3 v5 for this case we should use merge() after enter() and apply changes on barSelectionMergedthis.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();
Microsoft Power BI ile verileri modelleme, görselleştirme ve analiz etme için iş gereksinimleriyle ve teknik gereksinimlerle uyumlu yöntemleri ve en iyi yöntemleri gösterin.
Power BI görselleri için DataView nesnesini ayrıştırmayı basitleştirmek için SVG yardımcı programlarının nasıl yükleneceğini ve kullanılacağını öğrenin.