BarsList
BarsList
이름과 값이 있는 막대 목록을 표시하는 컴포넌트예요. 명시적인 축 없이 여러 항목의 값을 가로 막대로 비교할 때 유용해요.
출처: 문서
본문
Usage
BarsList 컴포넌트는 이름과 값이 있는 막대 목록을 표시해요. 필수 prop은 data뿐이에요. data는 name과 value 속성을 가진 객체 배열이에요.
import { BarsList } from '@mantine/charts';
import { data } from './data';
function Demo() {
return <BarsList data={data} />;
}
Data format
BarsList는 다음 형식의 데이터를 기대해요.
export const data = [
{ name: 'React', value: 950000 },
{ name: 'Vue', value: 320000 },
{ name: 'Angular', value: 580000 },
{ name: 'Svelte', value: 145000 },
];
Value formatter
valueFormatter prop으로 막대 옆에 표시되는 값을 형식화할 수 있어요. 함수는 숫자 값을 받고 문자열을 반환해야 해요.
import { BarsList } from '@mantine/charts';
import { data } from './data';
function Demo() {
return <BarsList data={data} valueFormatter={(value) => value.toLocaleString('en-US')} />;
}
Labels
barsLabel과 valueLabel prop으로 막대와 값 위에 열 헤더를 표시할 수 있어요.
Bar gap
barGap prop으로 막대 사이의 간격을 제어할 수 있어요.
Minimum bar size
minBarSize prop으로 막대의 최소 너비를 설정할 수 있어요.
Bar height
barHeight prop으로 막대의 높이를 제어할 수 있어요.
Bar color
barColor와 barTextColor prop으로 모든 막대의 기본 배경과 텍스트 색을 설정할 수 있어요.
Auto contrast
autoContrast prop을 설정하면 배경 색에 따라 텍스트 색을 자동으로 조정해요.
Custom colors
데이터 안의 color 속성을 설정해 각 막대가 고유한 색을 갖게 할 수 있어요.
Get bar props
getBarProps로 각 막대 요소에 추가 props를 전달할 수 있어요. 예를 들어 커스텀 스타일이나 이벤트 핸들러를 추가하는 데 사용할 수 있어요.
import { BarsList } from '@mantine/charts';
import { data } from './data';
function Demo() {
return (
<BarsList
data={data}
valueFormatter={(value) => value.toLocaleString('en-US')}
barTextColor="white"
getBarProps={(barData) => ({
style: {
backgroundColor: barData.value > 500000 ? '#10a37f' : undefined,
fontWeight: barData.value > 500000 ? 700 : undefined,
},
})}
/>
);
}
Custom bar rendering
renderBar로 각 막대가 렌더링되는 방식을 완전히 커스터마이즈할 수 있어요.
import { BarsList } from '@mantine/charts';
import { Tooltip } from '@mantine/core';
import { data } from './data';
function Demo() {
const maxValue = Math.max(...data.map((item) => item.value));
return (
<BarsList
data={data}
renderBar={(barData, defaultBar) => {
const percentage = ((barData.value / maxValue) * 100).toFixed(1);
return (
<Tooltip label={`${percentage}%`}>{defaultBar}</Tooltip>
);
}}
/>
);
}