PlotSet LogoPlotSet

How to Create a Chord Diagram

A step by step walkthrough for turning a source, target and value spreadsheet into a published chord diagram in PlotSet, from the three-column matrix to the ordering that keeps the ribbons readable.

About 9 minutes

A matrix of flows between entities is the starting point, and how to create a chord diagram in PlotSet from it, not the sample data that ships with the template, is what this guide covers. You will end up with entities arranged around a circle, ribbons sized to the amounts moving between them, and either a live embed with hover highlighting or a PNG, SVG or PDF you can drop into a deck. The click path is the same one a real PlotSet project follows from upload to publish.

If your data is already three columns, source, target and value, this takes about eight or nine minutes. Add another five if you are pulling the matrix out of a wider report or a pivot table, since that reshaping is the part people usually get stuck on before they ever open PlotSet.

The data you need

Three columns, one row per directed pair: source entity, target entity, and the amount flowing from source to target. Include a separate row for the reverse direction when the flows are not equal.

Sample CSV
SourceTargetGWh
NorwaySweden842
SwedenNorway613
SwedenFinland410
FinlandSweden295
SwedenDenmark378
DenmarkSweden201
DenmarkGermany530
GermanyDenmark344
NorwayDenmark156
DenmarkNorway98
Notes

This is long format, not a wide matrix. If your source data looks like a grid with countries down the side and across the top, you need to unpivot it into source, target, value rows before uploading. A spreadsheet's UNPIVOT or a quick PIVOT-to-long formula handles this faster than retyping by hand.

A pair with flow in both directions needs two rows, one each way. Uploading only "Norway,Sweden,842" with nothing for the return trip renders as a one-way ribbon, which is fine if that is genuinely the case, but wrong if you just forgot the other row.

Keep the value column as plain numbers, no thousand separators and no currency symbols. A cell like "1,234" or "$1,234" sometimes imports as text rather than a number, and a text value cannot size a ribbon.

Rows where source and target are the same entity (a self-loop) do not draw a ribbon in a chord layout. Drop them before uploading rather than leaving them in as dead rows.

The steps

The exact click path in PlotSet, from a blank template to a finished chart.

  1. 01

    Open the chord diagram template

    From the PlotSet dashboard, start a new project and choose the Chord Diagram template. It loads with sample data already bound, which is the fastest way to see the three-column shape, source, target, value, before you bring in your own file.

    PlotSet's template picker: chart categories listed down the left, the Bar Charts grid open, and the Bar Chart template card showing its Select button.
    Every guide starts here. Pick the category, then the template: it is the same grid whichever chart type you are after.
  2. 02

    Shape your sheet into source, target and value

    One row per directed pair. If a report gave you a wide matrix instead, with entities down the side and across the top, unpivot it into these three columns first. This is usually the slowest part of the whole process and the one worth doing carefully.

  3. 03

    Import the file or connect a sheet

    Import a CSV or .xlsx file from the data panel, paste rows directly, or connect a Google Sheet if you want the diagram to pick up new numbers later without a re-upload. PlotSet reads your first row as headers automatically.

    The PlotSet editor's data view: a spreadsheet grid with Name, Value and Region columns filled with Canadian province figures, beside the Data panel offering CSV upload, Magic Import and Google Sheet sync.
    The data view, shown here on a bar chart project. Upload a CSV, lift the numbers out of an image with Magic Import, or sync a Google Sheet. The panel is identical for every chart type.
  4. 04

    Map the source, target and value columns

    Confirm which column feeds each end of the ribbon and which one sets its width. PlotSet usually guesses correctly when your headers are named clearly, but check it manually if your sheet carries extra columns it might have picked up by mistake.

    The PlotSet data panel with the column bindings highlighted: Label/time mapped to column A, Values to column B and Filter/color to column C, with the Auto Binding button below.
    Bindings decide which column becomes the label, which supplies the values and which drives the colour. Auto Binding guesses them from your headers, so check it rather than assume it.
  5. 05

    Order the entities around the circle

    Drag entities in the editor so ones that trade heavily with each other sit next to each other, rather than leaving them in upload or alphabetical order. This single change does more to cut down crossing ribbons than any styling option.

  6. 06

    Aggregate anything too small to matter

    If a handful of entities carry almost no volume, group them into a single "Other" row in your source sheet before re-uploading. Thin ribbons from minor entities add visual noise without adding information, and removing them is usually what turns a knot into a readable diagram.

  7. 07

    Style the ribbons and turn on hover highlighting

    Ribbon colour is inherited from the source arc by default, which is the setting to keep so a reader can trace where a ribbon started. Turn on hover highlighting so pointing at one entity dims every ribbon except its own; this is what actually makes a dense chord diagram usable rather than decorative.

    The PlotSet editor on the Preview tab: a finished Chord Diagram on the canvas, with the settings panel outlined in red down the right-hand side.
    The Preview tab for a Chord Diagram. Every styling control lives in the outlined panel, each on its own tab: appearance, header, footer and the options specific to this chart type.
  8. 08

    Publish the diagram, embed it, or export it

    Publish for a live, interactive diagram with the hover highlighting intact and a shareable link, grab the embed code for a page on your own site, or export a static PNG, SVG or PDF if you need an image for a report.

Start from the Chord Diagram template with sample data already loaded, then swap in your own.

Open the template

Publish, embed or export it

The last stretch is the same for every chart type: Share turns the chart into a live public link and an embed code, Export writes it out as a static file.

Share: public link and embed code

Activating the embed code and public link publishes the chart. The link is safe to send to anyone, and the embed code drops into any page as an iframe that keeps the hover tooltips and the interactivity. Edit the chart later and hit Recreate to push those changes out to both.

The PlotSet editor toolbar with the Share button highlighted, sitting next to the Export button.
Share is how a finished chart becomes a public link and an embed code.
PlotSet's Share dialog: the toggle activating the embed code and public link, buttons for Link, Embed, Facebook, Reddit, Twitter, LinkedIn and Email, and the public chart link with a Copy button.
Switch on the embed code and public link, then copy the link or take the iframe. Recreate pushes later edits out to everyone already holding it.

Export: SVG, PNG or JPG

Export writes a static copy at whatever size you need. SVG stays sharp at any scale and can still be edited in a design tool; PNG and JPG are the safe choices for slides and documents. The scale multiplier is what gets you a crisp image on a retina screen.

The PlotSet editor toolbar with the Export button highlighted.
Export is the route to a static file for a slide or a report.
PlotSet's Export chart dialog: a 2x scale selector, width and height fields set to 1000 by 600, and the open format menu listing SVG, PNG and JPG.
SVG stays sharp at any size and stays editable in a design tool; PNG and JPG are the safe picks for a deck. Set the scale before you export so the image is crisp on a retina screen.

Styling tips for a Chord Diagram

Cluster before you sort

Ordering by total flow puts the busiest entities together automatically, but clustering by relationship, region, category, whatever groups things that actually trade with each other, usually cuts crossings further. Try both and keep whichever produces fewer ribbons crossing the centre.

Leave the gap between arcs alone unless it's cramped

The default spacing keeps each entity's total flow readable as an arc length. Shrinking the gap to fit more entities in usually backfires: past a point, the arcs blur into a single ring and the totals stop being legible at all.

Match your CSV's direction convention to how you read it

Decide once whether a row means "source sent to target" and stick to it across every row. Mixing conventions partway through a sheet, so one row means "exports" and the next means "imports", produces a diagram that is internally inconsistent even though every number in it is correct.

Name the aggregated bucket honestly

If you grouped a long tail of small entities into "Other", say so in the title or a caption. A reader who assumes "Other" is a real single entity will misread its arc as one busy participant rather than twelve quiet ones.

Common mistakes when making a Chord Diagram

Every ribbon looks one-directional even though the real flows go both ways

This almost always means the sheet only had one row per pair. Check your source data for the return-direction row, Target back to Source, and add it if the underlying flow is genuinely asymmetric or reciprocal.

All the ribbons render the same width regardless of the numbers

The value column probably imported as text rather than a number, usually because a cell had a thousand separator, a currency symbol, or a trailing space. Strip formatting from the value column in your spreadsheet and re-upload.

The diagram is a solid knot of crossing ribbons

This is what happens past roughly fifteen entities, or with fewer entities left in upload order instead of clustered. Aggregate the smallest entities into an "Other" group and reorder the remaining ones so related entities sit adjacent on the circle.

Learn more about the Chord Diagram

Not sure the Chord Diagram is the right choice? See what it is, when to use it and when not to.

About the Chord Diagram

Chord Diagram: common questions

Three columns in long format: source, target and value, with one row per directed pair. If your data currently sits in a wide matrix with entities down the side and across the top, unpivot it into these three columns before uploading.

Make your Chord Diagram now

Free to start with 300+ templates. No credit card required.