Skip to content
daisyBlazor

BumpChart

The rank of each series in each period, joined by smooth lines, so overtakes stand out: plans ranked by sign-ups, features ranked by use. D3 ranks the values and draws the curves; each series is named at both ends.
Over time
Cover · <BumpChart>
Bump chartFree: Q1 #1, Q2 #2, Q3 #3, Q4 #3; Pro: Q1 #4, Q2 #1, Q3 #1, Q4 #1; Team: Q1 #3, Q2 #4, Q3 #2, Q4 #2; Starter: Q1 #2, Q2 #3, Q3 #4, Q4 #4Q1Q2Q3Q4FreeFree, Q1: #1 (90)Free, Q2: #2 (80)Free, Q3: #3 (70)Free, Q4: #3 (60)FreeFreeProPro, Q1: #4 (60)Pro, Q2: #1 (85)Pro, Q3: #1 (95)Pro, Q4: #1 (99)ProProTeamTeam, Q1: #3 (70)Team, Q2: #4 (60)Team, Q3: #2 (80)Team, Q4: #2 (90)TeamTeamStarterStarter, Q1: #2 (80)Starter, Q2: #3 (70)Starter, Q3: #4 (50)Starter, Q4: #4 (40)StarterStarter

Examples

Basic

Each ChartSeries holds one value per period in Labels; the highest value in a period ranks first, and tooltips show the rank and the value.

Plans ranked by new sign-ups
Plans ranked by new sign-upsFree: Apr #1, May #1, Jun #2, Jul #3, Aug #4, Sep #4; Starter: Apr #2, May #2, Jun #1, Jul #2, Aug #2, Sep #3; Pro: Apr #3, May #3, Jun #3, Jul #1, Aug #1, Sep #1; Team: Apr #4, May #4, Jun #4, Jul #4, Aug #3, Sep #2; Enterprise: Apr #5, May #5, Jun #5, Jul #5, Aug #5, Sep #5AprMayJunJulAugSepFreeFree, Apr: #1 (820 sign-ups)Free, May: #1 (760 sign-ups)Free, Jun: #2 (700 sign-ups)Free, Jul: #3 (640 sign-ups)Free, Aug: #4 (610 sign-ups)Free, Sep: #4 (590 sign-ups)FreeFreeStarterStarter, Apr: #2 (540 sign-ups)Starter, May: #2 (610 sign-ups)Starter, Jun: #1 (720 sign-ups)Starter, Jul: #2 (690 sign-ups)Starter, Aug: #2 (650 sign-ups)Starter, Sep: #3 (600 sign-ups)StarterStarterProPro, Apr: #3 (380 sign-ups)Pro, May: #3 (450 sign-ups)Pro, Jun: #3 (520 sign-ups)Pro, Jul: #1 (710 sign-ups)Pro, Aug: #1 (760 sign-ups)Pro, Sep: #1 (820 sign-ups)ProProTeamTeam, Apr: #4 (300 sign-ups)Team, May: #4 (280 sign-ups)Team, Jun: #4 (340 sign-ups)Team, Jul: #4 (420 sign-ups)Team, Aug: #3 (640 sign-ups)Team, Sep: #2 (700 sign-ups)TeamTeamEnterpriseEnterprise, Apr: #5 (120 sign-ups)Enterprise, May: #5 (150 sign-ups)Enterprise, Jun: #5 (160 sign-ups)Enterprise, Jul: #5 (190 sign-ups)Enterprise, Aug: #5 (230 sign-ups)Enterprise, Sep: #5 (260 sign-ups)EnterpriseEnterprise
website/Examples/Charts/BumpChartBasicExample.razor Source

Ranks as data

ValuesAreRanks="true" takes the data as places (1 = top) instead of values to rank; ShowPoints="false" leaves only the lines.

Most used features, quarterly survey
Most used features, quarterly surveyDashboards: Q1 #1, Q2 #1, Q3 #2, Q4 #2; Alerts: Q1 #2, Q2 #3, Q3 #3, Q4 #4; API keys: Q1 #3, Q2 #2, Q3 #1, Q4 #1; Audit log: Q1 #4, Q2 #4, Q3 #4, Q4 #3Q1Q2Q3Q4DashboardsDashboardsDashboardsAlertsAlertsAlertsAPI keysAPI keysAPI keysAudit logAudit logAudit log
website/Examples/Charts/BumpChartRanksExample.razor Source

Playground

Plans ranked by new sign-ups
Plans ranked by new sign-upsFree: Apr #1, May #1, Jun #2, Jul #3, Aug #4, Sep #4; Starter: Apr #2, May #2, Jun #1, Jul #2, Aug #2, Sep #3; Pro: Apr #3, May #3, Jun #3, Jul #1, Aug #1, Sep #1; Team: Apr #4, May #4, Jun #4, Jul #4, Aug #3, Sep #2; Enterprise: Apr #5, May #5, Jun #5, Jul #5, Aug #5, Sep #5AprMayJunJulAugSepFreeFree, Apr: #1 (820 sign-ups)Free, May: #1 (760 sign-ups)Free, Jun: #2 (700 sign-ups)Free, Jul: #3 (640 sign-ups)Free, Aug: #4 (610 sign-ups)Free, Sep: #4 (590 sign-ups)FreeFreeStarterStarter, Apr: #2 (540 sign-ups)Starter, May: #2 (610 sign-ups)Starter, Jun: #1 (720 sign-ups)Starter, Jul: #2 (690 sign-ups)Starter, Aug: #2 (650 sign-ups)Starter, Sep: #3 (600 sign-ups)StarterStarterProPro, Apr: #3 (380 sign-ups)Pro, May: #3 (450 sign-ups)Pro, Jun: #3 (520 sign-ups)Pro, Jul: #1 (710 sign-ups)Pro, Aug: #1 (760 sign-ups)Pro, Sep: #1 (820 sign-ups)ProProTeamTeam, Apr: #4 (300 sign-ups)Team, May: #4 (280 sign-ups)Team, Jun: #4 (340 sign-ups)Team, Jul: #4 (420 sign-ups)Team, Aug: #3 (640 sign-ups)Team, Sep: #2 (700 sign-ups)TeamTeamEnterpriseEnterprise, Apr: #5 (120 sign-ups)Enterprise, May: #5 (150 sign-ups)Enterprise, Jun: #5 (160 sign-ups)Enterprise, Jul: #5 (190 sign-ups)Enterprise, Aug: #5 (230 sign-ups)Enterprise, Sep: #5 (260 sign-ups)EnterpriseEnterprise
<BumpChart
           ValueFormat="{0:N0} sign-ups"
           Title="Plans ranked by new sign-ups"
           Series="@_plans"
           Labels="@_months" />

@code {
    private readonly string[] _months = ["Apr", "May", "Jun", "Jul", "Aug", "Sep"];

    // Values are ranked per month, highest first.
    private readonly ChartSeries[] _plans =
    [
        new("Free", [820, 760, 700, 640, 610, 590]),
        new("Starter", [540, 610, 720, 690, 650, 600]),
        new("Pro", [380, 450, 520, 710, 760, 820]),
        new("Team", [300, 280, 340, 420, 640, 700]),
        new("Enterprise", [120, 150, 160, 190, 230, 260]),
    ];
}

API

<BumpChart>

DaisyBlazor.Charts

Parameters

  • AspectRatio double
    = 1.78

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

  • Labels IReadOnlyList<string>
    = null

    The name of each period, under the chart. Defaults to 1, 2, 3…

  • 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. Data[i] is the series' value in period Labels[i]; a missing (NaN) value leaves the series unranked in that period.

  • ShowPoints bool
    = true

    Draw a dot at each ranked point (it carries the tooltip).

  • 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} signups".

  • ValuesAreRanks bool
    = false

    The data already holds ranks (1 = top) instead of values to rank, highest first.

  • 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