Skip to content
daisyBlazor

ScatterChart

One dot per observation on two value axes, to show how two measures move together: seats against API calls, payload against response time. Points can carry a Size (bubbles) and a Series (colour and legend), and either axis can be logarithmic. D3 builds the scales and a Voronoi diagram, so hovering anywhere highlights the nearest point. Splines, error bars, quadrants, stacking and a high-density mode for tens of thousands of points are options of the same chart.
Distribution
Cover · <ScatterChart>
Scatter plot50 points in 2 series. 010203040010203040Starter: x 14.3, y 13.8Starter: x 6.7, y 9.6Starter: x 10.8, y 10.6Starter: x 15.5, y 12.3Starter: x 9.6, y 8.5Starter: x 20.1, y 17Starter: x 15.5, y 12.8Starter: x 17.6, y 15.4Starter: x 18.2, y 19.2Starter: x 19.3, y 14.5Starter: x 15.2, y 11.3Starter: x 10.1, y 6.4Starter: x 10.2, y 11.6Starter: x 10.7, y 12Starter: x 20.4, y 11.6Starter: x 17.5, y 16.3Starter: x 11.4, y 10Starter: x 22, y 20.4Starter: x 12.8, y 14.8Starter: x 12.6, y 16.4Starter: x 10, y 9.1Starter: x 9.1, y 11.7Starter: x 14.9, y 14.7Starter: x 13.7, y 13.7Starter: x 4, y 6.7Starter: x 10.6, y 8.6Starter: x 10.2, y 10.6Starter: x 9.1, y 11.2Starter: x 13.3, y 9.2Starter: x 5.3, y 4.7Pro: x 21.5, y 26.7Pro: x 29, y 24.3Pro: x 34.3, y 42.6Pro: x 29.3, y 30.6Pro: x 30.9, y 38.3Pro: x 28.7, y 30.4Pro: x 34.9, y 41.6Pro: x 29, y 40.1Pro: x 32.7, y 36.6Pro: x 29.7, y 36.8Pro: x 29.8, y 28.7Pro: x 15.6, y 18.3Pro: x 24.5, y 22.9Pro: x 31.9, y 28.8Pro: x 27.8, y 29.5Pro: x 36.2, y 34Pro: x 30.6, y 41.5Pro: x 26.4, y 33.9Pro: x 25.1, y 28.1Pro: x 31.1, y 29.3

Examples

Basic

Each ScatterPoint has an X and a Y; Series groups points by colour and adds a legend. XTitle and YTitle name the axes and the tooltips.

Seats and API calls per customer
Seats and API calls per customer82 points in 3 series. 020406080100120140160180200050100150200SeatsAPI calls (thousands / day)Starter: Seats 14.3, API calls (thousands / day) 13.8Starter: Seats 6.7, API calls (thousands / day) 9.6Starter: Seats 10.8, API calls (thousands / day) 10.6Starter: Seats 15.5, API calls (thousands / day) 12.3Starter: Seats 9.6, API calls (thousands / day) 8.5Starter: Seats 20.1, API calls (thousands / day) 17Starter: Seats 15.5, API calls (thousands / day) 12.8Starter: Seats 17.6, API calls (thousands / day) 15.4Starter: Seats 18.2, API calls (thousands / day) 19.2Starter: Seats 19.3, API calls (thousands / day) 14.5Starter: Seats 15.2, API calls (thousands / day) 11.3Starter: Seats 10.1, API calls (thousands / day) 6.4Starter: Seats 10.2, API calls (thousands / day) 11.6Starter: Seats 10.7, API calls (thousands / day) 12Starter: Seats 20.4, API calls (thousands / day) 11.6Starter: Seats 17.5, API calls (thousands / day) 16.3Starter: Seats 11.4, API calls (thousands / day) 10Starter: Seats 22, API calls (thousands / day) 20.4Starter: Seats 12.8, API calls (thousands / day) 14.8Starter: Seats 12.6, API calls (thousands / day) 16.4Starter: Seats 10, API calls (thousands / day) 9.1Starter: Seats 9.1, API calls (thousands / day) 11.7Starter: Seats 14.9, API calls (thousands / day) 14.7Starter: Seats 13.7, API calls (thousands / day) 13.7Starter: Seats 4, API calls (thousands / day) 6.7Starter: Seats 10.6, API calls (thousands / day) 8.6Starter: Seats 10.2, API calls (thousands / day) 10.6Starter: Seats 9.1, API calls (thousands / day) 11.2Starter: Seats 13.3, API calls (thousands / day) 9.2Starter: Seats 5.3, API calls (thousands / day) 4.7Starter: Seats 2.8, API calls (thousands / day) 6.3Starter: Seats 12.8, API calls (thousands / day) 13.4Starter: Seats 13, API calls (thousands / day) 13.3Starter: Seats 14.1, API calls (thousands / day) 19.3Starter: Seats 9.3, API calls (thousands / day) 14.6Starter: Seats 13, API calls (thousands / day) 14.2Starter: Seats 11.3, API calls (thousands / day) 11.3Starter: Seats 11.1, API calls (thousands / day) 11.2Starter: Seats 7.5, API calls (thousands / day) 6.6Starter: Seats 9.6, API calls (thousands / day) 7.4Pro: Seats 28, API calls (thousands / day) 33.8Pro: Seats 43, API calls (thousands / day) 33.5Pro: Seats 53.5, API calls (thousands / day) 63.2Pro: Seats 43.5, API calls (thousands / day) 43.1Pro: Seats 46.7, API calls (thousands / day) 55.3Pro: Seats 42.4, API calls (thousands / day) 42.5Pro: Seats 54.8, API calls (thousands / day) 62.1Pro: Seats 43, API calls (thousands / day) 57.3Pro: Seats 50.4, API calls (thousands / day) 53.6Pro: Seats 44.3, API calls (thousands / day) 52.5Pro: Seats 44.5, API calls (thousands / day) 40.4Pro: Seats 16.2, API calls (thousands / day) 18.5Pro: Seats 34.1, API calls (thousands / day) 29.4Pro: Seats 48.7, API calls (thousands / day) 41.5Pro: Seats 40.7, API calls (thousands / day) 40.9Pro: Seats 57.4, API calls (thousands / day) 51.2Pro: Seats 46.1, API calls (thousands / day) 60Pro: Seats 37.9, API calls (thousands / day) 46.9Pro: Seats 35.2, API calls (thousands / day) 37.4Pro: Seats 47.3, API calls (thousands / day) 42.1Pro: Seats 55.9, API calls (thousands / day) 49.3Pro: Seats 43.7, API calls (thousands / day) 47.9Pro: Seats 55.9, API calls (thousands / day) 55.2Pro: Seats 31.6, API calls (thousands / day) 36.7Pro: Seats 41.6, API calls (thousands / day) 45.2Pro: Seats 61.1, API calls (thousands / day) 61.9Pro: Seats 34.7, API calls (thousands / day) 34.1Pro: Seats 50, API calls (thousands / day) 50.2Pro: Seats 44.9, API calls (thousands / day) 38.4Pro: Seats 43.9, API calls (thousands / day) 45.8Enterprise: Seats 130.6, API calls (thousands / day) 175.1Enterprise: Seats 159, API calls (thousands / day) 207.8Enterprise: Seats 116.4, API calls (thousands / day) 155.8Enterprise: Seats 193, API calls (thousands / day) 238.4Enterprise: Seats 151, API calls (thousands / day) 156.1Enterprise: Seats 118.9, API calls (thousands / day) 169.3Enterprise: Seats 32.4, API calls (thousands / day) 35Enterprise: Seats 106, API calls (thousands / day) 137.2Enterprise: Seats 178.1, API calls (thousands / day) 237.5Enterprise: Seats 102.4, API calls (thousands / day) 113.8Enterprise: Seats 79.4, API calls (thousands / day) 81.4Enterprise: Seats 102.6, API calls (thousands / day) 115.9
Starter Pro Enterprise
website/Examples/Charts/ScatterChartBasicExample.razor Source

Bubbles on log axes

Give points a Size to draw bubbles whose area follows it, and a Label for the tooltip. XScale and YScale set to AxisScale.Log spread values over several orders of magnitude.

Scatter plot of API calls per day against Seats10 points in 3 series, sized by value, on a logarithmic scale. 1210201002001,0002,00010,0001001,00010,000100,0001,000,00010,000,000SeatsAPI calls per dayPolar Systems · Enterprise: Seats 1,200, API calls per day 1,900,000, 21,000 sessions this weekAtlas Freight · Enterprise: Seats 420, API calls per day 610,000, 9,500 sessions this weekMeridian · Enterprise: Seats 180, API calls per day 140,000, 4,800 sessions this weekJuniper Health · Pro: Seats 90, API calls per day 75,000, 2,100 sessions this weekHalcyon · Pro: Seats 65, API calls per day 31,000, 1,300 sessions this weekTidewater · Pro: Seats 40, API calls per day 18,000, 900 sessions this weekLarkspur · Pro: Seats 24, API calls per day 9,800, 410 sessions this weekQuarry Bay · Starter: Seats 15, API calls per day 2,600, 260 sessions this weekBlue Fern · Starter: Seats 8, API calls per day 1,900, 120 sessions this weekNorthwind Labs · Starter: Seats 3, API calls per day 420, 35 sessions this week
Starter Pro Enterprise
website/Examples/Charts/ScatterChartBubbleExample.razor Source

Connected points

ShowLine="true" joins each series' points in X order, for measurements taken at increasing steps such as a load test.

Load test: p95 response time by concurrent sessions
Load test: p95 response time by concurrent sessions18 points in 3 series. 01,0002,0003,0004,0005,0006,0007,0008,000100200300400500Concurrent sessionsp95 response time (ms)eu-west: Concurrent sessions 250, p95 response time (ms) 82eu-west: Concurrent sessions 500, p95 response time (ms) 88eu-west: Concurrent sessions 1,000, p95 response time (ms) 97eu-west: Concurrent sessions 2,000, p95 response time (ms) 118eu-west: Concurrent sessions 4,000, p95 response time (ms) 164eu-west: Concurrent sessions 8,000, p95 response time (ms) 290us-east: Concurrent sessions 250, p95 response time (ms) 95us-east: Concurrent sessions 500, p95 response time (ms) 101us-east: Concurrent sessions 1,000, p95 response time (ms) 115us-east: Concurrent sessions 2,000, p95 response time (ms) 142us-east: Concurrent sessions 4,000, p95 response time (ms) 210us-east: Concurrent sessions 8,000, p95 response time (ms) 405ap-south: Concurrent sessions 250, p95 response time (ms) 120ap-south: Concurrent sessions 500, p95 response time (ms) 126ap-south: Concurrent sessions 1,000, p95 response time (ms) 139ap-south: Concurrent sessions 2,000, p95 response time (ms) 171ap-south: Concurrent sessions 4,000, p95 response time (ms) 248ap-south: Concurrent sessions 8,000, p95 response time (ms) 520
eu-west us-east ap-south
website/Examples/Charts/ScatterChartLineExample.razor Source

Trend lines

Trendline fits a least-squares curve to each series (Linear, Exponential, Logarithmic or Power) in data space, so it also works on log axes. Hover the dashed line for its equation and R².

Seats and API calls per customer
Seats and API calls per customer70 points in 2 series, with a linear trend line per series. 010203040506051015202530SeatsAPI calls (thousands / day)Starter: Seats 14.3, API calls (thousands / day) 13.8Starter: Seats 6.7, API calls (thousands / day) 9.6Starter: Seats 10.8, API calls (thousands / day) 10.6Starter: Seats 15.5, API calls (thousands / day) 12.3Starter: Seats 9.6, API calls (thousands / day) 8.5Starter: Seats 20.1, API calls (thousands / day) 17Starter: Seats 15.5, API calls (thousands / day) 12.8Starter: Seats 17.6, API calls (thousands / day) 15.4Starter: Seats 18.2, API calls (thousands / day) 19.2Starter: Seats 19.3, API calls (thousands / day) 14.5Starter: Seats 15.2, API calls (thousands / day) 11.3Starter: Seats 10.1, API calls (thousands / day) 6.4Starter: Seats 10.2, API calls (thousands / day) 11.6Starter: Seats 10.7, API calls (thousands / day) 12Starter: Seats 20.4, API calls (thousands / day) 11.6Starter: Seats 17.5, API calls (thousands / day) 16.3Starter: Seats 11.4, API calls (thousands / day) 10Starter: Seats 22, API calls (thousands / day) 20.4Starter: Seats 12.8, API calls (thousands / day) 14.8Starter: Seats 12.6, API calls (thousands / day) 16.4Starter: Seats 10, API calls (thousands / day) 9.1Starter: Seats 9.1, API calls (thousands / day) 11.7Starter: Seats 14.9, API calls (thousands / day) 14.7Starter: Seats 13.7, API calls (thousands / day) 13.7Starter: Seats 4, API calls (thousands / day) 6.7Starter: Seats 10.6, API calls (thousands / day) 8.6Starter: Seats 10.2, API calls (thousands / day) 10.6Starter: Seats 9.1, API calls (thousands / day) 11.2Starter: Seats 13.3, API calls (thousands / day) 9.2Starter: Seats 5.3, API calls (thousands / day) 4.7Starter: Seats 2.8, API calls (thousands / day) 6.3Starter: Seats 12.8, API calls (thousands / day) 13.4Starter: Seats 13, API calls (thousands / day) 13.3Starter: Seats 14.1, API calls (thousands / day) 19.3Starter: Seats 9.3, API calls (thousands / day) 14.6Starter: Seats 13, API calls (thousands / day) 14.2Starter: Seats 11.3, API calls (thousands / day) 11.3Starter: Seats 11.1, API calls (thousands / day) 11.2Starter: Seats 7.5, API calls (thousands / day) 6.6Starter: Seats 9.6, API calls (thousands / day) 7.4Pro: Seats 28, API calls (thousands / day) 18.6Pro: Seats 43, API calls (thousands / day) 15.4Pro: Seats 53.5, API calls (thousands / day) 33.1Pro: Seats 43.5, API calls (thousands / day) 21.7Pro: Seats 46.7, API calls (thousands / day) 29.2Pro: Seats 42.4, API calls (thousands / day) 21.5Pro: Seats 54.8, API calls (thousands / day) 32.1Pro: Seats 43, API calls (thousands / day) 31.2Pro: Seats 50.4, API calls (thousands / day) 27.3Pro: Seats 44.3, API calls (thousands / day) 27.8Pro: Seats 44.5, API calls (thousands / day) 19.7Pro: Seats 16.2, API calls (thousands / day) 10.7Pro: Seats 34.1, API calls (thousands / day) 14.5Pro: Seats 48.7, API calls (thousands / day) 19.6Pro: Seats 40.7, API calls (thousands / day) 20.8Pro: Seats 57.4, API calls (thousands / day) 24.4Pro: Seats 46.1, API calls (thousands / day) 32.4Pro: Seats 37.9, API calls (thousands / day) 25.3Pro: Seats 35.2, API calls (thousands / day) 19.6Pro: Seats 47.3, API calls (thousands / day) 20.3Pro: Seats 55.9, API calls (thousands / day) 23.4Pro: Seats 43.7, API calls (thousands / day) 24.9Pro: Seats 55.9, API calls (thousands / day) 27.3Pro: Seats 31.6, API calls (thousands / day) 19.8Pro: Seats 41.6, API calls (thousands / day) 23.5Pro: Seats 61.1, API calls (thousands / day) 30.7Pro: Seats 34.7, API calls (thousands / day) 17.5Pro: Seats 50, API calls (thousands / day) 25.1Pro: Seats 44.9, API calls (thousands / day) 18.3Pro: Seats 43.9, API calls (thousands / day) 23.4Starter linear trend: y = 0.6572x + 3.921, R² = 0.589 Pro linear trend: y = 0.409x + 5.292, R² = 0.468
Starter Pro
website/Examples/Charts/ScatterChartTrendlineExample.razor Source

Polynomial trend

Trendline="ChartTrendline.Polynomial" fits a least-squares polynomial of TrendlineOrder (2 to 6) to each series, for a curve a straight line misses; MovingAverage with TrendlinePeriod draws a trailing average instead. Hover the curve for its equation and R².

p95 response time as load grows
p95 response time as load grows20 points in 2 series, with a polynomial trend line per series. 01,0002,0003,0004,0005,0006,0007,0008,00050100150200250300350400450Concurrent sessionsp95 response time (ms)eu-west: Concurrent sessions 250, p95 response time (ms) 84eu-west: Concurrent sessions 500, p95 response time (ms) 90eu-west: Concurrent sessions 1,000, p95 response time (ms) 96eu-west: Concurrent sessions 1,500, p95 response time (ms) 104eu-west: Concurrent sessions 2,000, p95 response time (ms) 121eu-west: Concurrent sessions 3,000, p95 response time (ms) 139eu-west: Concurrent sessions 4,000, p95 response time (ms) 168eu-west: Concurrent sessions 5,000, p95 response time (ms) 205eu-west: Concurrent sessions 6,000, p95 response time (ms) 248eu-west: Concurrent sessions 8,000, p95 response time (ms) 296us-east: Concurrent sessions 250, p95 response time (ms) 96us-east: Concurrent sessions 500, p95 response time (ms) 104us-east: Concurrent sessions 1,000, p95 response time (ms) 113us-east: Concurrent sessions 1,500, p95 response time (ms) 126us-east: Concurrent sessions 2,000, p95 response time (ms) 140us-east: Concurrent sessions 3,000, p95 response time (ms) 172us-east: Concurrent sessions 4,000, p95 response time (ms) 214us-east: Concurrent sessions 5,000, p95 response time (ms) 262us-east: Concurrent sessions 6,000, p95 response time (ms) 330us-east: Concurrent sessions 8,000, p95 response time (ms) 410eu-west polynomial trend: y = 1.007E-06x^2 + 0.0203x + 75.81, R² = 0.992 us-east polynomial trend: y = 2.124E-06x^2 + 0.0245x + 86.69, R² = 0.994
eu-west us-east
website/Examples/Charts/ScatterChartPolynomialExample.razor Source

Spline

Smooth="true" with ShowLine draws each series as a monotone spline: it passes through every point without overshooting between them.

Load test: p95 response time by concurrent sessions
Load test: p95 response time by concurrent sessions14 points in 2 series. 01,0002,0003,0004,0005,0006,0007,0008,00050100150200250300350400450Concurrent sessionsp95 response time (ms)eu-west: Concurrent sessions 250, p95 response time (ms) 82eu-west: Concurrent sessions 500, p95 response time (ms) 88eu-west: Concurrent sessions 1,000, p95 response time (ms) 97eu-west: Concurrent sessions 2,000, p95 response time (ms) 118eu-west: Concurrent sessions 4,000, p95 response time (ms) 164eu-west: Concurrent sessions 6,000, p95 response time (ms) 215eu-west: Concurrent sessions 8,000, p95 response time (ms) 290us-east: Concurrent sessions 250, p95 response time (ms) 95us-east: Concurrent sessions 500, p95 response time (ms) 101us-east: Concurrent sessions 1,000, p95 response time (ms) 115us-east: Concurrent sessions 2,000, p95 response time (ms) 142us-east: Concurrent sessions 4,000, p95 response time (ms) 210us-east: Concurrent sessions 6,000, p95 response time (ms) 290us-east: Concurrent sessions 8,000, p95 response time (ms) 405
eu-west us-east
website/Examples/Charts/ScatterChartSplineExample.razor Source

Error bars

Give a point an XError or YError (± that much) to draw a whisker with caps; the tooltip shows the error and the axes make room for the bars.

Cold start time by function memory
Cold start time by function memory8 points in 2 series, with error bars. 1002003004005006007008009001,0001,1002004006008001,0001,2001,4001,6001,800Memory (MB)Cold start (ms)Node.js: Memory (MB) 128, Cold start (ms) 920 ± 140Node.js: Memory (MB) 256, Cold start (ms) 610 ± 90Node.js: Memory (MB) 512, Cold start (ms) 420 ± 55Node.js: Memory (MB) 1,024, Cold start (ms) 330 ± 40.NET: Memory (MB) 128, Cold start (ms) 1,480 ± 210.NET: Memory (MB) 256, Cold start (ms) 980 ± 150.NET: Memory (MB) 512, Cold start (ms) 640 ± 80.NET: Memory (MB) 1,024, Cold start (ms) 470 ± 60
Node.js .NET
website/Examples/Charts/ScatterChartErrorBarsExample.razor Source

Quadrants

References draws horizontal reference lines at Y values and XReferences vertical ones at X values (Bands and XBands shade ranges); one of each splits the plot into quadrants, which QuadrantLabels names (top right, top left, bottom left, bottom right).

Services by usage and error rate
Services by usage and error rate9 points, with reference lines. 1020304050607080901000.20.40.60.81.01.21.41.61.82.02.22.4Weekly active projects (%)Error rate (%)Fix first Review Leave as is Healthy coreCompute: Weekly active projects (%) 92, Error rate (%) 0.4Object storage: Weekly active projects (%) 81, Error rate (%) 1.6Load balancer: Weekly active projects (%) 74, Error rate (%) 0.3Managed Postgres: Weekly active projects (%) 66, Error rate (%) 1.9DNS: Weekly active projects (%) 58, Error rate (%) 0.7Queues: Weekly active projects (%) 38, Error rate (%) 1.4Edge functions: Weekly active projects (%) 27, Error rate (%) 0.5GPU nodes: Weekly active projects (%) 22, Error rate (%) 2.3Archive tier: Weekly active projects (%) 14, Error rate (%) 0.8Error budget: 1Error budgetReference: 50
website/Examples/Charts/ScatterChartQuadrantExample.razor Source

Stacked

Stacked="true" draws each series on the running total of the ones before it at the same X, like a stacked area; tooltips give each point's own value and the total. Trendline is ignored while stacked.

Storage used by tier, per week
Storage used by tier, per week24 points in 3 series, series stacked. 12345678020406080100120140WeekStorage (TB)Hot: Week 1, Storage (TB) 42 (total 42)Hot: Week 2, Storage (TB) 44 (total 44)Hot: Week 3, Storage (TB) 47 (total 47)Hot: Week 4, Storage (TB) 49 (total 49)Hot: Week 5, Storage (TB) 52 (total 52)Hot: Week 6, Storage (TB) 55 (total 55)Hot: Week 7, Storage (TB) 57 (total 57)Hot: Week 8, Storage (TB) 61 (total 61)Cool: Week 1, Storage (TB) 30 (total 72)Cool: Week 2, Storage (TB) 31 (total 75)Cool: Week 3, Storage (TB) 33 (total 80)Cool: Week 4, Storage (TB) 36 (total 85)Cool: Week 5, Storage (TB) 37 (total 89)Cool: Week 6, Storage (TB) 39 (total 94)Cool: Week 7, Storage (TB) 42 (total 99)Cool: Week 8, Storage (TB) 44 (total 105)Archive: Week 1, Storage (TB) 18 (total 90)Archive: Week 2, Storage (TB) 20 (total 95)Archive: Week 3, Storage (TB) 21 (total 101)Archive: Week 4, Storage (TB) 23 (total 108)Archive: Week 5, Storage (TB) 26 (total 115)Archive: Week 6, Storage (TB) 28 (total 122)Archive: Week 7, Storage (TB) 29 (total 128)Archive: Week 8, Storage (TB) 31 (total 136)
Hot Cool Archive
website/Examples/Charts/ScatterChartStackedExample.razor Source

High density

HighDensity="true" counts tens of thousands of points on a fine grid (CellSize) and shades each cell from light to full by count, with a legend of counts. The chart stays a handful of SVG paths however many points there are; every point still travels to the layout, so beyond a few hundred thousand, aggregate first.

20 000 API requests by payload and response time
20 000 API requests by payload and response time20000 points, shaded by how many points fall in each small cell. 0204060801001201401601802002200100200300400500600700800Payload (KB)Response time (ms)1–2 requests per cell3–8 requests per cell9–18 requests per cell19–32 requests per cell33–50 requests per cell51–73 requests per cell
1–2 requests per cell 3–8 requests per cell 9–18 requests per cell 19–32 requests per cell 33–50 requests per cell 51–73 requests per cell
website/Examples/Charts/ScatterChartHighDensityExample.razor Source

Playground

Seats and API calls per customer
Seats and API calls per customer82 points in 3 series. 020406080100120140160180200050100150200SeatsAPI calls (thousands / day)Starter: Seats 14.3, API calls (thousands / day) 13.8Starter: Seats 6.7, API calls (thousands / day) 9.6Starter: Seats 10.8, API calls (thousands / day) 10.6Starter: Seats 15.5, API calls (thousands / day) 12.3Starter: Seats 9.6, API calls (thousands / day) 8.5Starter: Seats 20.1, API calls (thousands / day) 17Starter: Seats 15.5, API calls (thousands / day) 12.8Starter: Seats 17.6, API calls (thousands / day) 15.4Starter: Seats 18.2, API calls (thousands / day) 19.2Starter: Seats 19.3, API calls (thousands / day) 14.5Starter: Seats 15.2, API calls (thousands / day) 11.3Starter: Seats 10.1, API calls (thousands / day) 6.4Starter: Seats 10.2, API calls (thousands / day) 11.6Starter: Seats 10.7, API calls (thousands / day) 12Starter: Seats 20.4, API calls (thousands / day) 11.6Starter: Seats 17.5, API calls (thousands / day) 16.3Starter: Seats 11.4, API calls (thousands / day) 10Starter: Seats 22, API calls (thousands / day) 20.4Starter: Seats 12.8, API calls (thousands / day) 14.8Starter: Seats 12.6, API calls (thousands / day) 16.4Starter: Seats 10, API calls (thousands / day) 9.1Starter: Seats 9.1, API calls (thousands / day) 11.7Starter: Seats 14.9, API calls (thousands / day) 14.7Starter: Seats 13.7, API calls (thousands / day) 13.7Starter: Seats 4, API calls (thousands / day) 6.7Starter: Seats 10.6, API calls (thousands / day) 8.6Starter: Seats 10.2, API calls (thousands / day) 10.6Starter: Seats 9.1, API calls (thousands / day) 11.2Starter: Seats 13.3, API calls (thousands / day) 9.2Starter: Seats 5.3, API calls (thousands / day) 4.7Starter: Seats 2.8, API calls (thousands / day) 6.3Starter: Seats 12.8, API calls (thousands / day) 13.4Starter: Seats 13, API calls (thousands / day) 13.3Starter: Seats 14.1, API calls (thousands / day) 19.3Starter: Seats 9.3, API calls (thousands / day) 14.6Starter: Seats 13, API calls (thousands / day) 14.2Starter: Seats 11.3, API calls (thousands / day) 11.3Starter: Seats 11.1, API calls (thousands / day) 11.2Starter: Seats 7.5, API calls (thousands / day) 6.6Starter: Seats 9.6, API calls (thousands / day) 7.4Pro: Seats 28, API calls (thousands / day) 33.8Pro: Seats 43, API calls (thousands / day) 33.5Pro: Seats 53.5, API calls (thousands / day) 63.2Pro: Seats 43.5, API calls (thousands / day) 43.1Pro: Seats 46.7, API calls (thousands / day) 55.3Pro: Seats 42.4, API calls (thousands / day) 42.5Pro: Seats 54.8, API calls (thousands / day) 62.1Pro: Seats 43, API calls (thousands / day) 57.3Pro: Seats 50.4, API calls (thousands / day) 53.6Pro: Seats 44.3, API calls (thousands / day) 52.5Pro: Seats 44.5, API calls (thousands / day) 40.4Pro: Seats 16.2, API calls (thousands / day) 18.5Pro: Seats 34.1, API calls (thousands / day) 29.4Pro: Seats 48.7, API calls (thousands / day) 41.5Pro: Seats 40.7, API calls (thousands / day) 40.9Pro: Seats 57.4, API calls (thousands / day) 51.2Pro: Seats 46.1, API calls (thousands / day) 60Pro: Seats 37.9, API calls (thousands / day) 46.9Pro: Seats 35.2, API calls (thousands / day) 37.4Pro: Seats 47.3, API calls (thousands / day) 42.1Pro: Seats 55.9, API calls (thousands / day) 49.3Pro: Seats 43.7, API calls (thousands / day) 47.9Pro: Seats 55.9, API calls (thousands / day) 55.2Pro: Seats 31.6, API calls (thousands / day) 36.7Pro: Seats 41.6, API calls (thousands / day) 45.2Pro: Seats 61.1, API calls (thousands / day) 61.9Pro: Seats 34.7, API calls (thousands / day) 34.1Pro: Seats 50, API calls (thousands / day) 50.2Pro: Seats 44.9, API calls (thousands / day) 38.4Pro: Seats 43.9, API calls (thousands / day) 45.8Enterprise: Seats 130.6, API calls (thousands / day) 175.1Enterprise: Seats 159, API calls (thousands / day) 207.8Enterprise: Seats 116.4, API calls (thousands / day) 155.8Enterprise: Seats 193, API calls (thousands / day) 238.4Enterprise: Seats 151, API calls (thousands / day) 156.1Enterprise: Seats 118.9, API calls (thousands / day) 169.3Enterprise: Seats 32.4, API calls (thousands / day) 35Enterprise: Seats 106, API calls (thousands / day) 137.2Enterprise: Seats 178.1, API calls (thousands / day) 237.5Enterprise: Seats 102.4, API calls (thousands / day) 113.8Enterprise: Seats 79.4, API calls (thousands / day) 81.4Enterprise: Seats 102.6, API calls (thousands / day) 115.9
Starter Pro Enterprise
XScale AxisScale
YScale AxisScale
Trendline ChartTrendline
<ScatterChart
              XTitle="Seats"
              YTitle="API calls (thousands / day)"
              Title="Seats and API calls per customer"
              Points="@_points" />

@code {
    // One point per customer, coloured by plan.
    private readonly ScatterPoint[] _points =
    [
        .. DistributionSamples.Cloud(seed: 1, count: 40, xMean: 12, xSd: 4, intercept: 2, slope: 0.8, noise: 2.5, series: "Starter"),
        .. DistributionSamples.Cloud(seed: 2, count: 30, xMean: 45, xSd: 12, intercept: 5, slope: 0.9, noise: 6, series: "Pro"),
        .. DistributionSamples.Cloud(seed: 3, count: 12, xMean: 140, xSd: 35, intercept: 20, slope: 1.1, noise: 18, series: "Enterprise"),
    ];
}

API

<ScatterChart>

DaisyBlazor.Charts

Parameters

  • AspectRatio double
    = 1.78

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

  • Bands IReadOnlyList<ChartBand>
    = null

    Shaded ranges of Y values drawn behind the points, cut to the plot, each with an optional label in its corner.

  • CellSize double
    = 3

    Side of a high-density grid cell, in chart units (at least 1). Smaller is finer, larger smooths more.

  • CountFormat string
    = "{0:N0} points"

    Format string for a high-density cell count in tooltips and the legend, e.g. "{0:N0} requests".

  • HighDensity bool
    = false

    For tens of thousands of points: instead of one dot per point, count the points on a grid of CellSize-unit squares and shade each cell from light (few points) to the series' full colour (most), with a legend of counts. Tooltips are per count level, not per point; Size, Label, errors and the hover cells are not drawn. The layout's result is bounded by the grid, not by the points, but every point is still sent to the layout (about 40 bytes each, so 100 000 points make a 4 MB request); beyond a few hundred thousand points, aggregate them before charting.

  • MaxBubbleRadius double
    = 20

    Radius of the largest bubble when points have a Size.

  • MinBubbleRadius double
    = 3

    Radius of the smallest bubble when points have a Size.

  • PointRadius double
    = 4

    Radius of each dot, in chart units, when no point has a Size.

  • Points IReadOnlyList<ScatterPoint>
    = []

    The points. Those without a finite X and Y (or not above zero on a log axis) are skipped.

  • QuadrantLabels IReadOnlyList<string>
    = null

    Four labels printed in the plot's corners, in this order: top right, top left, bottom left, bottom right; other counts are ignored. Pair them with one XReferences and one References line: the first of each splits the plot into the four quadrants they name.

  • References IReadOnlyList<ChartReference>
    = null

    Horizontal reference lines across the plot at Y values (a target, a limit), drawn over the points with an optional label; the Y axis grows to show each one. On a log axis, values at or below zero are left out.

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

  • SeriesColors IReadOnlyDictionary<string, string>
    = null

    Optional colour per series name (any CSS colour); other series cycle through the theme palette.

  • ShowLegend bool
    = true

    Show a legend when there is more than one series.

  • ShowLine bool
    = false

    Join each series' points with a line, in X order.

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

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

    Format string for Size in tooltips, e.g. "{0:N0} seats".

  • Smooth bool
    = false

    With ShowLine, draw each series' line as a smooth monotone spline through its points (a scatter spline) instead of straight segments.

  • Stacked bool
    = false

    Stack the series: each point is drawn on top of the running total of the previous series at the same X (from 0 where no earlier series has a point at that X). Tooltips give the point's own Y and the total. Trendline is ignored while stacked.

  • Title string
    = null

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

  • Trendline ChartTrendline
    = ChartTrendline.None

    Fit and draw a dashed trend line per series, on the series' own values; its tooltip gives the equation and R². Ignored when Stacked is on: a fit of the own values would not follow the stacked points, and a fit of the stacked totals would not describe the series.

  • TrendlineOrder int
    = 2

    Degree of a Polynomial trend line, from 2 to 6 (other values are clamped).

  • TrendlinePeriod int
    = 3

    Number of points a MovingAverage trend line averages (at least 2).

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

    Format string for X and Y in tooltips, e.g. "{0:N0}".

  • Width string
    = "100%"

    CSS width of the chart wrapper.

  • XBands IReadOnlyList<ChartBand>
    = null

    Shaded ranges of X values drawn behind the points, cut to the plot, each with an optional label in its corner.

  • XReferences IReadOnlyList<ChartReference>
    = null

    Vertical reference lines across the plot at X values, drawn over the points with an optional label; the X axis grows to show each one. On a log axis, values at or below zero are left out.

  • XScale AxisScale
    = AxisScale.Linear

    Scale of the horizontal axis.

  • XTitle string
    = null

    Title of the horizontal axis, also used in tooltips.

  • YScale AxisScale
    = AxisScale.Linear

    Scale of the vertical axis.

  • YTitle string
    = null

    Title of the vertical axis, also used in tooltips.

  • Class string
    = null

    Additional CSS classes merged onto the w-full wrapper.

  • Style string
    = null

    Inline styles appended after the width on the wrapper.

ScatterPoint

DaisyBlazor.Charts

One observation of a ScatterChart, ContourChart or HexbinChart. Points whose X or Y is not a finite number are skipped.

Properties

  • Label string

    Optional name shown first in the point's tooltip (ScatterChart only).

  • Series string

    Optional series name (ScatterChart only); each series gets its own colour and legend entry.

  • Size double?

    Optional bubble size (ScatterChart only); the bubble's area is proportional to it.

  • Value double?

    Optional measured value at (X, Y), interpolated over the plot by a ContourChart in Value mode.

  • X double

    Horizontal value.

  • XError double?

    Optional symmetric error on X (ScatterChart only): a horizontal error bar from X − XError to X + XError. Ignored unless above zero.

  • Y double

    Vertical value.

  • YError double?

    Optional symmetric error on Y (ScatterChart only): a vertical error bar from Y − YError to Y + YError. Ignored unless above zero.

Methods

  • <Clone>$ () → ScatterPoint
  • Deconstruct (Double& X, Double& Y, Nullable`1& Size, String& Series, String& Label) → void
  • Equals (object obj) → bool
  • Equals (ScatterPoint other) → bool
  • GetHashCode () → int
  • ToString () → string

AxisScale

DaisyBlazor.Charts

How a continuous axis maps values to positions.

ChartTrendline

DaisyBlazor.Charts

A trend line fitted to each series of a ScatterChart (in data space), or of a LineChart or BarChart (over the category index 0, 1, …). For the transformed kinds R² is that of the straight-line fit after the transform, as spreadsheets report it.

ChartReference

DaisyBlazor.Charts

A reference line across a chart's plot at Value on the value axis, such as a target, a limit or a break-even point.

Properties

  • Color string

    Optional CSS colour of the line and its label; defaults to the base content colour.

  • Dashed bool

    Draw the line dashed (the default) or solid.

  • Label string

    Optional text written at the end of the line, outside the plot.

  • Value double

    Where the line sits on the value axis; the axis grows to show it.

Methods

  • <Clone>$ () → ChartReference
  • Deconstruct (Double& Value, String& Label, String& Color, Boolean& Dashed) → void
  • Equals (object obj) → bool
  • Equals (ChartReference other) → bool
  • GetHashCode () → int
  • ToString () → string

ChartBand

DaisyBlazor.Charts

A shaded range of the value axis behind a chart's data (a plot band), from From to To in either order. Parts outside the axis are cut off.

Properties

  • Color string

    Optional CSS colour of the shading; defaults to the base content colour.

  • From double

    One end of the range.

  • Label string

    Optional text written beside the band, outside the plot.

  • To double

    The other end of the range.

Methods

  • <Clone>$ () → ChartBand
  • Deconstruct (Double& From, Double& To, String& Label, String& Color) → void
  • Equals (object obj) → bool
  • Equals (ChartBand other) → bool
  • GetHashCode () → int
  • ToString () → string
Something went wrong while running the docs. Reload