Eu criei um gráfico usando mui barchart,
import { BarChart } from '@mui/x-charts/BarChart';
import { ThemeProvider, createTheme, useTheme } from '@mui/material/styles';
e quero dar cantos arredondados às barras. Eu tentei borderRadius para propriedade sx e propriedade de série. mas não funcionou. a propriedade sx cria uma borda ao redor do gráfico e não para todas as barras. Eu tenho o seguinte código até agora:
<ThemeProvider theme={darkTheme} >
<BarChart
sx={[{p: 5, border: 1, borderRadius: 3}]}
yAxis={[
{
id: 'barCategories',
data: ['A', 'B', 'C', 'D', 'E'],
scaleType: 'band',
},
]}
series={[
{
data: [50, 20, 85, 60, 20],
color: '#fff',
},
]}
layout="horizontal"
/>
</ThemeProvider>
Como posso fazer com que as barras tenham cantos arredondados assim:
Como o elemento bar subjacente do gráfico de barras MUI é um elemento reto SVG , você não poderá aplicar CSS
border-radius
. Mas você pode fornecer seu próprioBar
componente personalizado que, em vez de renderizar umrect
elemento, renderiza umpath
elemento que aparece como um retângulo com cantos arredondados 1 e passa esse componente por meio doslots
suporte.Por exemplo:
O que produz:
(Eu gostaria de memorizar isso para um melhor desempenho - esta demonstração é apenas para você começar.)
CodeSanbox funcionando: https://codesandbox.io/s/mui-bar-chart-with-rounded-corders-right-zms2m5?file=/Demo.js
1 Você também pode criar um componente que ainda use a
rect
e forneça aclipPath
para os cantos arredondados, mas na IMO esta é a opção mais simples.Referências:
BarPlotSlotComponentProps