Skip to content
DocsChartsGains curveLast updated Nov 2, 2026

Gains curve

How much a model finds in its top picks. Sample data: a churn model, the top 20% of accounts hold 61% of churners.

Open in
Churn model liftShare of churners found against the share of customers contacted, ranked by the churn model: the top 20% reach 61% of churners, against 20% at random.100%75%50%25%0TOP 20% → 61% OF CHURNERS025%50%75%100%MODELRANDOM
Churn model lift
Customers contactedChurners found (model)Churners found (random)
10%36%10%
20%61%20%
30%78%30%
40%88%40%
50%95%50%
60%98%60%
70%99%70%
80%100%80%
90%100%90%
100%100%100%
Churn model liftShare of churners found against the share of customers contacted, ranked by the churn model: the top 20% reach 61% of churners, against 20% at random.100%75%50%25%0TOP 20% → 61% OF CHURNERS025%50%75%100%MODELRANDOM
Churn model lift
Customers contactedChurners found (model)Churners found (random)
10%36%10%
20%61%20%
30%78%30%
40%88%40%
50%95%50%
60%98%60%
70%99%70%
80%100%80%
90%100%90%
100%100%100%

Installation

  1. 1

    Set up the registry once

    This chart is free in Hearth and MIT licensed: no token. Add @chartory to components.json once (the URL alone, no headers), or skip this when another chart is already installed.

    Installation guide
  2. 2

    Add the chart

    One command adds the Gains curve component to your project.

    npx shadcn add @chartory/gains-curve
  3. 3

    Use it

    Pass your rows. The props are the Figma properties.

    usage.tsx
    import { GainsCurve }  from "@/components/chartory/gains-curve"<GainsCurve  data={churnModel}  size="m"  legend/>

Props

<GainsCurve>

Every prop but data is a Figma property with the same name and values.

PropTypeDefault
data: The chart's data. The tables below list every field.GainsCurveDataRequired
size: The size class. Each one is laid out again from the data."xs" | "s" | "m" | "l""m"
legend: Shows the legend row under the plot.booleantrue
color: The data colour of the primary marks (data/primary)."cat-1" | "cat-2" | "cat-3" | "cat-4""cat-1"

GainsCurveData

The data prop: one object for the whole chart.

PropTypeDefault
mode: Which curve this is."gains" | "lorenz"Required
k: The curve's shape parameter.numberRequired
mark: A marked point: where and its label.GainsCurveMarkRequired
ticks: The axis tick labels.string[]Required
xt: The x axis ticks: [value, label] pairs.[number, string][]Required

GainsCurveMark

The mark object.

PropTypeDefault
x: The x value.numberRequired
text: The label as shown.stringRequired

The data as a JSON Schema: schemas/gains-curve.json

Gains curve: a React and Figma chart in four sizes

What does a gains curve show?

A gains curve shows what share of the targets a model catches as you work down its ranked list, against picking at random. The higher the curve early on, the better the model. Use it for churn, fraud and lead-scoring models.

Chartory ships it as a Figma component and a React component with the same name. The code installs from the shadcn registry with one command and lands in your project as a file you own.

What is the Gains curve component?

It is one <GainsCurve> component. Its props are the Figma properties with the same names and values, and the props table above lists them. The data is a steepness for the curve and one marked point.

Sizes XS, S, M and L re-lay the chart out from the data instead of scaling it, so labels stay readable at every size.

When should I use it?

  • Is it a ranked score? Yes means the gains curve fits.
  • Is there a random baseline? Yes means the gains curve fits.
  • Is it one model? Yes means the gains curve fits.

When does another type fit better?

  • Plain shares of a total. Use Lorenz curve instead.
  • No baseline. Use Line chart instead.
  • Many models on many measures. Use Parallel coordinates instead.

Gains curve questions

Installing, data, Figma and plans.

  • Yes. It installs through the shadcn registry with the shadcn CLI, and the file lands in your project.

Stay in the loop

New charts, by email.

Get an email when new chart types and releases ship.

Unsubscribe any time.