Skip to content
daisyBlazor

BeeswarmChart

Every value as its own dot along one axis, nudged aside just enough not to overlap, one row per group. It keeps individual customers or runs visible while still showing the overall spread. The layout places the dots on a D3 scale, the same way every time.
Distribution
Cover · <BeeswarmChart>
Beeswarm plotStarter: 40 values from 2 to 13; Pro: 30 values from 15 to 40; Ent.: 14 values from 37 to 76020406080StarterProEnt.Starter: 2Starter: 3Starter: 4Starter: 4Starter: 5Starter: 5Starter: 5Starter: 5Starter: 5Starter: 6Starter: 6Starter: 6Starter: 6Starter: 7Starter: 7Starter: 7Starter: 7Starter: 7Starter: 7Starter: 8Starter: 8Starter: 8Starter: 8Starter: 8Starter: 9Starter: 9Starter: 9Starter: 9Starter: 10Starter: 10Starter: 10Starter: 10Starter: 10Starter: 11Starter: 11Starter: 12Starter: 12Starter: 12Starter: 13Starter: 13Pro: 15Pro: 15Pro: 16Pro: 17Pro: 20Pro: 22Pro: 23Pro: 24Pro: 25Pro: 25Pro: 25Pro: 28Pro: 30Pro: 30Pro: 31Pro: 32Pro: 32Pro: 32Pro: 33Pro: 33Pro: 34Pro: 35Pro: 35Pro: 35Pro: 35Pro: 36Pro: 36Pro: 38Pro: 39Pro: 40Ent.: 37Ent.: 39Ent.: 45Ent.: 50Ent.: 55Ent.: 56Ent.: 56Ent.: 59Ent.: 61Ent.: 61Ent.: 62Ent.: 74Ent.: 75Ent.: 76

Examples

Basic

Each ValueGroup becomes a row; hover a dot for its value.

Weekly active seats per customer, by plan
Weekly active seats per customer, by planStarter: 40 values from 1 seats to 15 seats; Pro: 45 values from 15 seats to 40 seats; Enterprise: 18 values from 43 seats to 89 seats0102030405060708090StarterProEnterpriseActive seatsStarter: 1 seatsStarter: 2 seatsStarter: 4 seatsStarter: 4 seatsStarter: 5 seatsStarter: 5 seatsStarter: 5 seatsStarter: 5 seatsStarter: 5 seatsStarter: 7 seatsStarter: 7 seatsStarter: 7 seatsStarter: 7 seatsStarter: 7 seatsStarter: 7 seatsStarter: 8 seatsStarter: 8 seatsStarter: 8 seatsStarter: 8 seatsStarter: 8 seatsStarter: 8 seatsStarter: 8 seatsStarter: 9 seatsStarter: 9 seatsStarter: 10 seatsStarter: 10 seatsStarter: 10 seatsStarter: 11 seatsStarter: 11 seatsStarter: 11 seatsStarter: 11 seatsStarter: 12 seatsStarter: 12 seatsStarter: 13 seatsStarter: 14 seatsStarter: 14 seatsStarter: 15 seatsStarter: 15 seatsStarter: 15 seatsStarter: 15 seatsPro: 15 seatsPro: 15 seatsPro: 16 seatsPro: 17 seatsPro: 20 seatsPro: 21 seatsPro: 22 seatsPro: 23 seatsPro: 23 seatsPro: 24 seatsPro: 24 seatsPro: 24 seatsPro: 24 seatsPro: 25 seatsPro: 25 seatsPro: 25 seatsPro: 25 seatsPro: 27 seatsPro: 28 seatsPro: 28 seatsPro: 28 seatsPro: 30 seatsPro: 30 seatsPro: 30 seatsPro: 30 seatsPro: 31 seatsPro: 32 seatsPro: 32 seatsPro: 32 seatsPro: 33 seatsPro: 33 seatsPro: 33 seatsPro: 33 seatsPro: 34 seatsPro: 35 seatsPro: 35 seatsPro: 35 seatsPro: 35 seatsPro: 36 seatsPro: 36 seatsPro: 36 seatsPro: 36 seatsPro: 38 seatsPro: 39 seatsPro: 40 seatsEnterprise: 43 seatsEnterprise: 46 seatsEnterprise: 52 seatsEnterprise: 58 seatsEnterprise: 65 seatsEnterprise: 65 seatsEnterprise: 66 seatsEnterprise: 67 seatsEnterprise: 69 seatsEnterprise: 71 seatsEnterprise: 71 seatsEnterprise: 72 seatsEnterprise: 77 seatsEnterprise: 79 seatsEnterprise: 85 seatsEnterprise: 86 seatsEnterprise: 88 seatsEnterprise: 89 seats
website/Examples/Charts/BeeswarmChartBasicExample.razor Source

One row

A single group with an empty name draws one unlabelled row. Radius sets the dot size; a crowded row squeezes its dots rather than spill over.

Beeswarm plot of Deployment duration (min): 150 values from 4.8 min to 25.8 min468101214161820222426Deployment duration (min)4.8 min5.7 min6.6 min6.8 min7.0 min7.2 min7.7 min7.7 min7.8 min7.8 min7.8 min7.8 min8.0 min8.2 min8.2 min8.2 min8.2 min8.2 min8.2 min8.3 min8.3 min8.3 min8.7 min8.8 min8.8 min8.9 min8.9 min8.9 min8.9 min9.0 min9.0 min9.1 min9.1 min9.1 min9.2 min9.2 min9.2 min9.4 min9.5 min9.6 min9.7 min9.7 min9.7 min9.8 min10.0 min10.2 min10.3 min10.4 min10.4 min10.4 min10.5 min10.8 min10.8 min10.9 min10.9 min10.9 min10.9 min11.0 min11.1 min11.2 min11.3 min11.3 min11.4 min11.5 min11.6 min11.7 min11.7 min11.7 min11.9 min11.9 min12.0 min12.1 min12.1 min12.2 min12.2 min12.4 min12.4 min12.4 min12.5 min12.6 min12.7 min12.7 min12.7 min12.8 min12.8 min12.8 min12.9 min12.9 min13.0 min13.2 min13.3 min13.5 min13.5 min13.5 min13.6 min13.6 min13.7 min13.7 min13.9 min14.0 min14.1 min14.1 min14.1 min14.2 min14.3 min14.4 min14.5 min14.6 min14.6 min14.8 min14.9 min14.9 min14.9 min15.0 min15.1 min15.2 min15.2 min15.3 min15.3 min15.4 min15.5 min15.6 min15.8 min16.1 min16.3 min16.4 min16.7 min16.8 min16.8 min17.0 min17.1 min17.3 min17.3 min17.4 min17.5 min17.6 min18.3 min18.4 min18.5 min18.7 min18.7 min18.8 min19.0 min19.0 min20.5 min21.0 min21.7 min22.9 min23.2 min25.8 min
website/Examples/Charts/BeeswarmChartSingleExample.razor Source

Playground

Weekly active seats per customer, by plan
Weekly active seats per customer, by planStarter: 40 values from 1 seats to 15 seats; Pro: 45 values from 15 seats to 40 seats; Enterprise: 18 values from 43 seats to 89 seats0102030405060708090StarterProEnterpriseActive seatsStarter: 1 seatsStarter: 2 seatsStarter: 4 seatsStarter: 4 seatsStarter: 5 seatsStarter: 5 seatsStarter: 5 seatsStarter: 5 seatsStarter: 5 seatsStarter: 7 seatsStarter: 7 seatsStarter: 7 seatsStarter: 7 seatsStarter: 7 seatsStarter: 7 seatsStarter: 8 seatsStarter: 8 seatsStarter: 8 seatsStarter: 8 seatsStarter: 8 seatsStarter: 8 seatsStarter: 8 seatsStarter: 9 seatsStarter: 9 seatsStarter: 10 seatsStarter: 10 seatsStarter: 10 seatsStarter: 11 seatsStarter: 11 seatsStarter: 11 seatsStarter: 11 seatsStarter: 12 seatsStarter: 12 seatsStarter: 13 seatsStarter: 14 seatsStarter: 14 seatsStarter: 15 seatsStarter: 15 seatsStarter: 15 seatsStarter: 15 seatsPro: 15 seatsPro: 15 seatsPro: 16 seatsPro: 17 seatsPro: 20 seatsPro: 21 seatsPro: 22 seatsPro: 23 seatsPro: 23 seatsPro: 24 seatsPro: 24 seatsPro: 24 seatsPro: 24 seatsPro: 25 seatsPro: 25 seatsPro: 25 seatsPro: 25 seatsPro: 27 seatsPro: 28 seatsPro: 28 seatsPro: 28 seatsPro: 30 seatsPro: 30 seatsPro: 30 seatsPro: 30 seatsPro: 31 seatsPro: 32 seatsPro: 32 seatsPro: 32 seatsPro: 33 seatsPro: 33 seatsPro: 33 seatsPro: 33 seatsPro: 34 seatsPro: 35 seatsPro: 35 seatsPro: 35 seatsPro: 35 seatsPro: 36 seatsPro: 36 seatsPro: 36 seatsPro: 36 seatsPro: 38 seatsPro: 39 seatsPro: 40 seatsEnterprise: 43 seatsEnterprise: 46 seatsEnterprise: 52 seatsEnterprise: 58 seatsEnterprise: 65 seatsEnterprise: 65 seatsEnterprise: 66 seatsEnterprise: 67 seatsEnterprise: 69 seatsEnterprise: 71 seatsEnterprise: 71 seatsEnterprise: 72 seatsEnterprise: 77 seatsEnterprise: 79 seatsEnterprise: 85 seatsEnterprise: 86 seatsEnterprise: 88 seatsEnterprise: 89 seats
<BeeswarmChart
               ValueTitle="Active seats"
               ValueFormat="{0:N0} seats"
               Title="Weekly active seats per customer, by plan"
               AspectRatio="1.5"
               Groups="@_plans" />

@code {
    // Every customer is one dot, so small groups and gaps stay visible.
    private readonly ValueGroup[] _plans =
    [
        new("Starter", DistributionSamples.Normal(seed: 71, count: 40, mean: 9, sd: 4, min: 1, decimals: 0)),
        new("Pro", DistributionSamples.Normal(seed: 72, count: 45, mean: 28, sd: 8, min: 5, decimals: 0)),
        new("Enterprise", DistributionSamples.Normal(seed: 73, count: 18, mean: 70, sd: 14, min: 30, decimals: 0)),
    ];
}

API

<BeeswarmChart>

DaisyBlazor.Charts

Parameters

  • AspectRatio double
    = 1.78

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

  • Groups IReadOnlyList<ValueGroup>
    = []

    The groups, one row each, with their raw values. Values that are not finite numbers are ignored; empty groups are not drawn.

  • Radius double
    = 4

    Dot radius in chart units. A row too crowded for its height lets dots overlap rather than spill into the next.

  • 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.

  • 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.

  • 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, e.g. "{0:N0} min".

  • ValueTitle string
    = null

    Title of the value axis, e.g. "Session length (min)".

  • 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.

ValueGroup

DaisyBlazor.Charts

A named set of raw values, summarised by BoxPlotChart, ViolinChart, BeeswarmChart and RidgelineChart. Values that are not finite numbers are ignored; a group with none left is not drawn.

Properties

  • Color string

    Optional CSS colour; falls back to the theme palette by position.

  • Name string

    Group label, shown on the axis and in tooltips.

  • Values IReadOnlyList<double>

    The raw observations.

Methods

  • <Clone>$ () → ValueGroup
  • Deconstruct (String& Name, IReadOnlyList`1& Values, String& Color) → void
  • Equals (object obj) → bool
  • Equals (ValueGroup other) → bool
  • GetHashCode () → int
  • ToString () → string
Something went wrong while running the docs. Reload