Skip to content
daisyBlazor

RadarChart

Several series over the same named axes, each a closed shape around the centre: plans scored on seats, storage and support, teams on a health check. D3 sizes the radius so every axis name fits and places the rings on round values; the chart draws them in theme colours.
Compare
Cover · <RadarChart>
Radar chartTeam: Seats 55, Storage 60, API 65, Support 50, Uptime 70; Scale: Seats 90, Storage 85, API 95, Support 90, Uptime 80TeamScale20406080100SeatsStorageAPISupportUptime

Examples

Basic

Labels names the axes clockwise from the top; value i of each ChartSeries lines up with axis i, and each series gets the next palette colour.

Plans compared (score out of 100)
Plans compared (score out of 100)Starter: Seats 20, Storage 25, API calls 30, Support 20, Integrations 35; Team: Seats 55, Storage 60, API calls 65, Support 50, Integrations 70; Scale: Seats 90, Storage 85, API calls 95, Support 90, Integrations 80StarterStarter, Seats: 20Starter, Storage: 25Starter, API calls: 30Starter, Support: 20Starter, Integrations: 35TeamTeam, Seats: 55Team, Storage: 60Team, API calls: 65Team, Support: 50Team, Integrations: 70ScaleScale, Seats: 90Scale, Storage: 85Scale, API calls: 95Scale, Support: 90Scale, Integrations: 8020406080100SeatsStorageAPI callsSupportIntegrations
Starter Team Scale
website/Examples/Charts/RadarChartBasicExample.razor Source

Grid="RadarGrid.Circle" draws round rings, Filled="false" keeps only the outlines, and Max fixes the outer ring instead of rounding up the largest value.

Team health check (out of 5)
Team health check (out of 5)Platform: Delivery pace 4.2 / 5, Code quality 4.5 / 5, On-call load 2.8 / 5, Docs 3.9 / 5, Onboarding 3.5 / 5, Focus time 3.1 / 5; Billing: Delivery pace 3.6 / 5, Code quality 3.9 / 5, On-call load 4.1 / 5, Docs 2.7 / 5, Onboarding 4.0 / 5, Focus time 3.8 / 5PlatformPlatform, Delivery pace: 4.2 / 5Platform, Code quality: 4.5 / 5Platform, On-call load: 2.8 / 5Platform, Docs: 3.9 / 5Platform, Onboarding: 3.5 / 5Platform, Focus time: 3.1 / 5BillingBilling, Delivery pace: 3.6 / 5Billing, Code quality: 3.9 / 5Billing, On-call load: 4.1 / 5Billing, Docs: 2.7 / 5Billing, Onboarding: 4.0 / 5Billing, Focus time: 3.8 / 512345Delivery paceCode qualityOn-call loadDocsOnboardingFocus time
Platform Billing
website/Examples/Charts/RadarChartGridExample.razor Source

Stacked

Stacked puts each series on the running total of the ones before it, on every spoke, so each fills its own band; tooltips keep each series' own value.

Compute hours by service and region
Compute hours by service and regionAPI: Europe 420 h, Americas 380 h, Asia 210 h, Africa 60 h, Oceania 90 h; Workers: Europe 260 h, Americas 300 h, Asia 150 h, Africa 40 h, Oceania 70 h; Search: Europe 120 h, Americas 140 h, Asia 90 h, Africa 20 h, Oceania 30 hAPI API, Europe: 420 hAPI, Americas: 380 hAPI, Asia: 210 hAPI, Africa: 60 hAPI, Oceania: 90 hWorkers Workers, Europe: 260 hWorkers, Americas: 300 hWorkers, Asia: 150 hWorkers, Africa: 40 hWorkers, Oceania: 70 hSearch Search, Europe: 120 hSearch, Americas: 140 hSearch, Asia: 90 hSearch, Africa: 20 hSearch, Oceania: 30 h2004006008001,000EuropeAmericasAsiaAfricaOceania
API Workers Search
website/Examples/Charts/RadarChartStackedExample.razor Source

100% stacked

Percent stacks every spoke to 100%, so the bands show each series' share; the rings read in percent and tooltips show the value and the share.

Share of requests by client
Share of requests by clientWeb app: Europe 52, Americas 48, Asia 35, Africa 40, Oceania 50; Mobile: Europe 30, Americas 34, Asia 50, Africa 45, Oceania 32; CLI: Europe 18, Americas 18, Asia 15, Africa 15, Oceania 18Web app Mobile CLI 20%40%60%80%100%EuropeAmericasAsiaAfricaOceania
Web app Mobile CLI
website/Examples/Charts/RadarChartPercentExample.razor Source

Playground

Plans compared (score out of 100)
Plans compared (score out of 100)Starter: Seats 20, Storage 25, API calls 30, Support 20, Integrations 35; Team: Seats 55, Storage 60, API calls 65, Support 50, Integrations 70; Scale: Seats 90, Storage 85, API calls 95, Support 90, Integrations 80StarterStarter, Seats: 20Starter, Storage: 25Starter, API calls: 30Starter, Support: 20Starter, Integrations: 35TeamTeam, Seats: 55Team, Storage: 60Team, API calls: 65Team, Support: 50Team, Integrations: 70ScaleScale, Seats: 90Scale, Storage: 85Scale, API calls: 95Scale, Support: 90Scale, Integrations: 8020406080100SeatsStorageAPI callsSupportIntegrations
Starter Team Scale
Grid RadarGrid
<RadarChart
            Title="Plans compared (score out of 100)"
            Labels="@_axes"
            Series="@_plans" />

@code {
    private readonly string[] _axes = ["Seats", "Storage", "API calls", "Support", "Integrations"];

    // Value i of each series lines up with axis i; each series gets the next palette colour.
    private readonly ChartSeries[] _plans =
    [
        new("Starter", [20, 25, 30, 20, 35]),
        new("Team", [55, 60, 65, 50, 70]),
        new("Scale", [90, 85, 95, 90, 80]),
    ];
}

API

<RadarChart>

DaisyBlazor.Charts

Parameters

  • AspectRatio double
    = 1.33

    Width divided by height. The chart keeps this shape at any width; its text keeps its size.

  • Filled bool
    = true

    Fill each series' shape with a light tint of its colour; when false only the outlines are drawn.

  • Grid RadarGrid
    = RadarGrid.Polygon

    Shape of the grid rings: straight-sided or round.

  • Labels IReadOnlyList<string>
    = []

    The axis names, clockwise from the top. At least three are needed.

  • Levels int
    = 4

    About how many grid rings to draw; the exact count follows nice tick values.

  • Max double?
    = null

    Value at the outer ring. When null it is the largest value, rounded up to a nice number; larger values are drawn at the edge.

  • Percent bool
    = false

    100% stacked (implies Stacked): every spoke's total reaches the outer ring, so the bands show each series' share; the rings read in percent and Max is ignored. Tooltips show the value and the share.

  • RowHeight double?
    = null

    Height of each row in px, for a chart that lays its categories out as rows (horizontal bars, a Gantt's lanes, a heatmap's rows…): its height then follows its number of rows instead of AspectRatio, so a long list keeps readable rows at any width. A chart, or an orientation, without rows ignores it.

  • Series IReadOnlyList<ChartSeries>
    = []

    The series; value i of each lines up with axis i. Missing, NaN or negative values sit at the centre.

  • ShowLegend bool
    = true

    Show a legend when there is more than one series.

  • ShowPoints bool
    = true

    Draw a dot at each value.

  • ShowTitle bool
    = true

    Draw Title as a visible heading above the chart (the default); false keeps it only as the chart's accessible name, for a chart inside a card that already has a heading.

  • Stacked bool
    = false

    Stack the series radially: on every spoke each series starts where the ones before it end, and fills its own band. Missing or negative values count as 0; tooltips still show each series' own value.

  • Title string
    = null

    Optional heading rendered above the chart; it is also the chart's accessible name.

  • ValueFormat string
    = "{0:#,0.##}"

    Format string for values in tooltips and the description, e.g. "{0:N0} GB".

  • Width string
    = "100%"

    CSS width of the chart wrapper.

  • Class string
    = null

    Additional CSS classes merged onto the w-full wrapper.

  • Style string
    = null

    Inline styles appended after the width on the wrapper.

Something went wrong while running the docs. Reload