BarChart
Trace cada elemento de datos como una barra, adecuada para comparar valores categóricos. Se puede organizar horizontal o verticalmente, establecer rangos numéricos, etiquetas de categorías y etiquetas numéricas, y admite valores positivos y negativos.
Ejemplo
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 }}
/>
);
}
Uso
- Cada elemento data es una barra, en orden del array, sin x. horizontal conserva rangeY como rango numérico. El rango automático incluye cero, los negativos cruzan la base y background rellena las barras.
- rangeX/rangeY limita números, no etiquetas. Ocultar etiquetas no oculta ejes; usa stroke="clear" por separado. El motor evita solapamientos, por lo que activar etiquetas no garantiza mostrarlas todas.
- contentAnimation cambia texto, imágenes o datos estructurados. interpolate requiere puntos/closed de Polyline, secuencia Path o muestras compatibles. Los cambios de estructura se aplican inmediatamente.
Propiedades
dataReadonlyArray<BarChartDataPoint>Categorías en orden del arreglo. Cada elemento tiene un valor numérico y una etiqueta opcional.
[{value: 10, label: "A"}, {value: 20, label: "B"}, {value: 30, label: "C"}]axis?"horizontal" | "vertical"Dirección: vertical de izquierda a derecha; horizontal de arriba abajo.
"vertical"rangeY?ChartRangeRango visible [min, max]. Si se omite, se ajusta a los datos e incluye cero.
[0, 100]showLabels?booleanMostrar etiquetas de categorías. Las ausentes quedan vacías; el diseño nativo evita superposiciones.
trueshowValueLabels?booleanMostrar etiquetas numéricas del eje generadas automáticamente.
truebarThickness?number | "auto"Grosor de las barras en puntos o auto para adaptarse al espacio entre categorías.
"auto"xAxis?ChartAxisStyleLínea horizontal en la parte inferior del gráfico. Por defecto usa primer plano y ancho 1pt; stroke: clear la oculta.
{stroke: HDR($env.foreground), lineWidth: 1}yAxis?ChartAxisStyleLínea vertical a la izquierda del gráfico. Por defecto usa primer plano y ancho 1pt; stroke: clear la oculta.
{stroke: HDR($env.foreground), lineWidth: 1}background?PaintRelleno de cada barra. Por defecto usa el color de primer plano del tema.
HDR($env.dark ? "white" : "black")cornerRadius?numberRadio de las esquinas de cada barra, limitado a su tamaño.
0stroke?PaintColor o degradado del trazo; clear lo oculta.
"clear"lineWidth?numberGrosor del trazo en puntos; 0 no dibuja trazo.
2strokePosition?"inside" | "center" | "outside"Posición del trazo respecto a cada barra. Por defecto inside.
"inside"dash?number[]Longitudes alternas de trazo y hueco en puntos; matriz vacía para línea continua.
[]dashPhase?numberDesplazamiento del patrón de guiones en puntos.
0contentAnimation?ContentAnimationTransición opcional. interpolate requiere igual cantidad de categorías y dirección; en otro caso actualiza inmediatamente.
{type: "interpolate", duration: 0.25}Propiedades comunes
width?number | "auto" | "fill"Anchura en puntos, tamaño automático o relleno del contenedor.
"fill"height?number | "auto" | "fill"Altura en puntos, tamaño automático o relleno del contenedor.
"fill"x?numberDesplazamiento visual en puntos: x a la derecha, y hacia abajo, sin cambiar el espacio del diseño.
0y?numberDesplazamiento visual en puntos: x a la derecha, y hacia abajo, sin cambiar el espacio del diseño.
0transform?ViewTransformTransformación global sin alterar el diseño. Traslación en puntos, giro/inclinación en grados, escala 1 sin cambios, anclajes 0–1.
{rotation: 0}opacity?numberOpacidad de todo el View: 0 transparente, 1 opaco.
1clipped?booleanRecorta el dibujo que sobresale de los límites del View.
falseclip?"rectangle" | "ellipse"Recorte rectangle o ellipse; Material también admite false para desactivarlo.
"rectangle"mask?View | nullView de máscara alfa. Centrada sin afectar al diseño; null desactiva la máscara.
<Circle width="fill" height="fill" background="white"/>zIndex?numberOrden entre elementos hermanos; los valores mayores aparecen delante.
0blur?numberRadio de desenfoque en puntos; 0 lo desactiva.
4innerShadow?DrawingEffectColor, opacidad, radio de desenfoque y desplazamiento x/y del efecto; distancias en puntos.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectColor, opacidad, radio de desenfoque y desplazamiento x/y del efecto; distancias en puntos.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorColor de la sombra exterior.
HDR("black")shadowOpacity?numberOpacidad de la sombra de 0 a 1; 0 la oculta.
0shadowRadius?numberRadio de desenfoque de la sombra, en puntos.
4shadowX?numberDesplazamiento de sombra en puntos: x derecha, y abajo.
0shadowY?numberDesplazamiento de sombra en puntos: x derecha, y abajo.
2animations?BarChartAnimation[]Anima cambios de propiedad. duration/delay en segundos; from/to son extremos; repeat/autoreverse controlan repeticiones y wrap el período.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberIdentidad estable entre elementos hermanos.
Ejemplo práctico
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' }}
/>
);
}
Animación
widthheightxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYbarThicknessstrokelineWidthdashPhasetransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYrangeY.0rangeY.1xAxis.lineWidthxAxis.dashPhaseyAxis.lineWidthyAxis.dashPhasexAxis.strokeyAxis.strokeAl omitir
La tabla documenta omisiones comprobadas en la implementación. Los ejemplos no son valores predeterminados. Especifica valores para resultados fijos; tamaños y colores del contexto no son constantes.
| Propiedades | Al omitir |
|---|---|
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 } |