PlotSet LogoPlotSet

How to Create a Bubble Chart

A step by step walkthrough for turning a spreadsheet into a published bubble chart in PlotSet, from shaping three numeric columns to tuning the size scale and publishing.

About 9 minutes

Four columns, one chart: how to create a bubble chart in PlotSet starts with a spreadsheet that has a label, two numeric axis columns and a size value. You will end up with a published chart where the bubbles are scaled by area, not radius, carry a size legend the reader can actually use, and still hold together once a handful of records turn out much bigger than the rest.

Budget about nine minutes if your data is already four clean columns. The part people spend extra time on is tuning the size scale so the biggest bubble does not swallow the smallest ones, so treat that as a bit of trial and error rather than a setting you flip once and forget.

The data you need

Four columns, one row per entity: a label, two numeric axis columns, then a numeric size column. No merged cells, one header row.

Sample CSV
CityMedianIncomeMedianRentPopulation
Austin715761450978908
Denver771271650715522
Columbus585751150905748
Raleigh672661300474069
Tampa589221500398173
Boise669791350235684
Notes

All three numeric columns need to be plain numbers. A percentage stored as text with a percent sign, or an income figure stored with commas as text, will not map to an axis or to size.

The size column needs an amount, not a category. If your source data only has a bucket like small, medium or large, you need a real count or figure behind it before a bubble chart can size anything off it.

Zero and negative values break the size encoding. Area cannot represent a negative number, so filter those rows out or move that variable to colour instead.

Keep the entity count in the tens, not the hundreds. The example above has six rows for clarity; the sweet spot for a real chart is roughly ten to sixty before bubbles start stacking on top of each other.

The steps

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

  1. 01

    Open the bubble chart template

    From the PlotSet dashboard, start a new project and choose the Bubble Chart template. It loads with sample data already mapped to X, Y, size and label, so you can see the four column shape PlotSet expects before touching 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 four columns

    Put a label in the first column, then your two axis numbers, then the size value, one row per entity. If your source is a report with subtotal rows or merged header cells, flatten it first: the upload should be four plain columns and nothing else.

  3. 03

    Bring in your file or connect a sheet

    Use the data panel to import a CSV or .xlsx file, paste rows straight from a spreadsheet, or connect a Google Sheet so the chart can pick up later edits without a re-upload. PlotSet reads the 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 label, X, Y and size columns

    Confirm which column feeds each axis and which one drives bubble size. PlotSet usually guesses correctly when your headers are clear, but check it by hand if your sheet carries extra columns it might have picked over the ones you actually meant.

    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

    Tune the size scale

    Adjust the minimum and maximum bubble size until the largest entity reads clearly bigger without hiding its neighbours underneath it. Confirm scaling is set to area, not radius, and turn on the size legend so the reader gets two or three reference bubbles with real numbers attached.

  6. 06

    Label the ones that matter and colour by category

    Add direct labels to the handful of bubbles that carry the story and leave the rest to hover tooltips. Labelling every bubble on a chart with more than a dozen entities just creates clutter. If you have a category column, turn on colour by group to separate the bubbles visually.

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

    Publish the chart, embed it, or export an image

    Publish for a live, interactive chart with hover tooltips and a shareable link, grab the embed code for a page, or export a PNG, SVG or PDF when you need a static image for a deck.

Start from the Bubble Chart 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 Bubble Chart

Confirm the scale is set to area, not radius

Radius scaling makes a bubble twice as wide look four times as big, which misleads the reader every time. PlotSet defaults to area scaling for bubble charts, but if you have adjusted the size settings by hand, check the scale mode again before publishing.

Draw the big bubbles first and add some transparency

Send the largest bubbles to the back of the stack and lower the fill opacity a notch, so a big bubble does not fully hide a smaller one sitting underneath it. This matters most once your dataset passes twenty or so entities.

Ship a size legend with real numbers on it

Two or three reference bubbles with values attached turn the size encoding from decoration into information. Without a legend, a reader can tell one bubble is bigger than another but has no way to say by how much.

Filter or flag outliers that span orders of magnitude

If one record is a thousand times the size of the rest, pull it into its own callout or filter it out and say so in a caption. Otherwise every other bubble on the chart shrinks down to a dot next to it.

Common mistakes when making a Bubble Chart

One bubble swallows the whole chart

This is almost always an outlier in the size column, sometimes a totals row that snuck in with the real data. Sort the size column in PlotSet's data table, find the record that dwarfs the rest, and either filter it out or cap the maximum size in the scale settings.

Every bubble comes out roughly the same size

Check that the size column is actually mapped to a numeric field and not to the label or a category column by mistake. It also happens when the values in that column are stored as text with commas or a currency symbol, since PlotSet cannot size marks off text.

Labels overlap into an unreadable mess

This shows up once a chart has more than about fifteen bubbles with direct labels turned on. Turn off labels for anything but the handful of bubbles the chart is actually about, and let the rest surface their identity in the tooltip on hover.

Learn more about the Bubble Chart

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

About the Bubble Chart

Bubble Chart: common questions

Four columns: a label for each entity, two numeric columns for the X and Y position, and a third numeric column for bubble size. A category column is optional and adds colour grouping. All three numeric columns need to be plain numbers, not text with symbols or commas, or PlotSet cannot map them.

Make your Bubble Chart now

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