跳到內容
+

圖表 - 長條圖

長條圖透過長條的長度來表達數量,並使用共同的基準線。

基礎知識

長條圖系列應包含一個 data 屬性,其中包含一個數值陣列。

您可以使用 xAxis 自訂長條刻度。此座標軸可能具有 scaleType='band',且其 data 應與您的系列長度相同。

- MUI 元件庫group Agroup Bgroup C0246
按下 Enter 開始編輯

使用資料集

如果您的資料儲存在物件陣列中,您可以使用 dataset 輔助屬性。它接受物件陣列,例如 dataset={[{x: 1, y: 32}, {x: 2, y: 41}, ...]}

當定義系列和座標軸時,您可以重複使用此資料,這要歸功於 dataKey 屬性。

例如 xAxis={[{ dataKey: 'x'}]}series={[{ dataKey: 'y'}]}

- MUI 元件庫JanFebMarAprMayJuneJulyAugSeptOctNovDec0100200300400rainfall (mm)
按下 Enter 開始編輯

長條大小

您可以使用 categoryGapRatiobarGapRatio 屬性定義長條尺寸。

categoryGapRatio 定義兩個類別之間的間隙。該比率是透過將間隙大小除以類別大小(長條使用的空間)來獲得的。

barGapRatio 定義同一類別的兩個長條之間的間隙。它是間隙大小除以長條大小。因此,值為 1 將導致長條之間的間隙等於長條寬度。值為 -1 將使長條彼此重疊。

- MUI 元件庫2020202120222023$ 0B$ 10B$ 20B$ 30B$ 40B$ 50B
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 的系列將彼此堆疊。

- MUI 元件庫2020202120222023010,000,00020,000,00030,000,00040,000,00050,000,000
按下 Enter 開始編輯

堆疊策略

您可以使用 stackOffsetstackOrder 屬性來定義系列的堆疊方式。

預設情況下,它們會按照您定義的順序堆疊,正值堆疊在 0 以上,負值堆疊在 0 以下。

如需更多資訊,請參閱堆疊文件

版面配置

長條方向

透過提供 layout="horizontal" 屬性,可以水平版面配置呈現長條圖。如果您使用組合,則應將屬性 layout: 'horizontal' 設定為每個長條系列物件。

- MUI 元件庫050100150200250300350rainfall (mm)JanFebMarAprMayJuneJulyAugSeptOctNovDec
按下 Enter 開始編輯

刻度位置

當使用 "band" 比例尺時,座標軸具有一些關於刻度位置的額外自訂屬性。

  • tickPlacement 用於刻度的位置
  • tickLabelPlacement 用於與刻度相關聯的標籤位置

您可以在以下範例中測試所有配置選項

按下 Enter 開始編輯

網格線

您可以使用 grid 屬性在圖表的背景中新增網格線。

請參閱座標軸—網格線文件以取得更多資訊。

- MUI 元件庫050100150200250300350rainfall (mm)JanFebMarAprMayJuneJulyAugSeptOctNovDec
按下 Enter 開始編輯

顏色比例尺

與其他圖表一樣,您可以直接修改系列顏色,或使用調色盤。

您也可以透過使用座標軸 colorMap 來修改顏色,它將數值對應到顏色。長條圖依優先順序使用

  1. 數值座標軸顏色
  2. 帶狀座標軸顏色
  3. 系列顏色

樣式文件中深入瞭解 colorMap 屬性。

<ScatterChart
  /* ... */
  xAxis={[{
    colorMap: {
      type: 'piecewise',
      thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)],
      colors: ['blue', 'red', 'blue'],
    }
  }]}
  yAxis={[{}]}
/>

邊框圓角

若要為您的長條圖提供圓角,您可以變更 BarChart 上的 borderRadius 屬性的值。

它適用於任何正值,並正確應用於水平版面配置、堆疊和負值。

邊框圓角

<BarChart
  /* ... */
  borderRadius={10}
/>

標籤

您可以在長條圖上顯示標籤。為此,BarChartBarPlot 接受 barLabel 屬性。它可以取得一個函數,該函數取得長條項目和一些上下文。或者您可以傳遞 'value' 以顯示長條的原始值。

- MUI 元件庫435163256group Agroup Bgroup C0246
按下 Enter 開始編輯

自訂標籤

您可以根據條件邏輯顯示、變更或隱藏標籤。為此,請為 barLabel 提供一個函數。如果函數傳回 null,則不會顯示標籤。

在範例中,我們在高於 10 的值上顯示 'High' 文字,並在產生的長條高度低於 60 像素時隱藏值。

- MUI 元件庫4548High65890123402468101214
按下 Enter 開始編輯

點擊事件

長條圖提供兩個點擊處理常式

  • 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/webuseReducedMotion 來略過動畫,根據使用者偏好

// For a single component chart
<BarChart skipAnimation />

// For a composed chart
<ResponsiveChartContainer>
  <BarPlot skipAnimation />
</ResponsiveChartContainer>

項目數量

系列數量

API

請參閱以下文件,以取得此處提及的組件的所有可用屬性和類別的完整參考。