Radial Axes
Configure the grid, radius axis, rotation axis, and axis highlight for the radial charts.
---
.. llms_copy::Radial Axes
.. toc::
Overview
Both radial charts share the same polar axes, configured through the rotationAxis (angular), radiusAxis (radial), grid, and axisHighlight props. Each is a plain dict (or list of dicts), so you set them straight from Python.
.. admonition::Premium (preview) :color: yellow
The radial charts are MUI X Premium (preview). Set MUI_X_LICENSE_KEY to remove the watermark.
Grid and axis geometry
The rotation axis spans startAngle → endAngle; the radius axis spans minRadius → maxRadius. grid={"rotation": ..., "radius": ...} toggles the background spokes and rings. Try the controls:
.. exec::docs.radial_axes.axes :code: false
```python
File: docs/radial_axes/axes.py
import os
from dash import html, Input, Output, callback import dash_mantine_components as dmc import dash_mui_scheduler as dms
dataset = [ {"month": "Jan", "london": 49}, {"month": "Feb", "london": 38}, {"month": "Mar", "london": 40}, {"month": "Apr", "london": 44}, {"month": "May", "london": 49}, {"month": "Jun", "london": 45}, {"month": "Jul", "london": 45}, {"month": "Aug", "london": 50}, {"month": "Sep", "london": 49}, {"month": "Oct", "london": 69}, {"month": "Nov", "london": 59}, {"month": "Dec", "london": 56}, ]
The rotation axis spans startAngle -> endAngle; the radius axis spans
minRadius -> maxRadius. grid toggles the background rings/spokes.
component = html.Div( [ dmc.Group( [ dmc.NumberInput(id="ax-start", label="startAngle", value=-90, min=-360, max=360, w=110), dmc.NumberInput(id="ax-end", label="endAngle", value=180, min=-360, max=360, w=110), dmc.NumberInput(id="ax-minr", label="minRadius", value=30, min=0, max=200, w=110), dmc.NumberInput(id="ax-maxr", label="maxRadius", value=130, min=0, max=200, w=110), dmc.Switch(id="ax-grot", label="rotation grid", checked=True, mt="lg"), dmc.Switch(id="ax-grad", label="radius grid", checked=True, mt="lg"), ], mb="md", align="flex-end", ), dms.RadialLineChart( id="radial-axes-chart", height=420, licenseKey=os.environ.get("MUI_X_LICENSE_KEY", ""), dataset=dataset, series=[{"dataKey": "london", "label": "London precipitation (mm)", "curve": "natural", "showMark": True}], rotationAxis=[{"scaleType": "point", "dataKey": "month", "startAngle": -90, "endAngle": 180}], radiusAxis=[{"minRadius": 30, "maxRadius": 130}], grid={"rotation": True, "radius": True}, ), ] )
@callback( Output("radial-axes-chart", "rotationAxis"), Output("radial-axes-chart", "radiusAxis"), Output("radial-axes-chart", "grid"), Input("ax-start", "value"), Input("ax-end", "value"), Input("ax-minr", "value"), Input("ax-maxr", "value"), Input("ax-grot", "checked"), Input("ax-grad", "checked"), ) def update_axes(start, end, min_r, max_r, g_rot, g_rad): return ( [{"scaleType": "point", "dataKey": "month", "startAngle": start, "endAngle": end}], [{"minRadius": min_r, "maxRadius": max_r}], {"rotation": g_rot, "radius": g_rad}, ) ```
Common axis options include scaleType ("point", "band", "linear"), disableLine, disableTicks, tickNumber, position, and valueFormatter (the last is a function and so is not settable from Python — use the chart's defaults or a dataKey instead).
Axis highlight
axisHighlight highlights data based on the pointer position. Each of rotation and radius can be "none", "line", or "band":
.. exec::docs.radial_axes.highlight :code: false
```python
File: docs/radial_axes/highlight.py
import os
from dash import html, Input, Output, callback import dash_mantine_components as dmc import dash_mui_scheduler as dms
_rows = [ ("Jan", 49, 51, 78), ("Feb", 38, 41, 72), ("Mar", 40, 48, 95), ("Apr", 44, 47, 90), ("May", 49, 63, 92), ("Jun", 45, 56, 87), ("Jul", 45, 62, 100), ("Aug", 50, 54, 96), ("Sep", 49, 48, 90), ("Oct", 69, 60, 90), ("Nov", 59, 53, 85), ("Dec", 56, 56, 90), ] DATASET_STR = [{"month": m, "london": lo, "paris": pa, "newYork": ny} for (m, lo, pa, ny) in _rows]
A linear scale needs a numeric axis key, so swap the month label for its index.
DATASET_NUM = [{**d, "month": i + 1} for i, d in enumerate(DATASET_STR)]
SERIES = [ {"dataKey": "london", "curve": "linear", "label": "London", "showMark": True}, {"dataKey": "paris", "curve": "linear", "label": "Paris", "showMark": True}, {"dataKey": "newYork", "curve": "linear", "label": "New York", "showMark": True}, ]
axisHighlight highlights data based on the pointer: each of rotation and
radius can be "none", "line", or "band".
component = html.Div( [ dmc.Group( [ dmc.Stack([dmc.Text("scale type", size="sm", fw=600), dmc.SegmentedControl(id="rax-scale", value="point", data=["band", "point", "linear"])], gap=2), dmc.Stack([dmc.Text("rotation highlight", size="sm", fw=600), dmc.SegmentedControl(id="rax-rot", value="band", data=["none", "line", "band"])], gap=2), dmc.Stack([dmc.Text("radius highlight", size="sm", fw=600), dmc.SegmentedControl(id="rax-rad", value="none", data=["none", "line"])], gap=2), ], mb="md", ), dms.RadialLineChart( id="radial-axes-highlight", height=400, licenseKey=os.environ.get("MUI_X_LICENSE_KEY", ""), dataset=DATASET_STR, series=SERIES, rotationAxis=[{"dataKey": "month", "scaleType": "point"}], radiusAxis=[{"minRadius": 10, "min": 0}], grid={"rotation": True, "radius": True}, axisHighlight={"rotation": "band", "radius": "none"}, ), ] )
@callback( Output("radial-axes-highlight", "dataset"), Output("radial-axes-highlight", "rotationAxis"), Output("radial-axes-highlight", "axisHighlight"), Input("rax-scale", "value"), Input("rax-rot", "value"), Input("rax-rad", "value"), ) def update_highlight(scale, rotation, radius): dataset = DATASET_NUM if scale == "linear" else DATASET_STR return dataset, [{"dataKey": "month", "scaleType": scale}], {"rotation": rotation, "radius": radius} ```
---
*Source: /radial-axes*
Note for AI agents: This is the static, prerendered view of an interactive Dash application served because we detected a non-JS user agent. Full prose docs:
- /radial-axes/llms.txt — LLM-friendly documentation
- /sitemap.xml
- /robots.txt