Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vám pomůže nainstalovat, importovat a používat nástroje pro barvy. Naučte se používat barevné nástroje k použití motivů a palet na datových bodech vizuálu Power BI.
Předpoklady
Pokud chcete balíček použít, nainstalujte:
- node.js (doporučujeme nejnovější verzi LTS)
- npm (minimální podporovaná verze je 3.0.0)
- Vlastní vizuál vytvořený nástroji PowerBI-visuals-tools
Instalace
Pokud chcete balíček nainstalovat, měli byste v adresáři s aktuálním vizuálem spustit následující příkaz:
npm install powerbi-visuals-utils-colorutils --save
Tento příkaz nainstaluje balíček a přidá balíček jako závislost do souboru package.json .
Využití
Pokud chcete používat nástroje pro interaktivitu, musíte importovat požadovanou komponentu ve zdrojovém kódu vizuálu.
import { ColorHelper } from "powerbi-visuals-utils-colorutils";
Naučte se instalovat a používat nástroje colorUtils ve vizuálech Power BI:
- [Průvodce používáním] Průvodce používáním popisuje veřejné rozhraní API balíčku. Poskytuje popis a příklady pro každé veřejné rozhraní.
Tento balíček obsahuje následující třídy a moduly:
- ColorHelper – pomáhá generovat různé barvy pro hodnoty grafu.
- colorUtils – pomáhá převést formáty barev
ColorHelper
Třída ColorHelper poskytuje následující funkce a metody:
getColorForSeriesValue
Tato metoda získá barvu pro konkrétní hodnotu řady. Pokud nebyla nastavena žádná explicitní barva nebo výchozí barva, je barva přidělena ze škály barev pro tuto řadu.
getColorForSeriesValue(objects: IDataViewObjects, value: PrimitiveValue, themeColorName?: ThemeColorName): string;
getColorForSeriesValue – příklad
import powerbi from "powerbi-visuals-api";
import { ColorHelper } from "powerbi-visuals-utils-colorutils";
import DataViewObjects = powerbi.DataViewObjects;
import DataViewValueColumns = powerbi.DataViewValueColumns;
import DataViewValueColumnGroup = powerbi.DataViewValueColumnGroup;
import DataViewObjectPropertyIdentifier = powerbi.DataViewObjectPropertyIdentifier;
import IVisual = powerbi.extensibility.visual.IVisual;
import IColorPalette = powerbi.extensibility.IColorPalette;
import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;
import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions;
export class YourVisual implements IVisual {
// Implementation of IVisual
private colorPalette: IColorPalette;
constructor(options: VisualConstructorOptions) {
this.colorPalette = options.host.colorPalette;
}
public update(visualUpdateOptions: VisualUpdateOptions): void {
const valueColumns: DataViewValueColumns = visualUpdateOptions.dataViews[0].categorical.values,
grouped: DataViewValueColumnGroup[] = valueColumns.grouped(),
defaultDataPointColor: string = "green",
fillProp: DataViewObjectPropertyIdentifier = {
objectName: "objectName",
propertyName: "propertyName"
};
let colorHelper: ColorHelper = new ColorHelper(
this.colorPalette,
fillProp,
defaultDataPointColor);
for (let i = 0; i < grouped.length; i++) {
let grouping: DataViewValueColumnGroup = grouped[i];
let color = colorHelper.getColorForSeriesValue(grouping.objects, grouping.name); // returns a color of the series
}
}
}
getColorForMeasure
Tato metoda získá barvu pro konkrétní míru.
getColorForMeasure(objects: IDataViewObjects, measureKey: any, themeColorName?: ThemeColorName): string;
Získání barvy pro příklad míry
import powerbi from "powerbi-visuals-api";
import { ColorHelper } from "powerbi-visuals-utils-colorutils";
import DataViewObjects = powerbi.DataViewObjects;
import IVisual = powerbi.extensibility.visual.IVisual;
import IColorPalette = powerbi.extensibility.IColorPalette;
import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;
import DataViewObjectPropertyIdentifier = powerbi.DataViewObjectPropertyIdentifier;
import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions;
export class YourVisual implements IVisual {
// Implementation of IVisual
private colorPalette: IColorPalette;
constructor(options: VisualConstructorOptions) {
this.colorPalette = options.host.colorPalette;
}
public update(visualUpdateOptions: VisualUpdateOptions): void {
const objects: DataViewObjects = visualUpdateOptions.dataViews[0].categorical.categories[0].objects[0],
defaultDataPointColor: string = "green",
fillProp: DataViewObjectPropertyIdentifier = {
objectName: "objectName",
propertyName: "propertyName"
};
let colorHelper: ColorHelper = new ColorHelper(
this.colorPalette,
fillProp,
defaultDataPointColor);
let color = colorHelper.getColorForMeasure(objects, ""); // returns a color
}
}
Statické normalizeSelector
Tato metoda vrátí normalizovaný selektor.
static normalizeSelector(selector: Selector, isSingleSeries?: boolean): Selector;
Static normalizeSelector – příklad
import ISelectionId = powerbi.visuals.ISelectionId;
import { ColorHelper } from "powerbi-visuals-utils-colorutils";
let selectionId: ISelectionId = ...;
let selector = ColorHelper.normalizeSelector(selectionId.getSelector(), false);
Metody getThemeColor a getHighContrastColor obě souvisejí s barvami motivu barev. ColorHelperisHighContrast má vlastnost.
getThemeColor
Tato metoda vrátí barvu motivu.
getThemeColor(themeColorName?: ThemeColorName): string;
getHighContrastColor
Tato metoda vrátí barvu pro režim vysokého kontrastu.
getHighContrastColor(themeColorName?: ThemeColorName, defaultColor?: string): string;
Příklad režimu vysokého kontrastu
import { ColorHelper } from "powerbi-visuals-utils-colorutils";
export class MyVisual implements IVisual {
private colorHelper: ColorHelper;
private init(options: VisualConstructorOptions): void {
this.colors = options.host.colorPalette;
this.colorHelper = new ColorHelper(this.colors);
}
private createViewport(element: HTMLElement): void {
const fontColor: string = "#131aea";
const axisBackgroundColor: string = this.colorHelper.getThemeColor();
// some d3 code before
d3ElementName.attr("fill", colorHelper.getHighContrastColor("foreground", fontColor);
}
public static parseSettings(dataView: DataView, colorHelper: ColorHelper): VisualSettings {
// some code that should be applied on formatting settings
if (colorHelper.isHighContrast) {
this.settings.fontColor = colorHelper.getHighContrastColor("foreground", this.settings.fontColor);
}
}
}
ColorUtils
Modul poskytuje následující funkce:
- hexToRGBString
- Otočit
- parseColorString
- calculateHighlightColor
- createLinearColorScale
- shadeColor
- rgbBlend
- channelBlend
- hexBlend
hexToRGBString
Převede šestnáctkovou barvu na řetězec RGB.
function hexToRGBString(hex: string, transparency?: number): string
příklad hexToRGBString
import { hexToRGBString } from "powerbi-visuals-utils-colorutils";
hexToRGBString('#112233');
// returns: "rgb(17,34,51)"
Otočit
Otočí barvu RGB.
function rotate(rgbString: string, rotateFactor: number): string
otočit příklad
import { rotate } from "powerbi-visuals-utils-colorutils";
rotate("#CC0000", 0.25); // returns: #66CC00
parseColorString
Parsuje libovolný barevný řetězec do formátu RGB.
function parseColorString(color: string): RgbColor
parseColorString – příklad
import { parseColorString } from "powerbi-visuals-utils-colorutils";
parseColorString('#09f');
// returns: {R: 0, G: 153, B: 255 }
parseColorString('rgba(1, 2, 3, 1.0)');
// returns: {R: 1, G: 2, B: 3, A: 1.0 }
calculateHighlightColor
Vypočítá barvu zvýraznění z rgbColor na základě lumianceThreshold a delta.
function calculateHighlightColor(rgbColor: RgbColor, lumianceThreshold: number, delta: number): string
calculateHighlightColor – příklad
import { calculateHighlightColor } from "powerbi-visuals-utils-colorutils";
let yellow = "#FFFF00",
yellowRGB = parseColorString(yellow);
calculateHighlightColor(yellowRGB, 0.8, 0.2);
// returns: '#CCCC00'
createLinearColorScale
Vrátí lineární barevnou škálu pro určitou doménu čísel.
function createLinearColorScale(domain: number[], range: string[], clamp: boolean): LinearColorScale
createLinearColorScale – příklad
import { createLinearColorScale } from "powerbi-visuals-utils-colorutils";
let scale = ColorUtility.createLinearColorScale(
[0, 1, 2, 3, 4],
["red", "green", "blue", "black", "yellow"],
true);
scale(1); // returns: green
scale(10); // returns: yellow
shadeColor
Převede šestnáctkový řetězcový výraz na číslo a vypočítá procento a R, G, B kanály. Použije procento pro každý kanál a vrátí šestnáctkovou hodnotu jako řetězec se znaménkem libry.
function shadeColor(color: string, percent: number): string
shadeColor – příklad
import { shadeColor } from "powerbi-visuals-utils-colorutils";
shadeColor('#000000', 0.1); // returns '#1a1a1a'
shadeColor('#FFFFFF', -0.5); // returns '#808080'
shadeColor('#00B8AA', -0.25); // returns '#008a80'
shadeColor('#00B8AA', 0); // returns '#00b8aa'
rgbBlend
Překryje barvu neprůhledností na barvu pozadí. Jakýkoli alfakanál se ignoruje.
function rgbBlend(foreColor: RgbColor, opacity: number, backColor: RgbColor): RgbColor
příklad rgbBlend
import { rgbBlend} from "powerbi-visuals-utils-colorutils";
rgbBlend({R: 100, G: 100, B: 100}, 0.5, {R: 200, G: 200, B: 200});
// returns: {R: 150, G: 150, B: 150}
channelBlend
Promíchá jeden kanál pro dvě barvy.
function channelBlend(foreChannel: number, opacity: number, backChannel: number): number
Příklad channelBlend
import { channelBlend} from "powerbi-visuals-utils-colorutils";
channelBlend(0, 1, 255); // returns: 0
channelBlend(128, 1, 255); // returns: 128
channelBlend(255, 0, 0); // returns: 0
channelBlend(88, 0, 88); // returns: 88
hexBlend
Překryje barvu neprůhledností na barvu pozadí.
function hexBlend(foreColor: string, opacity: number, backColor: string): string
Příklad hexBlendu
import { hexBlend} from "powerbi-visuals-utils-colorutils";
let yellow = "#FFFF00",
black = "#000000",
white = "#FFFFFF";
hexBlend(yellow, 0.5, white); // returns: "#FFFF80"
hexBlend(white, 0.5, yellow); // returns: "#FFFF80"
hexBlend(yellow, 0.5, black); // returns: "#808000"
hexBlend(black, 0.5, yellow); // returns: "#808000"