← Blog
How-to·22 May 2026·7 min read

Put an earned-value S-curve and a manpower histogram under your Gantt

Your Gantt shows when. It doesn't show whether you're getting your money's worth. Here's how to drop a proper earned-value S-curve and a manhour histogram straight under the bars — with CPI and SPI computed for you — without opening a separate EVM tool or fighting a spreadsheet for an afternoon.

Everyone can read a bar chart. The board can see the handover date slide two months to the right. What a Gantt on its own can't tell them is the thing they actually pay you to know: are we spending faster than we're building? Is the work we've done worth what it cost? That's earned value — and for most teams it lives in a spreadsheet nobody trusts, three tabs deep, re-keyed every month from a schedule export.

It doesn't need to. The three curves that matter are just cost-over-time, and your schedule already knows the timing. Load in the money and the quantities, set a baseline, and Sketchedule plots the S-curve under the same Gantt, in the browser — and does the CPI/SPI maths so you don't have to. Let's build one.

The cost-loaded schedule · the Gantt the S-curve sits under JanFebMarAprMayJunJulAugSepOctNovDec Activity StartFinishCost (BAC)% ▸ Design & Procurement Concept design 05 Jan27 Feb£0.6m100 Procurement 17 Feb10 Apr£0.9m80 ▸ Construction Substructure 01 Apr26 Jun£1.4m60 Superstructure 10 Jun18 Sep£2.2m15 Envelope & MEP 20 Aug27 Nov£1.8m0 ▸ Commissioning Commissioning 28 Nov18 Dec£0.5m0 Handover 19 Dec19 Dec0 data date · Jun
Fig 1. The same schedule the S-curve sits under, in Sketchedule: activities carry Start, Finish, a Cost (BAC) and % complete in the grid, task bars sit on the month axis, each section rolls up to a grey summary bar, handover is a milestone diamond, and the dashed red line is the data date. Feed that cost and progress into ValueSets and the S-curve below draws itself on this very timescale.

The three curves, in plain English

Earned value has a reputation for being impenetrable. It isn't. There are three numbers, all measured in the same currency, all plotted against time:

From those three you get two indices, and this is the whole game:

SPI = EV / PV — schedule performance. Below 1 means you've earned less than you planned to by now: behind.
CPI = EV / AC — cost performance. Below 1 means the work cost more than it was worth: over.

Two ratios, both anchored on EV. A schedule slip shows as SPI < 1; a cost overrun shows as CPI < 1. Plot the three curves and read the gap: the horizontal gap between EV and PV is your schedule variance, the vertical gap between AC and EV is your cost variance. Here's a project that's caught both.

Earned-value S-curve · slightly behind, slightly over £0£2m£4m£6m£8m JanFebMarAprMayJunJulAugSepOctNovDec data date · Jun PV — planned value AC — actual cost EV — earned value At the data date: PV £6.0m · AC £5.4m · EV £4.6m → SPI 0.77 (behind) · CPI 0.85 (over).
Fig 2. The three curves at a glance. EV (green) sits below PV (blue) — less earned than planned, so SPI < 1. AC (amber) sits above EV — the work cost more than it was worth, so CPI < 1. The horizontal gap is schedule variance; the vertical gap is cost variance. Everything is read at the dashed data date.

Reading the worked example

Take those numbers at the June data date: PV £6.0m, EV £4.6m, AC £5.4m. Run the two ratios and the story writes itself.

Behind and over is the uncomfortable quadrant, and it's the one worth catching early. Behind-but-under can be a resourcing choice; ahead-but-over can be an acceleration you chose to buy. Behind-and-over usually means the plan was optimistic and the work is harder than costed — and the two curves diverging on one page is a far sharper warning than a Gantt bar quietly sliding right. The S-curve makes the trend obvious the month it starts, not the month the money runs out.

Building it in Sketchedule

None of this needs a dedicated EVM package. The schedule gives you the timing; you add the money and the progress; Sketchedule draws the curves and runs the ratios. Here's the whole flow.

  1. Get the cost and quantity in. Add cost and quantity (manhour) columns to your activities — type them straight into the grid, or bring them with the schedule. Import an XER/P6 XML or MSP XML that's already resource- and cost-loaded, or drop in an Excel/CSV of budgets and quantities. It all parses in your browser — nothing is uploaded.
  2. Set a baseline. Capture the current plan as the baseline. This is what PV is measured against — the budgeted cost of the work scheduled over time. Without a baseline there's no "planned" to compare to, so this step isn't optional.
  3. Add a ValueSet / Datagraph for PV, EV and AC. A ValueSet spreads each activity's cost across its duration; a Datagraph plots the running total over time. Add three: planned value from the baseline, earned value from % complete, actual cost from booked spend. Sketchedule accumulates them into the S-curve and drops it under the Gantt, on the same timescale.
  4. Read CPI and SPI. With PV, EV and AC known at the data date, Sketchedule computes CPI = EV/AC and SPI = EV/PV for you and surfaces them as indicators — RAG-coloured so behind/over reads at a glance, no formula bar required.
  5. Add the manhour histogram (optional). Point a second Datagraph at the quantity column as bars to get a period-by-period manpower / manhour histogram under the same axis — the resourcing shape behind the cost curve (Fig 3).
  6. Export or share. Ship it as a landscape PDF or PowerPoint, drop the curve into a report as PNG/SVG, or send a read-only link that rebuilds the whole picture — Gantt, S-curve and indices — in the recipient's browser. What prints matches what's on screen.
Manhour histogram · resourcing under the same timescale 04008001,200 JanMarMayJulSepNov data date faded bars = forecast manhours beyond the data date.
Fig 3. A second Datagraph plotting the quantity column as bars gives the manpower histogram — the classic build-up-and-tail-off shape — on the very same monthly axis as the S-curve and the Gantt above it. Solid bars are booked to the data date; faded bars are the forecast.
The payoff: the curve lives under the bars, on the same timescale, driven by the same activities. Change a date or a % complete and the S-curve and the indices move with it — no export, no rebuild, no stale spreadsheet tab to reconcile.

Why it isn't already this easy

Two kinds of tool sit either side of this, and neither closes the gap. Desktop schedulers can hold the cost and quantity — but their job is to compute the numbers, not present them. You export a table and rebuild the S-curve in Excel every month, which is exactly the spreadsheet nobody trusts. The other kind — the work-OS and project-board tools everyone lives in — track tasks and %-done but have no concept of earned value at all; there's simply nowhere for PV/EV/AC to go.

Sketchedule sits in the middle on purpose: a presentation layer that keeps the money attached to the schedule. The curve isn't a screenshot pasted under the plan — it's plotted from the same activities, so it stays live. That's the difference between a report you rebuild and a view that just refreshes.

Where the network stays. Your P6 or MSP schedule still owns the logic — the critical path, the float, the calendars, the resource levelling. Sketchedule doesn't re-run the network; it presents it, and does the earned-value arithmetic for the report. Engine over there, board-ready picture over here.

Three ways to make the S-curve lie

No baseline, or a moving one

PV is only meaningful against a fixed baseline. Re-baseline every month "to catch up" and SPI will read a cheerful 1.0 forever while the project quietly drifts. Set the baseline once, and change it only through a controlled re-baseline you can point to.

Progress that outruns the spend

EV comes from % complete. If activities are marked further along than the work really is, EV inflates, CPI flatters, and the curve says "fine" while the site says otherwise. Earn value on real, measured progress — physical percent, not optimism.

Costs booked to the wrong period

AC has to land in the month the cost was actually incurred, or the vertical EV-to-AC gap moves to the wrong place and the cost variance points at the wrong activity. Line the actuals up with the data date and the picture is honest by construction.

TermWhat it isReads as
PV (BCWS)Budgeted cost of work scheduled by nowThe plan line — from the baseline
EV (BCWP)Budgeted cost of work doneValue actually earned — from % complete
AC (ACWP)Actual cost of the work doneWhat it really cost — from booked spend
SPI = EV/PVSchedule performance index<1 behind · =1 on plan · >1 ahead
CPI = EV/ACCost performance index<1 over · =1 on budget · >1 under

Key takeaways

Put a curve under your own plan

Open Sketchedule in a browser — free, no install, nothing uploaded. Load a cost-loaded schedule and watch the S-curve build.

← BlogAll articles

Primavera and P6 are trademarks of Oracle Corporation; Microsoft Project is a trademark of Microsoft Corporation. Sketchedule is an independent product and is not affiliated with, endorsed by or sponsored by Oracle or Microsoft. Figures are illustrative, drawn in Sketchedule; the numbers shown are worked examples for explanation.