Del via


Selvstudium: Opret et liggende søjlediagram

I dette selvstudium kan du se, hvordan du udvikler en Power BI-visualisering, der viser data i form af et simpelt liggende søjlediagram. Denne visualisering understøtter en minimal mængde tilpasning. Andre sider i denne dokumentation forklarer, hvordan du tilføjer yderligere tilpasning, f.eks . genvejsmenuer, værktøjstip og meget mere.

I dette selvstudium lærer du, hvordan du kan:

  • Definer funktionaliteten i din visualisering
  • Forstå den kildekode, der bruges til at oprette en visualisering
  • Gengiv visualiseringen
  • Føj objekter til ruden egenskaber
  • Pak visualiseringen

Konfigurer dit miljø

Før du begynder at udvikle din Power BI-visualisering, skal du kontrollere, at du har alt angivet i dette afsnit.

Bemærk

Hvis D3 JavaScript-biblioteket ikke blev installeret som en del af din installation, skal du installere det nu. Kør fra PowerShell npm i d3@latest --save

Oprettelse af en visualisering i et liggende søjlediagram omfatter følgende trin:

  1. Oprette et nyt projekt
  2. Definer kapacitetsfilencapabilities.json
  3. Opret visual-API'en
  4. Pak din visualisering – pbiviz.json

Opret et nyt projekt

Formålet med dette selvstudium er at hjælpe dig med at forstå, hvordan en visualisering er struktureret og skrevet. Du kan følge disse instruktioner for at oprette en stregkodevisualisering fra bunden, eller du kan klone kildekodelageret og bruge det til at følge med uden at oprette din egen visualisering.

  1. Åbn PowerShell , og naviger til den mappe, du vil oprette projektet i.

  2. Angiv følgende kommando:

    pbiviz new BarChart
    

    Du bør nu have en mappe med navnet BarChart , der indeholder filens filer.

  3. Åbn filen [tsconfig.json] (visual-project-structure.md#tsconfigjson) i VS Code, og ret navnet på "files" til "src/barChart.ts".

    "files": [
    "src/barChart.ts"
    ]
    

    Objektet tsconfig.json "filer" peger på den fil, hvor visualiseringens hovedklasse er placeret.

    Den endelige tsconfig.json fil bør se sådan ud.

  4. Filen package.json indeholder en liste over projektafhængigheder. Erstat din package.json fil med denne.

Du bør nu have en ny mappe til visualiseringen med følgende filer og mapper:

Skærmbillede, der viser strukturen af visualiseringer.

Du kan finde en detaljeret forklaring af funktionen for hver af disse filer under Projektstruktur for visualiseringer i Power BI.

De to filer, vi fokuserer på i dette selvstudium, er capabilities.json-filen, som beskriver visualiseringen for værten og filen src/barchart.ts, som indeholder api'en for visualiseringen.

Definer egenskaber

Den capabilities.json fil er det, hvor vi binder data til værten. Vi beskriver den type datafelter, den accepterer, og hvilke funktioner visualiseringen skal have.

Skærmbillede, der viser, hvordan du binder data i feltbeholderen.

Definer dataroller

Variabler defineres og bindes i dataRoles afsnittet i filen capabilities. Vi ønsker, at vores liggende søjlediagram skal acceptere to typer variabler:

  • Kategoriske data repræsenteret af de forskellige søjler i diagrammet
  • Numeriske eller målte data, som repræsenteres af højden på hver søjle

I Visual Studio Code skal du i den capabilities.json fil bekræfte, at følgende JSON-fragment vises i objektet med navnet "dataRoles".

    "dataRoles": [
        {
            "displayName": "Category Data",
            "name": "category",
            "kind": "Grouping"
        },
        {
            "displayName": "Measure Data",
            "name": "measure",
            "kind": "Measure"
        }
    ],

Tilknyt data

Tilføj derefter datatilknytning for at fortælle værten, hvad der skal gøres med disse variabler:

Erstat indholdet af objektet "dataViewMappings" med følgende kode:

"dataViewMappings": [
        {
            "conditions": [
                {
                    "category": {
                        "max": 1
                    },
                    "measure": {
                        "max": 1
                    }
                }
            ],
            "categorical": {
                "categories": {
                    "for": {
                        "in": "category"
                    }
                },
                "values": {
                    "select": [
                        {
                            "bind": {
                                "to": "measure"
                            }
                        }
                    ]
                }
            }
        }
    ],

Ovenstående kode opretter de "betingelser", som hvert datarolleobjekt kun kan indeholde ét felt ad gangen. Bemærk, at vi bruger datarollens interne name til at referere til hvert felt.

Den angiver også den kategoriske datatilknytning , så hvert felt knyttes til den korrekte variabel.

Definer objekter for ruden egenskaber

I afsnittet "objekter" i kapacitetsfilen definerer vi de funktioner, der kan tilpasses, og som skal vises i formatruden. Disse funktioner påvirker ikke indholdet af diagrammet, men de kan ændre dets udseende og funktionalitet.

Du kan få flere oplysninger om objekter, og hvordan de fungerer, under Objekter.

Følgende objekter er valgfrie. Tilføj dem, hvis du vil gennemgå de valgfrie afsnit i dette selvstudium for at tilføje farver og gengive X-aksen.

Erstat indholdet af afsnittet "objekter" med følgende kode:

     "objects": {
        "enableAxis": {
            "properties": {
                "show": {
                    "type": {
                        "bool": true
                    }
                },
                "fill": {
                    "type": {
                        "fill": {
                            "solid": {
                                "color": true
                            }
                        }
                    }
                }
            }
        },
        "colorSelector": {
            "properties": {
                "fill": {
                    "type": {
                        "fill": {
                            "solid": {
                                "color": true
                            }
                        }
                    }
                }
            }
        }
     },

Gem filen capabilities.json.

Din endelige funktionalitetsfil skal ligne den i dette eksempel.

Visualiserings-API

Alle visualiseringer starter med en klasse, der implementerer grænsefladen IVisual . Filen src/visual.ts er den standardfil, der indeholder denne klasse.

I dette selvstudium kalder vi vores IVisual fil barChart.ts. Download filen , og gem den i mappen /src , hvis du ikke allerede har gjort det. I dette afsnit gennemgår vi denne fil i detaljer og beskriver de forskellige afsnit.

Importer

Det første afsnit i filen importerer de moduler, der er nødvendige for denne visualisering. Bemærk, at vi ud over Power BI-visualiseringsmodulerne også importerer d3-biblioteket.

Følgende moduler importeres til din barChart.ts-fil :

import {
    BaseType,
    select as d3Select,
    Selection as d3Selection
} from "d3-selection";
import {
    ScaleBand,
    ScaleLinear,
    scaleBand,
    scaleLinear
} from "d3-scale";
import "./../style/visual.less";

import { Axis, axisBottom } from "d3-axis";

import powerbi from "powerbi-visuals-api";

type Selection<T extends BaseType> = d3Selection<T, any, any, any>;

// powerbi.visuals
import DataViewCategoryColumn = powerbi.DataViewCategoryColumn;
import Fill = powerbi.Fill;
import ISandboxExtendedColorPalette = powerbi.extensibility.ISandboxExtendedColorPalette;
import ISelectionId = powerbi.visuals.ISelectionId;
import IVisual = powerbi.extensibility.IVisual;
import IVisualHost = powerbi.extensibility.visual.IVisualHost;
import PrimitiveValue = powerbi.PrimitiveValue;
import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;
import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions;
import DataViewObjectPropertyIdentifier = powerbi.DataViewObjectPropertyIdentifier;

import { textMeasurementService } from "powerbi-visuals-utils-formattingutils";
import { FormattingSettingsService } from "powerbi-visuals-utils-formattingmodel";

import { BarChartSettingsModel } from "./barChartSettingsModel";
import { dataViewObjects} from "powerbi-visuals-utils-dataviewutils";

Grænseflader

Derefter definerer vi de visuelle grænseflader. Følgende grænseflade bruges til at beskrive vores liggende søjlediagramvisualisering:

  • BarChartDataPoint

Denne grænseflade er defineret på følgende måde:

/**
 * Interface for BarChart data points.
 *
 * @interface
 * @property {PrimitiveValue} value     - Data value for point.
 * @property {string} category          - Corresponding category of data value.
 * @property {string} color             - Color corresponding to data point.
 * @property {string} strokeColor       - Stroke color for data point column.
 * @property {number} strokeWidth       - Stroke width for data point column.
 * @property {ISelectionId} selectionId - Id assigned to data point for cross filtering
 *                                        and visual interaction.
 */
interface BarChartDataPoint {
    value: PrimitiveValue;
    category: string;
    color: string;
    strokeColor: string;
    strokeWidth: number;
    selectionId: ISelectionId;
}

Visuel transformering

Nu, hvor datastrukturen er defineret, skal vi knytte data til den ved hjælp af funktionen createSelectorDataPoints . Denne funktion modtager data fra datavisningen og transformerer den til et format, som visualiseringen kan bruge. I dette tilfælde returnerer den den BarChartDataPoint[] grænseflade, der er beskrevet i det forrige afsnit.

DataView indeholder de data, der skal visualiseres. Disse data kan være i forskellige former, f.eks. kategori eller tabel. Hvis du vil oprette en kategorisk visualisering som f.eks. et liggende søjlediagram, skal du bruge kategoriegenskaben DataView.

Denne funktion kaldes, når visualiseringen opdateres.

/**
 * Function that converts queried data into a viewmodel that will be used by the visual.
 *
 * @function
 * @param {VisualUpdateOptions} options - Contains references to the size of the container
 *                                        and the dataView which contains all the data
 *                                        the visual had queried.
 * @param {IVisualHost} host            - Contains references to the host which contains services
 */
function createSelectorDataPoints(options: VisualUpdateOptions, host: IVisualHost): BarChartDataPoint[] {
    const barChartDataPoints: BarChartDataPoint[] = []
    const dataViews = options.dataViews;

    if (!dataViews
        || !dataViews[0]
        || !dataViews[0].categorical
        || !dataViews[0].categorical.categories
        || !dataViews[0].categorical.categories[0].source
        || !dataViews[0].categorical.values
    ) {
        return barChartDataPoints;
    }

    const categorical = dataViews[0].categorical;
    const category = categorical.categories[0];
    const dataValue = categorical.values[0];

    const colorPalette: ISandboxExtendedColorPalette = host.colorPalette;

    const strokeColor: string = getColumnStrokeColor(colorPalette);

    const strokeWidth: number = getColumnStrokeWidth(colorPalette.isHighContrast);

    for (let i = 0, len = Math.max(category.values.length, dataValue.values.length); i < len; i++) {
        const color: string = getColumnColorByIndex(category, i, colorPalette);

        const selectionId: ISelectionId = host.createSelectionIdBuilder()
            .withCategory(category, i)
            .createSelectionId();

        barChartDataPoints.push({
            color,
            strokeColor,
            strokeWidth,
            selectionId,
            value: dataValue.values[i],
            category: `${category.values[i]}`,
        });
    }

    return barChartDataPoints;
}

Bemærk

De næste par funktioner i den barChart.ts fil handler om farve og oprettelse af X-aksen. Disse er valgfrie og gennemgås længere nede i dette selvstudium. Dette selvstudium fortsætter fra funktionen IVisual .

Gengiv visualiseringen

Når dataene er defineret, gengiver vi visualiseringen ved hjælp af den BarChart-klasse, der implementerer grænsefladenIVisual . Grænsefladen IVisual er beskrevet på siden Visual API . Den indeholder en constructor metode, der opretter visualiseringen og en update metode, der kaldes, hver gang visualiseringen genindlæses. Før vi gengiver visualiseringen, skal vi erklære medlemmerne af klassen:

export class BarChart implements IVisual {
    private svg: Selection<SVGSVGElement>;
    private host: IVisualHost;
    private barContainer: Selection<SVGElement>;
    private xAxis: Selection<SVGGElement>;
    private barDataPoints: BarChartDataPoint[];
    private formattingSettings: BarChartSettingsModel;
    private formattingSettingsService: FormattingSettingsService;

    private barSelection: Selection<BaseType>;

    static Config = {
        xScalePadding: 0.1,
        solidOpacity: 1,
        transparentOpacity: 1,
        margins: {
            top: 0,
            right: 0,
            bottom: 25,
            left: 30,
        },
        xAxisFontMultiplier: 0.04,
    };
}

Konstruer visualiseringen

Konstruktørfunktionen kaldes kun én gang, når visualiseringen gengives første gang. Den opretter tomme SVG-objektbeholdere for det liggende søjlediagram og X-aksen. Bemærk, at det bruger d3-biblioteket til at gengive SVG.

/**
     * Creates instance of BarChart. This method is only called once.
     *
     * @constructor
     * @param {VisualConstructorOptions} options - Contains references to the element that will
     *                                             contain the visual and a reference to the host
     *                                             which contains services.
     */
    constructor(options: VisualConstructorOptions) {
        this.host = options.host;
        //Creating the formatting settings service.
        const localizationManager = this.host.createLocalizationManager();
        this.formattingSettingsService = new FormattingSettingsService(localizationManager);

        this.svg = d3Select(options.element)
            .append('svg')
            .classed('barChart', true);

        this.barContainer = this.svg
            .append('g')
            .classed('barContainer', true);

        this.xAxis = this.svg
            .append('g')
            .classed('xAxis', true);
    }

Opdater visualiseringen

Opdateringsmetoden kaldes, hver gang størrelsen på visualiseringen eller en af dens værdier ændres.

Skalering

Vi skal skalere visualiseringen, så antallet af søjler og aktuelle værdier passer til visualiseringens definerede bredde- og højdegrænser. Dette svarer til opdateringsmetoden i selvstudiet Circle card.

Hvis du vil beregne skalaen, skal du bruge metoderne scaleLinear og scaleBand , der blev importeret tidligere fra d3-scale biblioteket.

Værdien options.dataViews[0].categorical.values[0].maxLocal indeholder den største værdi for alle aktuelle datapunkter. Denne værdi bruges til at bestemme højden på y-aksen. Skaleringen af bredden på x-aksen bestemmes af antallet af kategorier, der er bundet til visualiseringen i grænsefladen barchartdatapoint .

I tilfælde, hvor X-aksen gengives, håndterer denne visualisering også ordskift, hvis der ikke er plads nok til at skrive hele navnet på X-aksen.

Andre opdateringsfunktioner

Ud over skalering håndterer opdateringsmetoden også valg og farver. Disse funktioner er valgfrie og gennemgås senere:

   /**
     * Updates the state of the visual. Every sequential databinding and resize will call update.
     *
     * @function
     * @param {VisualUpdateOptions} options - Contains references to the size of the container
     *                                        and the dataView which contains all the data
     *                                        the visual had queried.
     */
    public update(options: VisualUpdateOptions) {
        this.formattingSettings = this.formattingSettingsService.populateFormattingSettingsModel(BarChartSettingsModel, options.dataViews?.[0]);
        this.barDataPoints = createSelectorDataPoints(options, this.host);
        this.formattingSettings.populateColorSelector(this.barDataPoints);

        const width = options.viewport.width;
        let height = options.viewport.height;

        this.svg
            .attr("width", width)
            .attr("height", height);

        if (this.formattingSettings.enableAxis.show.value) {
            const margins = BarChart.Config.margins;
            height -= margins.bottom;
        }

        this.xAxis
            .style("font-size", Math.min(height, width) * BarChart.Config.xAxisFontMultiplier)
            .style("fill", this.formattingSettings.enableAxis.fill.value.value);

        const yScale: ScaleLinear<number, number> = scaleLinear()
            .domain([0, <number>options.dataViews[0].categorical.values[0].maxLocal])
            .range([height, 0]);

        const xScale: ScaleBand<string> = scaleBand()
            .domain(this.barDataPoints.map(d => d.category))
            .rangeRound([0, width])
            .padding(0.2);

        const xAxis: Axis<string> = axisBottom(xScale);

        this.xAxis.attr('transform', 'translate(0, ' + height + ')')
            .call(xAxis)
            .attr("color", this.formattingSettings.enableAxis.fill.value.value);

        const textNodes: Selection<SVGElement> = this.xAxis.selectAll("text");
        BarChart.wordBreak(textNodes, xScale.bandwidth(), height);

        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", (dataPoint: BarChartDataPoint) => height - yScale(<number>dataPoint.value))
            .attr("y", (dataPoint: BarChartDataPoint) => yScale(<number>dataPoint.value))
            .attr("x", (dataPoint: BarChartDataPoint) => xScale(dataPoint.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();
    }

    private static wordBreak(
        textNodes: Selection<SVGElement>,
        allowedWidth: number,
        maxHeight: number
    ) {
        textNodes.each(function () {
            textMeasurementService.wordBreak(
                this,
                allowedWidth,
                maxHeight);
        });
    }

Udfyld ruden med egenskaber ved hjælp af Utils til formateringsmodellen

Den endelige metode i funktionen IVisual er getFormattingModel. Denne metode opretter og returnerer et moderne formatrudeformateringsmodelobjekt, der indeholder alle komponenter og egenskaber i formateringsruden. Derefter placeres objektet i ruden Format. I dette tilfælde opretter vi formatkort for enableAxis og colorSelector, herunder formateringsegenskaber for show og fill, i henhold til "objekter" i filen capabilities.json . Hvis du vil tilføje en farvevælger for hver kategori i ruden Egenskab , skal du tilføje en for-løkke på barDataPoints og for hver enkelt tilføje en ny egenskab for farvevælgerformat til formateringsmodellen.

Hvis du vil oprette en formateringsmodel, skal udvikleren have kendskab til alle dens komponenter. Se komponenterne i formateringsruden i Format Pane. Se getFormattingModel API'en FormattingModel utils for lageret til formatering af modelhjælpeprogrammer.

Download filen , og gem den i mappen /src . Deklarer formateringsegenskaber og deres værdier i en klasse med formateringsindstillinger:

import { formattingSettings } from "powerbi-visuals-utils-formattingmodel";
import { BarChartDataPoint } from "./barChart";

import Card = formattingSettings.SimpleCard;
import Model = formattingSettings.Model;
import Slice = formattingSettings.Slice;
import ColorPicker = formattingSettings.ColorPicker;
import ToggleSwitch = formattingSettings.ToggleSwitch;

/**
 * Enable Axis Formatting Card
 */
class EnableAxisCardSettings extends Card {
    show = new ToggleSwitch({
        name: "show",
        displayName: undefined,
        value: false,
    });

    fill = new ColorPicker({
        name: "fill",
        displayName: "Color",
        value: { value: "#000000" }
    });
    topLevelSlice: ToggleSwitch = this.show;
    name: string = "enableAxis";
    displayName: string = "Enable Axis";
    slices: Slice[] = [this.fill];
}

/**
 * Color Selector Formatting Card
 */
class ColorSelectorCardSettings extends Card {
    name: string = "colorSelector";
    displayName: string = "Data Colors";

    // slices will be populated in barChart settings model `populateColorSelector` method
    slices: Slice[] = [];
}

/**
* BarChart formatting settings model class
*/
export class BarChartSettingsModel extends Model {
    // Create formatting settings model formatting cards
    enableAxis = new EnableAxisCardSettings();
    colorSelector = new ColorSelectorCardSettings();
    cards: Card[] = [this.enableAxis, this.colorSelector];

    /**
     * populate colorSelector object categories formatting properties
     * @param dataPoints 
     */
    populateColorSelector(dataPoints: BarChartDataPoint[]) {
        const slices: Slice[] = this.colorSelector.slices;
        if (dataPoints) {
            dataPoints.forEach(dataPoint => {
                slices.push(new ColorPicker({
                    name: "fill",
                    displayName: dataPoint.category,
                    value: { value: dataPoint.color },
                    selector: dataPoint.selectionId.getSelector(),
                }));
            });
        }
    }
}

Opret og opret tjenestemodellen for formateringsindstillinger i visualiseringens konstruktørmetode. Tjenesten for formateringsindstillinger modtager indstillingerne for barChart-format og konverterer dem til et FormattingModel-objekt, der returneres i API'engetFormattingModel.

Hvis du vil bruge lokaliseringsfunktionen, skal du føje lokaliseringsstyringen til tjenesten formateringsindstillinger.

    import { FormattingSettingsService } from "powerbi-visuals-utils-formattingmodel";
    
    // ...
    // declare utils formatting settings service
    private formattingSettingsService: FormattingSettingsService;
    //...

    constructor(options: VisualConstructorOptions) {
        this.host = options.host;
        const localizationManager = this.host.createLocalizationManager();
        this.formattingSettingsService = new FormattingSettingsService(localizationManager);
        
        // Add here rest of your custom visual constructor code
    }

Opdater modellen til formateringsindstillinger ved hjælp af opdaterings-API'en. Kald Opdaterings-API'en, hver gang en formateringsegenskab i ruden Egenskaber ændres. Opret datapunkter for søjlediagramvælgere, og udfyld dem i model til formateringsindstillinger:


    // declare formatting settings model for bar chart 
    private formattingSettings: BarChartSettingsModel;

    // ...

    public update(options: VisualUpdateOptions) {
        this.formattingSettings = this.formattingSettingsService.populateFormattingSettingsModel(BarChartSettingsModel, options.dataViews[0]);
        this.barDataPoints = createSelectorDataPoints(options, this.host);
        this.formattingSettings.populateColorSelector(this.barDataPoints);

        // Add the rest of your custom visual update API code here

    }

Endelig er den nye API getFormattingModel en simpel kodelinje ved hjælp af tjenesten for formateringsindstillinger og den aktuelle model til formateringsindstillinger, der blev oprettet i opdaterings-API'en ovenfor.

    public getFormattingModel(): powerbi.visuals.FormattingModel {
        return this.formattingSettingsService.buildFormattingModel(this.formattingSettings);
    }

(Valgfrit) Gengiv X-aksen (statiske objekter)

Du kan føje objekter til ruden Egenskab for yderligere at tilpasse visualiseringen. Disse tilpasninger kan være ændringer i brugergrænsefladen eller ændringer, der er relateret til de data, der blev forespurgte.

Du kan slå disse objekter til eller fra i ruden Egenskab .

Skærmbillede af objekter i ruden Egenskab.

I dette eksempel gengives en X-akse i søjlediagrammet som et statisk objekt.

Vi har allerede føjet egenskaben enableAxis til egenskabsfilen og grænsefladen barChartSettings.

(Valgfrit) Tilføj farve (databundne objekter)

Databundne objekter ligner statiske objekter, men håndterer typisk datamarkering. Du kan f.eks. bruge databundne objekter til interaktivt at vælge den farve, der er knyttet til hvert datapunkt.

Skærmbillede af farvevalg på egenskaber.

Vi har allerede defineret colorSelector objektet i filen capabilities .

Hvert datapunkt repræsenteres af en anden farve. Vi medtager farve i grænsefladen BarChartDataPoint og tildeler en standardfarve til hvert datapunkt, når det er defineret i IVisualHost.

function getColumnColorByIndex(
    category: DataViewCategoryColumn,
    index: number,
    colorPalette: ISandboxExtendedColorPalette,
): string {
    if (colorPalette.isHighContrast) {
        return colorPalette.background.value;
    }

    const defaultColor: Fill = {
        solid: {
            color: colorPalette.getColor(`${category.values[index]}`).value,
        }
    };

    const prop: DataViewObjectPropertyIdentifier = {
        objectName: "colorSelector",
        propertyName: "fill"
    };

    let colorFromObjects: Fill;
    if(category.objects?.[index]){
        colorFromObjects = dataViewObjects.getValue(category?.objects[index], prop);
    }

    return colorFromObjects?.solid.color ?? defaultColor.solid.color;
}

function getColumnStrokeColor(colorPalette: ISandboxExtendedColorPalette): string {
    return colorPalette.isHighContrast
        ? colorPalette.foreground.value
        : null;
}

function getColumnStrokeWidth(isHighContrast: boolean): number {
    return isHighContrast
        ? 2
        : 0;
}

Tjenesten colorPalette administrerer disse farver i createSelectorDataPoints funktionen . Da createSelectorDataPoints gentagelser gennem hvert af datapunkterne er det et ideelt sted at tildele kategoriobjekter som farve.

Hvis du vil have mere detaljerede instruktioner om, hvordan du føjer farve til dit liggende søjlediagram, skal du gå til Føj farver til din Power BI-visualisering.

Bemærk

Kontrollér, at den endelige barChart.ts fil ser ud som denne barChart.ts kildekode, eller download barChart.ts kildekoden, og brug den til at erstatte filen.

Test visualiseringen

Kør visualiseringen på Power BI-serveren for at se, hvordan det ser ud:

  1. I PowerShell skal du navigere til projektets mappe og starte udviklingsappen.

    pbiviz start
    

    Din visualisering kører nu, mens den hostes på computeren.

    Vigtigt

    Luk ikke PowerShell-vinduet før slutningen af selvstudiet. Hvis du vil forhindre, at visualiseringen kører, skal du angive Ctrl+C, og hvis du bliver bedt om at afslutte batchjobbet, skal du angive Y og derefter Enter.

  2. Få vist visualiseringen i Power BI-tjeneste ved at vælge udviklervisualiseringeni ruden Visualisering.

    Skærmbillede af udviklervisualisering.

  3. Føj data til visualiseringen

    Skærmbillede af data, der er bundet til felt bucket.

  4. Træk i kanterne af visualiseringen for at ændre størrelsen, og læg mærke til, hvordan skalaen justeres.

  5. Slå X-aksen til og fra.

    Skærmbillede af X-aksen i egenskabsruden.

  6. Rediger farverne i de forskellige kategorier.

Tilføj andre funktioner

Du kan tilpasse visualiseringen yderligere ved at tilføje flere funktioner. Du kan tilføje funktioner, der øger visualiseringens funktionalitet, forbedrer dets udseende eller giver brugeren mere kontrol over dets udseende. Du kan f.eks.:

Pak visualiseringen

Før du kan indlæse din visualisering i Power BI Desktop eller dele den med community'et i Power BI Visual Gallery, skal du pakke den.

Hvis du vil forberede visualiseringen til deling, skal du følge vejledningen i Pak en Power BI-visualisering.

Bemærk

Du kan finde hele kildekoden for et liggende søjlediagram med flere funktioner, herunder værktøjstip og en genvejsmenu, i Eksempel på liggende søjlediagram i Power BI-visualiseringer.