Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:✅ Power BI Desktop e servizio Power BI
La formattazione condizionale consente di controllare i colori del grafico usando sfumature, regole o valori di campo. Usarlo per evidenziare linee e punti dati importanti, mostrare le modifiche all'interno di una linea o mantenere i colori delle categorie coerenti tra gli oggetti visivi del report.
Questo articolo illustra come applicare la formattazione condizionale in sei scenari comuni. Per una panoramica degli oggetti visivi e degli stili di formato supportati, vedere Formattazione condizionale in Power BI oggetti visivi.
Prerequisites
Per seguire questi esempi, è necessario:
- Modificare l'accesso a un report in Power BI Desktop o al servizio Power BI.
- Grafico che supporta la formattazione condizionale per linee, marcatori, sezioni, barre o colonne.
- Un campo numerico per la formattazione sfumatura o un campo di testo o una misura che restituisce un nome di colore, un codice esadecimale o un nome di colore del tema per la formattazione del valore del campo.
- Power BI Desktop o modificare l'accesso a un modello semantico esistente nella servizio Power BI, se si desidera creare i dati di esempio usando lo script TMDL (Tabular Model Definition Language).
Configurare gli esempi con TMDL
È possibile creare tabelle, misure e parametri di campo usati in questi esempi applicando uno script TMDL. Applicare lo script a un file vuoto in Power BI Desktop o a un modello semantico esistente usando la vista TMDL (anteprima) nel portale servizio Power BI o Fabric. Per altre informazioni sull'applicazione di script, vedere Usare la visualizzazione TMDL in Power BI.
Avvertimento
Questo createOrReplace script sovrascrive tutte le tabelle nel modello semantico con gli stessi nomi delle tabelle nello script.
Per creare il modello di esempio:
- Aprire un file vuoto in Power BI Desktop o in un modello semantico esistente nella servizio Power BI.
- Aprire la visualizzazione TMDL.
- Selezionare l'editor di codice e quindi incollare lo script seguente.
- Seleziona Applica.
createOrReplace
model Model
culture: en-US
defaultPowerBIDataSourceVersion: powerBI_V3
sourceQueryCulture: en-US
valueFilterBehavior: independent
dataAccessOptions
legacyRedirects
returnErrorValuesAsNull
/// Sample monthly sales, units, and cost data by year used to demonstrate line trends and measure-based color formatting.
table 'Trending data'
/// Returns total monthly sales in the current filter context.
measure Sales = sum('Trending data'[Monthly sales])
formatString: \$#,0;(\$#,0);\$#,0
annotation PBI_FormatHint = {"currencyCulture":"en-US"}
/// Returns total units sold in the current filter context.
measure 'Units sold' = sum('Trending data'[Units])
formatString: #,0
/// Returns total cost of goods sold in the current filter context.
measure COGS = sum('Trending data'[Cost])
formatString: \$#,0.###############;(\$#,0.###############);\$#,0.###############
/// Returns the latest year in the current filter context for emphasizing the most recent line with conditional formatting.
measure 'Latest year' = max('Trending data'[Year])
formatString: 0
/// Calendar year associated with each monthly observation.
column Year
formatString: 0
summarizeBy: none
isNameInferred
sourceColumn: [Year]
annotation SummarizationSetBy = User
/// Numeric month from 1 through 12 used to sort the Month labels chronologically.
column MonthNum
isHidden
formatString: 0
summarizeBy: sum
isNameInferred
sourceColumn: [MonthNum]
annotation SummarizationSetBy = Automatic
/// Abbreviated month label used on chart axes and sorted by MonthNum.
column Month
summarizeBy: none
isNameInferred
sourceColumn: [Month]
sortByColumn: MonthNum
annotation SummarizationSetBy = Automatic
/// Number of units sold in the month; source column for the Units sold measure.
column Units
isHidden
formatString: 0
summarizeBy: sum
isNameInferred
sourceColumn: [Units]
annotation SummarizationSetBy = Automatic
/// Cost of goods sold for the month; source column for the COGS measure.
column Cost
isHidden
formatString: 0
summarizeBy: sum
isNameInferred
sourceColumn: [Cost]
annotation SummarizationSetBy = Automatic
/// Month-level date used for chronological axes, filtering, and date slicers.
column Date
formatString: mmm, yyyy
summarizeBy: none
isNameInferred
sourceColumn: [Date]
annotation SummarizationSetBy = Automatic
annotation PBI_FormatHint = {"isCustom":true}
/// Sales amount for the month; source column for the Sales measure.
column 'Monthly sales'
isHidden
formatString: 0
summarizeBy: sum
isNameInferred
sourceColumn: [Monthly sales]
annotation SummarizationSetBy = Automatic
partition 'Trending data' = calculated
mode: import
source =
ADDCOLUMNS(
DATATABLE(
"Year", INTEGER,
"MonthNum", INTEGER,
"Month", STRING,
"Monthly sales", INTEGER,
"Units", INTEGER,
"Cost", INTEGER,
{
{ 2023, 1, "Jan", 53000, 1060, 32860 },
{ 2023, 2, "Feb", 43000, 860, 26660 },
{ 2023, 3, "Mar", 42000, 840, 26040 },
{ 2023, 4, "Apr", 61500, 1230, 38130 },
{ 2023, 5, "May", 40500, 810, 25110 },
{ 2023, 6, "Jun", 80500, 1610, 49910 },
{ 2023, 7, "Jul", 59500, 1190, 36890 },
{ 2023, 8, "Aug", 49500, 990, 30690 },
{ 2023, 9, "Sep", 45000, 900, 27900 },
{ 2023, 10, "Oct", 82500, 1650, 51150 },
{ 2023, 11, "Nov", 43500, 870, 26970 },
{ 2023, 12, "Dec", 79500, 1590, 49290 },
{ 2024, 1, "Jan", 57500, 1150, 35650 },
{ 2024, 2, "Feb", 47000, 940, 29140 },
{ 2024, 3, "Mar", 45500, 910, 28210 },
{ 2024, 4, "Apr", 67000, 1340, 41540 },
{ 2024, 5, "May", 44000, 880, 27280 },
{ 2024, 6, "Jun", 87500, 1750, 54250 },
{ 2024, 7, "Jul", 64500, 1290, 39990 },
{ 2024, 8, "Aug", 53500, 1070, 33170 },
{ 2024, 9, "Sep", 48500, 970, 30070 },
{ 2024, 10, "Oct", 89500, 1790, 55490 },
{ 2024, 11, "Nov", 47500, 950, 29450 },
{ 2024, 12, "Dec", 86500, 1730, 53630 },
{ 2025, 1, "Jan", 62500, 1250, 38750 },
{ 2025, 2, "Feb", 51000, 1020, 31620 },
{ 2025, 3, "Mar", 49000, 980, 30380 },
{ 2025, 4, "Apr", 72500, 1450, 44950 },
{ 2025, 5, "May", 47500, 950, 29450 },
{ 2025, 6, "Jun", 95000, 1900, 58900 },
{ 2025, 7, "Jul", 69500, 1390, 43090 },
{ 2025, 8, "Aug", 58000, 1160, 35960 },
{ 2025, 9, "Sep", 52500, 1050, 32550 },
{ 2025, 10, "Oct", 97000, 1940, 60140 },
{ 2025, 11, "Nov", 51500, 1030, 31930 },
{ 2025, 12, "Dec", 94000, 1880, 58280 },
{ 2026, 1, "Jan", 68000, 1360, 42160 },
{ 2026, 2, "Feb", 55500, 1110, 34410 },
{ 2026, 3, "Mar", 53500, 1070, 33170 },
{ 2026, 4, "Apr", 79000, 1580, 48980 },
{ 2026, 5, "May", 52000, 1040, 32240 },
{ 2026, 6, "Jun", 103000, 2060, 63860 },
{ 2026, 7, "Jul", 75500, 1510, 46810 },
{ 2026, 8, "Aug", 63000, 1260, 39060 },
{ 2026, 9, "Sep", 57500, 1150, 35650 },
{ 2026, 10, "Oct", 105500, 2110, 65410 },
{ 2026, 11, "Nov", 56000, 1120, 34720 },
{ 2026, 12, "Dec", 102500, 2050, 63550 }
}
),
"Date", DATE ( [Year], [MonthNum], 1 )
)
/// Generated time-series values with positive and negative spikes used to demonstrate conditional formatting for line segments, shading, and markers.
table 'Spikes and Dips'
/// Returns the theme positive color for the maximum selected value, the theme negative color for the minimum, and transparent for all other markers.
measure 'Min and max marker' =
VAR _maxValue =
CALCULATE ( MAX ( 'Spikes and Dips'[Value] ), ALLSELECTED () )
VAR _minValue =
CALCULATE ( MIN ( 'Spikes and Dips'[Value] ), ALLSELECTED () )
VAR _dataPoint =
SUM ( 'Spikes and Dips'[Value] )
RETURN
SWITCH (
TRUE (),
_dataPoint = _maxValue, "good",
_dataPoint = _minValue, "bad",
"#FFFFFF00"
)
/// Sequential period number used as the x-axis for the generated line series.
column Period
formatString: 0
summarizeBy: none
isNameInferred
sourceColumn: [Period]
annotation SummarizationSetBy = User
/// Generated value containing typical observations and deliberate positive and negative spikes.
column Value
formatString: 0
summarizeBy: sum
isNameInferred
sourceColumn: [Value]
annotation SummarizationSetBy = Automatic
partition 'Spikes and Dips' = calculated
mode: import
source =
SELECTCOLUMNS (
ADDCOLUMNS (
GENERATESERIES ( 1, 150, 1 ),
"ValueCol",
VAR p = [Value]
RETURN
SWITCH (
TRUE (),
p >= 30 && p <= 32, RANDBETWEEN ( 50, 80 ),
p >= 20 && p <= 23, RANDBETWEEN ( -40, -30 ),
RANDBETWEEN ( 1, 10 )
)
),
"Period", [Value],
"Value", [ValueCol]
)
/// Field parameter that switches among Units sold, Sales, and COGS and assigns a consistent color to each measure.
table Parameter
/// Display label for the measure selected through the field parameter.
column Parameter
summarizeBy: none
sourceColumn: [Value1]
sortByColumn: 'Parameter Order'
relatedColumnDetails
groupByColumn: 'Parameter Fields'
annotation SummarizationSetBy = Automatic
/// Internal field reference that identifies the measure used by each field parameter option.
column 'Parameter Fields'
isHidden
summarizeBy: none
sourceColumn: [Value2]
sortByColumn: 'Parameter Order'
extendedProperty ParameterMetadata = {"version":3,"kind":2}
annotation SummarizationSetBy = Automatic
/// Numeric sort order for the field parameter options.
column 'Parameter Order'
isHidden
formatString: 0
summarizeBy: sum
sourceColumn: [Value3]
annotation SummarizationSetBy = Automatic
/// CSS color name assigned to each field parameter measure for conditional formatting.
column Color
summarizeBy: none
sourceColumn: [Value4]
annotation SummarizationSetBy = Automatic
partition Parameter = calculated
mode: import
source =
{
("Units sold", NAMEOF('Trending data'[Units sold]), 0, "MidnightBlue"),
("Sales", NAMEOF('Trending data'[Sales]), 1, "MediumOrchid"),
("COGS", NAMEOF('Trending data'[COGS]), 2, "Crimson")
}
/// Disconnected measure selector that maps each measure choice to a color for dynamic measure and color formatting examples.
table 'Select measure'
/// Returns Units sold, Sales, or COGS according to the current Measure selection.
measure 'Selected measure' =
SWITCH (
SELECTEDVALUE ( 'Select measure'[Measure] ),
"Units sold", [Units sold],
"Sales", [Sales],
"COGS", [COGS],
BLANK ()
)
formatString: 0
/// Measure name selected by the report viewer to control the dynamic measure result.
column Measure
summarizeBy: none
sourceColumn: [Value1]
annotation SummarizationSetBy = Automatic
/// CSS color name associated with each measure selection for conditional formatting.
column Color
summarizeBy: none
sourceColumn: [Value2]
annotation SummarizationSetBy = Automatic
partition 'Select measure' = calculated
mode: import
source =
{
("Units sold", "MidnightBlue"),
("Sales", "MediumOrchid"),
("COGS", "Crimson")
}
/// Sample units by quarter and color category used to demonstrate synchronized legend colors and gradient formatting.
table 'Quarterly colors'
/// Returns the quarter with the highest units in the current context while preserving color and other filters.
measure 'Best Q' =
VAR _ColorQuarters =
SUMMARIZECOLUMNS (
'Quarterly colors'[Quarter],
ALL ( 'Quarterly colors'[Quarter] ),
"UnitsSold", SUM ( 'Quarterly colors'[Units] )
)
VAR _MaxUnits =
MAXX ( _ColorQuarters, [UnitsSold] )
VAR _BestRows =
FILTER ( _ColorQuarters, [UnitsSold] = _MaxUnits )
RETURN
MAXX ( _BestRows, 'Quarterly colors'[Quarter] )
/// CSS color name that identifies the category and supplies its conditional formatting color.
column Color
isNameInferred
sourceColumn: [Color]
/// Quarter label used to compare units across Q1, Q2, and Q3.
column Quarter
isNameInferred
sourceColumn: [Quarter]
/// Number of units associated with each color category and quarter.
column Units
isNameInferred
sourceColumn: [Units]
partition 'Quarterly colors' = calculated
mode: import
source =
DATATABLE (
"Color", STRING,
"Quarter", STRING,
"Units", INTEGER,
{
{ "Crimson", "Q1", 45 },
{ "Crimson", "Q2", 62 },
{ "Crimson", "Q3", 78 },
{ "MidnightBlue", "Q1", 72 },
{ "MidnightBlue", "Q2", 55 },
{ "MidnightBlue", "Q3", 88 },
{ "MediumSeaGreen", "Q1", 38 },
{ "MediumSeaGreen", "Q2", 71 },
{ "MediumSeaGreen", "Q3", 49 },
{ "Goldenrod", "Q1", 91 },
{ "Goldenrod", "Q2", 47 },
{ "Goldenrod", "Q3", 66 },
{ "MediumOrchid", "Q1", 56 },
{ "MediumOrchid", "Q2", 83 },
{ "MediumOrchid", "Q3", 60 }
}
)
cultureInfo en-US
annotation __PBI_TimeIntelligenceEnabled = 0
annotation PBI_QueryOrder = []
Dissolvenza delle linee precedenti all'anno
Quando un grafico a linee confronta più anni, usa una sfumatura per evidenziare l'ultimo anno e mostrare gli anni precedenti in sfumature di grigio. La formattazione viene aggiornata quando vengono filtrati o modificati nuovi dati che l'anno è più recente.
Per questo esempio, configurare un grafico a linee con Month sull'asse x, Sales sull'asse y e Year nella legenda.
Per applicare la sfumatura:
Selezionare il grafico a linee e quindi selezionare Formatta oggetto visivo.
Espandere Linee, quindi espandere Colore.
Selezionare Tutte le serie e quindi selezionare il pulsante Formattazione condizionale (fx) accanto a Colore.
Nella finestra di dialogo formattazione condizionale impostare Stile formato su Sfumatura.
In Quale campo è necessario basare questa opzione?, selezionare la misura che restituisce l'anno più recente.
Impostare Minimo su un grigio chiaro e Su Massimo su blu.
Selezionare Aggiungi un colore intermedio, impostare il colore centrale su un grigio più scuro e quindi selezionare OK.
L'ultimo anno appare in blu, mentre gli anni precedenti si dissolve attraverso sfumature di grigio.
Il colore della linea controlla anche i colori dell'etichetta del marcatore e della serie. Usare marcatori ed etichette di serie come segnali non di colore che consentono di distinguere le linee. Per visualizzarli, espandere Indicatori e attivare Mostra per tutte le serie. Espandere quindi Etichette serie e attivarle.
Quando la selezione della data del report cambia, l'anno selezionato più recente rimane blu. Gli anni precedenti continuano a fornire il contesto in grigio.
Per modificare la formattazione condizionale, selezionare di nuovo il pulsante fx . Per rimuoverlo e tornare ai colori statici, selezionare il pulsante gomma accanto a Colore.
Formattare segmenti di linea e ombreggiatura
È possibile formattare i segmenti all'interno di una singola riga per distinguere valori alti e bassi o aumentare e diminuire. In questo esempio viene utilizzato un grafico a linee con Period sull'asse x e Somma di valore sull'asse y.
Per formattare i segmenti di linea:
Selezionare il grafico a linee e quindi selezionare Formatta oggetto visivo.
Espandere Linee, quindi espandere Colore.
Selezionare il pulsante Formattazione condizionale (fx) accanto a Colore.
Impostare Stile formato su Sfumatura.
In Quale campo è necessario basare questa opzione?, selezionare Somma valore.
Impostare Minimo su rosso scuro e Massimo su blu scuro.
Selezionare Aggiungi un colore intermedio, impostare Center sul valore
0personalizzato, scegliere grigio per il colore e quindi selezionare OK.
I segmenti di linea passano dal rosso ai valori bassi fino al grigio da zero a blu per i valori alti. L'impostazione Tipo di segmento viene visualizzata e il valore predefinito è Center. L'impostazione Sfumatura è attivata per impostazione predefinita.
Modificare Tipo segmento su Sinistra o Destra per applicare il colore di ogni punto dati al segmento su tale lato. La fusione sfumata non è disponibile quando si seleziona Sinistra o Destra.
Per rendere i colori più prominenti, attivare l'area Ombreggiatura. L'area ombreggiata usa i colori della linea formattati in modo condizionale.
Evidenziare i marcatori selezionati
Applicare la formattazione condizionale direttamente ai marcatori di linea per evidenziare punti dati specifici. In questo esempio, una misura DAX (Data Analysis Expressions) assegna il colore positivo del tema del report al valore massimo e al colore negativo al valore minimo. Assegna un colore trasparente a tutti gli altri marcatori.
Senza formattazione condizionale, i marcatori vengono visualizzati in ogni punto dati e possono rendere difficile l'analisi del grafico.
Creare la misura seguente:
Min and max marker =
VAR _maxValue =
CALCULATE (
MAX ( 'Spikes and Dips'[Value] ),
ALLSELECTED ()
)
VAR _minValue =
CALCULATE (
MIN ( 'Spikes and Dips'[Value] ),
ALLSELECTED ()
)
VAR _dataPoint =
SUM ( 'Spikes and Dips'[Value] )
RETURN
SWITCH (
TRUE (),
_dataPoint = _maxValue, "good",
_dataPoint = _minValue, "bad",
"#FFFFFF00"
)
Per applicare la misura ai marcatori:
- Selezionare il grafico a linee e quindi selezionare Formatta oggetto visivo.
- Espandere Indicatori, quindi espandere Colore.
- Selezionare il pulsante Formattazione condizionale (fx) accanto a Colore.
- Impostare Stile formato su Valore campo.
- In Quale campo è consigliabile basare questa opzione?, selezionare Min e max marker( Min and max marker).
- Seleziona OK.
Solo i marcatori minimo e massimo rimangono visibili. Poiché la misura restituisce i nomi dei colori del tema, i colori dell'indicatore vengono aggiornati quando si modificano i colori del sentiment del tema del report.
Sincronizzare i colori della legenda tra i grafici
Usare una colonna o una misura che restituisce valori di colore per mantenere lo stesso colore di categoria in più oggetti visivi. Quando si definiscono i colori nel modello semantico, è possibile aggiornare il colore in un'unica posizione.
Nell'esempio seguente vengono utilizzate categorie i cui nomi sono colori. Prima della formattazione condizionale, i colori visivi non corrispondono ai relativi nomi di categoria.
Per applicare il campo colore a un grafico ad anello:
- Selezionare il grafico ad anello e quindi selezionare Formatta oggetto visivo.
- Espandere Slices (Sezioni) e quindi Color (Colori).
- Selezionare il pulsante Formattazione condizionale (fx) accanto a Colore.
- Impostare Stile formato su Valore campo.
- In Quale campo è necessario basare questa opzione?, selezionare il campo che contiene i colori della categoria.
- Seleziona OK.
Ripetere questi passaggi per gli altri grafici. Il nome della scheda di formattazione varia in base all'oggetto visivo. Ad esempio, utilizzare Colonne per un istogramma e linee per un grafico a linee. È possibile usare un oggetto visivo come legenda centrale e disattivare le legende sugli altri oggetti visivi.
Quando un visualizzatore di report seleziona una categoria nella legenda centrale, lo stesso colore della categoria rimane coerente in tutti gli oggetti visivi.
Applicare una sfumatura alle categorie di legenda
Quando un grafico ha una legenda, è possibile applicare una sfumatura in base a un valore numerico. La legenda categorica regolare rimane visibile. Senza una legenda categorica, l'oggetto visivo può invece mostrare la scala della sfumatura di formattazione condizionale.
Per applicare una sfumatura:
- Selezionare il grafico e quindi formattare l'oggetto visivo.
- Espandere la scheda di formattazione per i colori dei dati dell'oggetto visivo, ad esempio Colonne, Barre o Sezioni.
- Selezionare il pulsante Formattazione condizionale (fx) accanto a Colore.
- Impostare Stile formato su Sfumatura.
- Selezionare il campo numerico o la misura per basare la formattazione.
- Configurare i colori minimo, massimo e facoltativo del centro e quindi selezionare OK.
Poiché la sfumatura è basata su valori invece di categorie specifiche, continua a essere applicata quando vengono visualizzate nuove categorie di legenda.
Applicare i colori usando i parametri di campo
I parametri di campo consentono ai visualizzatori di report di cambiare le misure o le dimensioni utilizzate da un oggetto visivo. Il parametro field nello script TMDL di esempio include una colonna colore che assegna un colore coerente a ogni selezione di parametri.
Per applicare la colonna colore:
- Selezionare il grafico e quindi formattare l'oggetto visivo.
- Espandere la scheda di formattazione per i colori dei dati del grafico.
- Selezionare il pulsante Formattazione condizionale (fx) accanto a Colore.
- Impostare Stile formato su Valore campo.
- In Quale campo è consigliabile basare questa opzione?, selezionare la colonna colore del parametro del campo.
- Seleziona OK.
Il colore visivo cambia con il parametro di campo selezionato. Applicare lo stesso campo colore ad altri oggetti visivi per mantenere un colore coerente per la misura selezionata nel report.
Considerazioni e limitazioni
- La formattazione sfumatura richiede un campo numerico o una misura.
- La formattazione basata su regole supporta valori numerici e di testo, ma le opzioni disponibili variano in base alla proprietà visiva e di formattazione.
- La formattazione dei valori di campo richiede un campo o una misura che restituisce valori di colore supportati, ad esempio nomi di colore, codici esadecimali o nomi di colori del tema del report.
- L'approccio al colore del parametro di campo funziona solo quando si seleziona un'opzione di parametro. Non assegna colori separati quando vengono visualizzate più opzioni di parametro in un grafico.
- La formattazione dei segmenti di linea si applica a una singola serie di linee. L'aggiunta di una legenda crea più serie e disabilita la formattazione dei segmenti.
- La formattazione condizionale richiede un'aggregazione o una misura per il campo che controlla la formattazione.