圖表 - 長條圖
長條圖透過長條的長度來表達數量,並使用共同的基準線。
基礎知識
長條圖系列應包含一個 data
屬性,其中包含一個數值陣列。
您可以使用 xAxis
自訂長條刻度。此座標軸可能具有 scaleType='band'
,且其 data
應與您的系列長度相同。
使用資料集
如果您的資料儲存在物件陣列中,您可以使用 dataset
輔助屬性。它接受物件陣列,例如 dataset={[{x: 1, y: 32}, {x: 2, y: 41}, ...]}
。
當定義系列和座標軸時,您可以重複使用此資料,這要歸功於 dataKey
屬性。
例如 xAxis={[{ dataKey: 'x'}]}
或 series={[{ dataKey: 'y'}]}
。
長條大小
您可以使用 categoryGapRatio
和 barGapRatio
屬性定義長條尺寸。
categoryGapRatio
定義兩個類別之間的間隙。該比率是透過將間隙大小除以類別大小(長條使用的空間)來獲得的。
barGapRatio
定義同一類別的兩個長條之間的間隙。它是間隙大小除以長條大小。因此,值為 1
將導致長條之間的間隙等於長條寬度。值為 -1
將使長條彼此重疊。
import { BarChart } from '@mui/x-charts/BarChart';
<BarChart
// ...
xAxis={[
{
scaleType: 'band'
data: ['Page 1', 'Page 2', 'Page 3']
categoryGapRatio: 0.3
barGapRatio: 0.1
}
/>
遊樂場
堆疊
每個長條系列都可以取得預期字串值的 stack
屬性。具有相同 stack
的系列將彼此堆疊。
堆疊策略
您可以使用 stackOffset
和 stackOrder
屬性來定義系列的堆疊方式。
預設情況下,它們會按照您定義的順序堆疊,正值堆疊在 0 以上,負值堆疊在 0 以下。
如需更多資訊,請參閱堆疊文件。
版面配置
長條方向
透過提供 layout="horizontal"
屬性,可以水平版面配置呈現長條圖。如果您使用組合,則應將屬性 layout: 'horizontal'
設定為每個長條系列物件。
刻度位置
當使用 "band"
比例尺時,座標軸具有一些關於刻度位置的額外自訂屬性。
tickPlacement
用於刻度的位置tickLabelPlacement
用於與刻度相關聯的標籤位置
您可以在以下範例中測試所有配置選項
顏色比例尺
與其他圖表一樣,您可以直接修改系列顏色,或使用調色盤。
您也可以透過使用座標軸 colorMap
來修改顏色,它將數值對應到顏色。長條圖依優先順序使用
- 數值座標軸顏色
- 帶狀座標軸顏色
- 系列顏色
在樣式文件中深入瞭解 colorMap
屬性。
<ScatterChart
/* ... */
xAxis={[{
colorMap: {
type: 'piecewise',
thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)],
colors: ['blue', 'red', 'blue'],
}
}]}
yAxis={[{}]}
/>
邊框圓角
<BarChart
/* ... */
borderRadius={10}
/>
標籤
您可以在長條圖上顯示標籤。為此,BarChart
或 BarPlot
接受 barLabel
屬性。它可以取得一個函數,該函數取得長條項目和一些上下文。或者您可以傳遞 'value'
以顯示長條的原始值。
自訂標籤
您可以根據條件邏輯顯示、變更或隱藏標籤。為此,請為 barLabel
提供一個函數。如果函數傳回 null
,則不會顯示標籤。
在範例中,我們在高於 10 的值上顯示 'High'
文字,並在產生的長條高度低於 60 像素時隱藏值。
點擊事件
長條圖提供兩個點擊處理常式
onItemClick
用於點擊特定長條。onAxisClick
用於點擊圖表中的任何位置
它們都提供以下簽章。
const clickHandler = (
event, // The mouse event.
params, // An object that identifies the clicked elements.
) => {};
點擊圖表
// Data from item click
// The data will appear here
// Data from axis click
// The data will appear here
組合
如果您使用組合,您可以如下取得這些點擊事件。請注意,如果您混合使用長條圖和折線圖,onAxisClick
將同時處理這兩者。
import ChartsOnAxisClickHandler from '@mui/x-charts/ChartsOnAxisClickHandler';
// ...
<ChartContainer>
{/* ... */}
<ChartsOnAxisClickHandler onAxisClick={onAxisClick} />
<BarPlot onItemClick={onItemClick} />
</ChartContainer>;
動畫
若要在建立和更新圖表時略過動畫,您可以使用 skipAnimation
屬性。當設定為 true
時,它會略過由 @react-spring/web
驅動的動畫。
圖表容器已使用來自 @react-spring/web
的 useReducedMotion
來略過動畫,根據使用者偏好。
// For a single component chart
<BarChart skipAnimation />
// For a composed chart
<ResponsiveChartContainer>
<BarPlot skipAnimation />
</ResponsiveChartContainer>
項目數量
系列數量
API
請參閱以下文件,以取得此處提及的組件的所有可用屬性和類別的完整參考。