BarChart
Traccia ciascun elemento dati come una barra, adatta per confrontare valori categoriali. Può essere disposto orizzontalmente o verticalmente, impostare intervalli numerici, etichette di categoria ed etichette numeriche e supporta valori positivi e negativi.
Esempio
function main() {
return (
<BarChart
data={[
{ value: 30, label: 'A' },
{ value: 70, label: 'B' },
]}
axis="vertical"
rangeY={[0, 100]}
showLabels={true}
showValueLabels={true}
background={$env.accent}
cornerRadius={6}
yAxis={{ stroke: $env.foreground, lineWidth: 1 }}
/>
);
}
Utilizzo
- Ogni elemento data è una barra nell’ordine delle categorie, senza x. horizontal conserva rangeY per i valori. Il range automatico include zero, i negativi attraversano la base e background riempie le barre.
- rangeX/rangeY limita numeri, non etichette. Nascondere etichette non elimina assi: usa stroke="clear" separatamente. Il motore evita sovrapposizioni e non garantisce ogni etichetta.
- contentAnimation riguarda testo, immagini o dati strutturati. interpolate richiede punti/closed Polyline, sequenza Path o campioni compatibili. Cambi strutturali aggiornano subito.
Proprietà
dataReadonlyArray<BarChartDataPoint>Categorie nell’ordine dell’array. Ogni elemento ha un valore numerico e un’etichetta facoltativa.
[{value: 10, label: "A"}, {value: 20, label: "B"}, {value: 30, label: "C"}]axis?"horizontal" | "vertical"Direzione: vertical da sinistra a destra; horizontal dall’alto in basso.
"vertical"rangeY?ChartRangeIntervallo visibile [min, max]. Se omesso, si adatta ai dati includendo zero.
[0, 100]showLabels?booleanMostra le etichette delle categorie. Quelle mancanti restano vuote; il layout nativo evita sovrapposizioni.
trueshowValueLabels?booleanMostra le etichette numeriche dell’asse generate automaticamente.
truebarThickness?number | "auto"Spessore delle barre in punti, oppure auto in base alla distanza fra categorie.
"auto"xAxis?ChartAxisStyleAsse orizzontale in basso nel grafico. Predefinito: primo piano, larghezza 1pt; stroke: clear lo nasconde.
{stroke: HDR($env.foreground), lineWidth: 1}yAxis?ChartAxisStyleAsse verticale a sinistra del grafico. Predefinito: primo piano, larghezza 1pt; stroke: clear lo nasconde.
{stroke: HDR($env.foreground), lineWidth: 1}background?PaintRiempimento di ogni barra. Per impostazione predefinita usa il primo piano del tema.
HDR($env.dark ? "white" : "black")cornerRadius?numberRaggio degli angoli di ogni barra, limitato alla sua dimensione.
0stroke?PaintColore o gradiente del tratto; clear lo nasconde.
"clear"lineWidth?numberSpessore del tratto in punti; 0 non disegna il tratto.
2strokePosition?"inside" | "center" | "outside"Posizione del tratto rispetto a ogni barra. Predefinito inside.
"inside"dash?number[]Lunghezze alternate di tratto e spazio in punti; array vuoto per linea continua.
[]dashPhase?numberSpostamento del motivo tratteggiato in punti.
0contentAnimation?ContentAnimationTransizione facoltativa. interpolate richiede lo stesso numero di categorie e direzione; altrimenti aggiorna subito.
{type: "interpolate", duration: 0.25}Proprietà comuni
width?number | "auto" | "fill"Larghezza in punti, dimensione automatica o riempimento del contenitore.
"fill"height?number | "auto" | "fill"Altezza in punti, dimensione automatica o riempimento del contenitore.
"fill"x?numberSpostamento visivo in punti: x a destra, y in basso; non cambia lo spazio nel layout.
0y?numberSpostamento visivo in punti: x a destra, y in basso; non cambia lo spazio nel layout.
0transform?ViewTransformTrasformazione globale senza cambiare il layout. Traslazione in punti, rotazione/inclinazione in gradi, scala 1 invariata, ancoraggi 0–1.
{rotation: 0}opacity?numberOpacità dell’intero View: 0 trasparente, 1 opaco.
1clipped?booleanRitaglia il disegno oltre i limiti del View.
falseclip?"rectangle" | "ellipse"Forma di ritaglio rectangle o ellipse; Material accetta anche false per disattivarlo.
"rectangle"mask?View | nullView per la maschera alfa. Centrata senza modificare il layout; null disattiva la maschera.
<Circle width="fill" height="fill" background="white"/>zIndex?numberOrdine tra elementi fratelli; valori più grandi appaiono davanti.
0blur?numberRaggio della sfocatura in punti; 0 la disattiva.
4innerShadow?DrawingEffectColore, opacità, raggio di sfocatura e offset x/y dell’effetto; distanze in punti.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectColore, opacità, raggio di sfocatura e offset x/y dell’effetto; distanze in punti.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorColore dell’ombra esterna.
HDR("black")shadowOpacity?numberOpacità dell’ombra 0–1; 0 la nasconde.
0shadowRadius?numberRaggio di sfocatura dell’ombra esterna in punti.
4shadowX?numberOffset dell’ombra in punti: x a destra, y in basso.
0shadowY?numberOffset dell’ombra in punti: x a destra, y in basso.
2animations?BarChartAnimation[]Anima le modifiche alle proprietà. duration/delay in secondi; from/to sono estremi; repeat/autoreverse controllano le ripetizioni, wrap il periodo.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberIdentità stabile tra elementi fratelli.
Esempio pratico
function main() {
return (
<BarChart
width={260}
height={160}
axis="horizontal"
rangeY={[-50, 100]}
data={[
{ value: 80, label: 'A' },
{ value: -25, label: 'B' },
{ value: 45, label: 'C' },
]}
showLabels={true}
showValueLabels={true}
background={$env.accent}
cornerRadius={4}
xAxis={{ stroke: $env.foreground, dash: [4, 3] }}
yAxis={{ stroke: 'clear' }}
/>
);
}
Animazione
widthheightxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYbarThicknessstrokelineWidthdashPhasetransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYrangeY.0rangeY.1xAxis.lineWidthxAxis.dashPhaseyAxis.lineWidthyAxis.dashPhasexAxis.strokeyAxis.strokeQuando omesso
La tabella documenta omissioni verificate nell’implementazione. Gli esempi non sono valori predefiniti. Specifica valori per risultati fissi; misure e colori contestuali non sono costanti.
| Proprietà | Quando omesso |
|---|---|
data | [] |
axis | "vertical" |
showLabels | true |
showValueLabels | true |
cornerRadius | 0 |
strokePosition | "inside" |
background | HDR($env.dark ? 'white' : 'black') |
xAxis | { stroke: HDR($env.foreground), lineWidth: 1 } |
yAxis | { stroke: HDR($env.foreground), lineWidth: 1 } |