diff --git a/docs/data/charts/getting-started/getting-started.md b/docs/data/charts/getting-started/getting-started.md index 6c6057abfc00..83dbff7001c7 100644 --- a/docs/data/charts/getting-started/getting-started.md +++ b/docs/data/charts/getting-started/getting-started.md @@ -4,20 +4,20 @@ githubLabel: 'component: charts' packageName: '@mui/x-charts' --- -# Charts - Getting Started +# Charts - Getting started -

Get started with the MUI X Charts components. Install the package, configure your application, and start using the components.

+

Install the MUI X Charts package to start building React data visualization components.

## Installation -Using your favorite package manager, install `@mui/x-charts-pro` for the commercial version, or `@mui/x-charts` for the free community version. +Run one of the following commands to install the free Community version or the paid Pro version of the MUI X Charts: {{"component": "modules/components/ChartsInstallationInstructions.js"}} -The Charts package has a peer dependency on `@mui/material`. -If you are not already using it in your project, you can install it with: +The Charts packages have a peer dependency on `@mui/material`. +If you're not already using it, install it with the following command: @@ -37,7 +37,7 @@ yarn add @mui/material @emotion/react @emotion/styled -Please note that [react](https://www.npmjs.com/package/react) and [react-dom](https://www.npmjs.com/package/react-dom) are peer dependencies too: +[`react`](https://www.npmjs.com/package/react) and [`react-dom`](https://www.npmjs.com/package/react-dom) are also peer dependencies: ```json "peerDependencies": { @@ -46,85 +46,66 @@ Please note that [react](https://www.npmjs.com/package/react) and [react-dom](ht }, ``` -### Style engine - -Material UI is using [Emotion](https://emotion.sh/docs/introduction) as a styling engine by default. If you want to use [`styled-components`](https://styled-components.com/) instead, run: - - -```bash npm -npm install @mui/styled-engine-sc styled-components -``` - -```bash pnpm -pnpm add @mui/styled-engine-sc styled-components -``` - -```bash yarn -yarn add @mui/styled-engine-sc styled-components -``` - - - -Take a look at the [Styled engine guide](/material-ui/integrations/styled-components/) for more information about how to configure `styled-components` as the style engine. - ### Usage with D3 To help folks using CommonJS, the `@mui/x-charts` package uses a vendored package named `@mui/x-charts-vendor` to access D3 libraries. +You can import D3 functions from `@mui/x-charts-vendor/d3-color`. -If you need some D3 functions, you can import them with `@mui/x-charts-vendor/d3-color`. +## Rendering Charts -## Displaying charts +MUI X Charts can be rendered as _self-contained_ or _composable_ components. +[Self-contained components](#self-contained-charts) are simpler to get started with and are recommended for most common use cases; more complex visualization (such as combining Bar and Line Charts on a single plot) requires [custom composition](#composable-charts). -A Chart can be rendered in one of two ways: as a single component, or by composing subcomponents. +### Self-contained Charts -### Single charts +Self-contained Chart components are imported and rendered as a single React component (such as `` or ``) which contains all of the necessary subcomponents. -For common use cases, the single component is the recommended way. -Those components' names end with "Chart", as opposed to "Plot", and only require the series prop describing the data to render. +These components require a `series` prop describing the data to render, as well as a numerical value (rendered in pixels) for the `height` prop. +The `width` prop is optional; if no value is provided, the Charts expand to fill the available space. {{"demo": "SimpleCharts.js"}} -### Composed charts +### Composable Charts -To combine different Charts, like Lines with Bars, you can use composition with the `ChartContainer` wrapper. +More complex use cases require composition of the necessary subcomponents inside of a Chart Container wrapper. +Subcomponents include: -Inside this wrapper, render either axis components, such as `XAxis` and `YAxis`, or any plot component like `BarPlot`, `LinePlot`, `AreaPlot`, and `ScatterPlot`. +- Axis components – to define the X and Y axes +- Plot components – to create Bars, Lines, or any other Chart type +- Auxillary components - to add Tooltips, Highlights, and more +- Utilities - such as classes and types -Visit the [Composition page](/x/react-charts/composition/) for more details. +See the [Charts composition documentation](/x/react-charts/composition/) for complete details. -{{"demo": "Combining.js"}} +The demo below shows how to use composition to create a custom Chart that combines a Bar and a Line Chart on a single plot: -### Positions +{{"demo": "Combining.js"}} -Charts are composed of two main areas. -The SVG defined by its `width` and `height` delimits the available space. +## Chart layouts -Within this SVG, a dedicated "drawing area" (aka "plot area") serves as the canvas for data representation. -Here, elements like lines, bars, and areas visually depict the information. -It's controlled by the `margin = {top, bottom, left, right}` object defining the margin between the SVG and the drawing area. +The layout of a Chart is defined by two main spaces: the plot area, and the outer margins. -The space left by margins can display axes, titles, a legend, or any other additional information. +The `width` and `height` props define the dimensions of the SVG which is the root of the chart. +Within this SVG, the plot area (or drawing area) serves as the canvas for data visualization, where the lines, bars or other visual elements are rendered. +The size of the plot area is determined by the `margin = {top, bottom, left, right}` object which defines its outer margins inside the SVG. +The outer margin space is where information like axes, titles, and legends are displayed. -For more information about the position configuration, visit the [styling page](/x/react-charts/styling/#styling). +See the [Styling documentation](/x/react-charts/styling/#placement) for complete details. ## Axis management -MUI X Charts have a flexible approach to axis management, supporting multiple-axis charts with any combination of scales and ranges. - -Visit the [Axis page](/x/react-charts/axis/) for more details. - -## Styling +MUI X Charts take a flexible approach to axis management, with support for multiple axes and any combination of scales and ranges. -MUI X Charts follows the Material UI styling and features all of the customization tools you'd find there, making tweaking charts as straightforward as designing buttons. - -Visit the [Styling page](/x/react-charts/styling/) for more details. +See the [Axis documentation](/x/react-charts/axis/) for complete details. ## TypeScript -In order to benefit from the [CSS overrides](/material-ui/customization/theme-components/#theme-style-overrides) and [default prop customization](/material-ui/customization/theme-components/#theme-default-props) with the theme, TypeScript users need to import the following types. -Internally, it uses module augmentation to extend the default theme structure. +To benefit from [CSS overrides](/material-ui/customization/theme-components/#theme-style-overrides) and [default prop customization](/material-ui/customization/theme-components/#theme-default-props) with the theme, TypeScript users must import the following types. +These types use module augmentation to extend the default theme structure. ```tsx +// only one import is necessary, +// from the version you're currently using. import type {} from '@mui/x-charts/themeAugmentation'; import type {} from '@mui/x-charts-pro/themeAugmentation'; @@ -140,8 +121,3 @@ const theme = createTheme({ }, }); ``` - -:::info -You don't have to import the theme augmentation from both `@mui/x-charts` and `@mui/x-charts-pro` when using `@mui/x-charts-pro`. -Importing it from `@mui/x-charts-pro` is enough. -::: diff --git a/docs/data/charts/overview/overview.md b/docs/data/charts/overview/overview.md index ef86f4a0793f..92f1d289714d 100644 --- a/docs/data/charts/overview/overview.md +++ b/docs/data/charts/overview/overview.md @@ -7,34 +7,33 @@ packageName: '@mui/x-charts' # MUI X Charts -

A fast and extendable library of react chart components for data visualization.

+

A collection of React chart components for data visualization.

{{"component": "@mui/docs/ComponentLinkHeader", "design": false}} ## Overview -The `@mui/x-charts` is an MIT library for rendering charts relying on [D3.js](https://d3js.org/) for data manipulation and SVG for rendering. -And, like other MUI X components, charts are production-ready components that integrate smoothly into your app. +MUI X Charts is a library of production-ready components for rendering charts with React. +It uses [D3.js](https://d3js.org/) for data manipulation and SVGs for rendering. -With a high level of customization, MUI X Charts provides three levels of customization layers: **single components** with great defaults, extensive **configuration props**, and **subcomponents** for flexible composition. -Additionally, you can also use all the [MUI System](https://mui.com/system/getting-started/) tools, such as the theme override or the `sx` prop. +The components provide a high level of customization, with beautiful defaults as well as extensive configuration props and flexible composition options. +They also have access to all [MUI System](https://mui.com/system/getting-started/) tools such as theme overrides and the `sx` prop. {{"demo": "ChartsOverviewDemo.js", "defaultCodeOpen": true}} -## Using the documentation +## All MUI X Charts -The MUI X Charts documentation has a slightly different structure than other MUI X components. -Instead of having a long page for each, the pages are divided in two: +{{"component": "modules/components/ChartComponentsGrid.js"}} -1. General description of the built-in features the component provides. -2. A set of examples demonstrating the component with customizations. +## Using this documentation -## All MUI X Charts components +Each Chart type has two accompanying documents: -{{"component": "modules/components/ChartComponentsGrid.js"}} +1. **Overview** – a general description of built-in features +2. **Demo** – a collection of custom examples ## Supported features -The features that are shared across multiple Charts components, such as axes and legends, are also documented on separate pages. +Features shared across Chart components such as axes and legends are described in standalone documents: {{"component": "modules/components/ChartFeaturesGrid.js"}} diff --git a/docs/data/introduction/support/support.md b/docs/data/introduction/support/support.md index 3f65903d7dfb..ebba1a99214b 100644 --- a/docs/data/introduction/support/support.md +++ b/docs/data/introduction/support/support.md @@ -42,7 +42,7 @@ You can browse the documentation, find an example close to your use case, and th - [Data Grid](/x/react-data-grid/#mit-license-free-forever) - [Date Pickers](/x/react-date-pickers/getting-started/#render-your-first-component) -- [Charts](/x/react-charts/getting-started/#single-charts) +- [Charts](/x/react-charts/getting-started/#self-contained-charts) - [Tree View](/x/react-tree-view/#simple-tree-view) #### Use starter templates diff --git a/docs/src/modules/components/ChartFeaturesGrid.js b/docs/src/modules/components/ChartFeaturesGrid.js index 36af272ba23c..7da1be867826 100644 --- a/docs/src/modules/components/ChartFeaturesGrid.js +++ b/docs/src/modules/components/ChartFeaturesGrid.js @@ -1,12 +1,16 @@ import * as React from 'react'; import Grid from '@mui/material/Grid'; import { InfoCard } from '@mui/docs/InfoCard'; -import LineAxisRoundedIcon from '@mui/icons-material/LineAxisRounded'; +import ChatBubbleRoundedIcon from '@mui/icons-material/ChatBubble'; import DashboardCustomizeRoundedIcon from '@mui/icons-material/DashboardCustomizeRounded'; +import ExtensionRoundedIcon from '@mui/icons-material/Extension'; +import HighlightRoundedIcon from '@mui/icons-material/Highlight'; +import LabelImportantRoundedIcon from '@mui/icons-material/LabelImportant'; import LegendToggleRoundedIcon from '@mui/icons-material/LegendToggleRounded'; +import LineAxisRoundedIcon from '@mui/icons-material/LineAxisRounded'; import StackedBarChartRoundedIcon from '@mui/icons-material/StackedBarChartRounded'; import StyleRoundedIcon from '@mui/icons-material/StyleRounded'; -import TipsAndUpdatesRoundedIcon from '@mui/icons-material/TipsAndUpdatesRounded'; +import ZoomInRoundedIcon from '@mui/icons-material/ZoomIn'; const content = [ { @@ -19,6 +23,16 @@ const content = [ link: '/x/react-charts/components/', icon: , }, + { + title: 'Composition', + link: '/x/react-charts/composition/', + icon: , + }, + { + title: 'Label', + link: '/x/react-charts/label/', + icon: , + }, { title: 'Legend', link: '/x/react-charts/legend/', @@ -35,9 +49,19 @@ const content = [ icon: , }, { - title: 'Tooltips and highlights', + title: 'Tooltips', link: '/x/react-charts/tooltip/', - icon: , + icon: , + }, + { + title: 'Highlighting', + link: '/x/react-charts/highlighting/', + icon: , + }, + { + title: 'Zoom and pan', + link: '/x/react-charts/zoom-and-pan/', + icon: , }, ]; @@ -45,7 +69,7 @@ export default function ChartFeaturesGrid() { return ( {content.map(({ icon, title, link }) => ( - + ))}