---
title: "BubbleChart"
language: "en"
type: "Symbol"
summary: "BubbleChart[{{x1, y1, z1}, {x2, y2, z2}, ...}] makes a bubble chart with bubbles at positions {xi, yi} with sizes zi. BubbleChart[{..., wi[{xi, yi, zi}, ...], ..., wj[{xj, yj, zj}, ...], ...}] makes a bubble chart with bubble features defined by the symbolic wrappers wk. BubbleChart[{data1, data2, ...}] makes a bubble chart from multiple datasets datai."
keywords: 
- bubble chart
- bubble graph
- bubble plot
- scatter plot
- business matrix
- area chart
- area graph
- area plot
- chernoff faces
canonical_url: "https://reference.wolfram.com/language/ref/BubbleChart.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Charting and Information Visualization"
    link: "https://reference.wolfram.com/language/guide/ChartingAndInformationVisualization.en.md"
  - 
    title: "Data Visualization"
    link: "https://reference.wolfram.com/language/guide/DataVisualization.en.md"
  - 
    title: "Statistical Visualization"
    link: "https://reference.wolfram.com/language/guide/StatisticalVisualization.en.md"
  - 
    title: "Spatial Point Collections"
    link: "https://reference.wolfram.com/language/guide/SpatialPointCollections.en.md"
  - 
    title: "Tabular Visualization"
    link: "https://reference.wolfram.com/language/guide/TabularVisualization.en.md"
related_functions: 
  - 
    title: "ListPlot"
    link: "https://reference.wolfram.com/language/ref/ListPlot.en.md"
  - 
    title: "ListPlot3D"
    link: "https://reference.wolfram.com/language/ref/ListPlot3D.en.md"
  - 
    title: "ListDensityPlot"
    link: "https://reference.wolfram.com/language/ref/ListDensityPlot.en.md"
  - 
    title: "BubbleChart3D"
    link: "https://reference.wolfram.com/language/ref/BubbleChart3D.en.md"
  - 
    title: "SectorChart"
    link: "https://reference.wolfram.com/language/ref/SectorChart.en.md"
  - 
    title: "BarChart"
    link: "https://reference.wolfram.com/language/ref/BarChart.en.md"
  - 
    title: "GeoBubbleChart"
    link: "https://reference.wolfram.com/language/ref/GeoBubbleChart.en.md"
---
# BubbleChart

BubbleChart[{{x1, y1, z1}, {x2, y2, z2}, …}] makes a bubble chart with bubbles at positions {xi, yi} with sizes zi.

BubbleChart[{…, wi[{xi, yi, zi}, …], …, wj[{xj, yj, zj}, …], …}] makes a bubble chart with bubble features defined by the symbolic wrappers wk.

BubbleChart[{data1, data2, …}] makes a bubble chart from multiple datasets datai.

## Details and Options

* Data elements for ``BubbleChart`` can be given in the following forms:

|                                                        |                                                  |
| ------------------------------------------------------ | ------------------------------------------------ |
| {xi, yi, zi}                                           | a pure bubble value                              |
| {Quantity[xi, ux], Quantity[yi, uy], Quantity[zi, uz]} | a bubble value with units                        |
| <\|kx -> xi, ky -> yi, kz -> zi\|>                        | association of keys and bubble value             |
| wi[{xi, yi, zi}, …]                                    | a bubble with value {xi, yi, zi} and wrapper wi  |
| formi -> mi                                            | a bubble form with metadata mi                   |

* The values ``zi`` should be positive.

* Data not given in these forms is ignored in forming the bubble chart.

* Datasets for ``BubbleChart`` can be given in the following forms:

|                                                |                                              |
| ---------------------------------------------- | -------------------------------------------- |
| {e1, e2, …}                                    | list of elements with or without wrappers    |
| <\|k1 -> e1, k2 -> e2, …\|>                      | association of keys and values               |
| TimeSeries[…], EventSeries[…], TemporalData[…] | time series, event series, and temporal data |
| WeightedData[…]                                | augmented datasets                           |
| w[{e1, e2, …}, …]                              | wrapper applied to a whole dataset           |
| w[{data1, data1, …}, …]                        | wrapper applied to all datasets              |

* ``BubbleChart[Tabular[…] -> cspec]`` extracts and plots values from the tabular object using the column specification ``cspec``.

* The following forms of column specifications ``cspec`` are allowed for plotting tabular data:

|                                                   |                                   |
| ------------------------------------------------- | --------------------------------- |
| {colx, coly, colz}                                | plot data from columns x. y and z |
| {{colx1, coly1, colz1}, {colx2, coly2, colz2}, …} | plot multiple sets of columns     |

* The following wrappers can be used for chart elements:

|                      |                                                            |
| -------------------- | ---------------------------------------------------------- |
| Annotation[e, label] | provide an annotation                                      |
| Button[e, action]    | define an action to execute when the element is clicked    |
| Callout[e, label]    | display the element with callout labeling                  |
| EventHandler[e, …]   | define a general event handler for the element             |
| Hyperlink[e, uri]    | make the element act as a hyperlink                        |
| Labeled[e, …]        | display the element with labeling                          |
| Legended[e, …]       | include features of the element in a chart legend          |
| Mouseover[e, over]   | make the element show a mouseover form                     |
| PopupWindow[e, cont] | attach a popup window to the element                       |
| StatusArea[e, label] | display in the status area when the element is moused over |
| Style[e, opts]       | show the element using the specified styles                |
| Tooltip[e, label]    | attach an arbitrary tooltip to the element                 |

* In ``BubbleChart``, ``Labeled``, ``Callout`` and ``Placed`` allow the following positions:

|                                  |                                                                                 |
| -------------------------------- | ------------------------------------------------------------------------------- |
| Top, Bottom, Left, Right, Center | positions within bubbles                                                        |
| Above, Below, Before, After      | positions outside bubbles                                                       |
| {{bx, by}, {lx, ly}}             | scaled position {lx, ly} in the label at scaled position {bx, by} in the bubble |

* ``BubbleChart`` has the same options as ``Graphics`` with the following additions and changes: []

|                       |                     |                                                 |
| --------------------- | ------------------- | ----------------------------------------------- |
| AspectRatio           | 1                   | overall ratio of height to width                |
| BubbleScale           | "Area"              | feature scale used for bubbles                  |
| BubbleSizes           | Automatic           | size range to use for bubbles                   |
| ChartBaseStyle        | Automatic           | overall style for bubbles                       |
| ChartElementFunction  | Automatic           | how to generate raw graphics for bubbles        |
| ChartElements         | Automatic           | graphics to use for each of the bubbles         |
| ChartLabels           | None                | labels for data elements and datasets           |
| ChartLegends          | None                | legends for data elements and datasets          |
| ChartStyle            | Automatic           | style for bubbles                               |
| ColorFunction         | Automatic           | how to color bubbles                            |
| ColorFunctionScaling  | True                | whether to normalize arguments to ColorFunction |
| Frame                 | True                | whether to draw a frame around the chart        |
| LabelingFunction      | Automatic           | how to label bubbles                            |
| LabelingSize          | Automatic           | maximum size of callouts and labels             |
| LabelingTarget        | Automatic           | how to determine automatic label positions      |
| LegendAppearance      | Automatic           | overall appearance of legends                   |
| PerformanceGoal       | \$PerformanceGoal   | aspects of performance to try to optimize       |
| PlotInteractivity     | \$PlotInteractivity | whether to allow interactive elements           |
| PlotTheme             | \$PlotTheme         | overall theme for the chart                     |
| ScalingFunctions      | None                | how to scale individual coordinates             |
| TargetUnits           | Automatic           | units to display in the chart                   |

* ``BubbleChart`` layers bubbles from largest to smallest for maximal visibility.

* The arguments supplied to ``ChartElementFunction`` are the bubble region ``{{xmin, xmax}, {ymin, ymax}}``, the values ``{xi, yi, zi}``, and the metadata ``{m1, m2, …}`` from each level in a nested list of datasets.

* A list of built-in settings for ``ChartElementFunction`` can be obtained from ``ChartElementData["BubbleChart"]``.

* The arguments supplied to ``ColorFunction`` are ``x``, ``y``, and ``z``.

* Chart feature themes affect the data's graphic styling. Themes include:

|         |              |                                           |
| ------- | ------------ | ----------------------------------------- |
| [image] | "BoldScheme" | bold elements from Chart Element Schemes  |
| [image] | "FadeScheme" | faded elements from Chart Element Schemes |

* Style and other specifications from options and other constructs in ``BubbleChart`` are effectively applied in the order ``ChartStyle``, ``ColorFunction``, ``Style`` and other wrappers, ``ChartElements``, and ``ChartElementFunction``, with later specifications overriding earlier ones.

### List of all options

|                        |                     |                                                                                    |
| ---------------------- | ------------------- | ---------------------------------------------------------------------------------- |
| AlignmentPoint         | Center              | the default point in the graphic to align with                                     |
| AspectRatio            | 1                   | overall ratio of height to width                                                   |
| Axes                   | False               | whether to draw axes                                                               |
| AxesLabel              | None                | axes labels                                                                        |
| AxesOrigin             | Automatic           | where axes should cross                                                            |
| AxesStyle              | {}                  | style specifications for the axes                                                  |
| Background             | None                | background color for the plot                                                      |
| BaselinePosition       | Automatic           | how to align with a surrounding text baseline                                      |
| BaseStyle              | {}                  | base style specifications for the graphic                                          |
| BubbleScale            | "Area"              | feature scale used for bubbles                                                     |
| BubbleSizes            | Automatic           | size range to use for bubbles                                                      |
| ChartBaseStyle         | Automatic           | overall style for bubbles                                                          |
| ChartElementFunction   | Automatic           | how to generate raw graphics for bubbles                                           |
| ChartElements          | Automatic           | graphics to use for each of the bubbles                                            |
| ChartLabels            | None                | labels for data elements and datasets                                              |
| ChartLegends           | None                | legends for data elements and datasets                                             |
| ChartStyle             | Automatic           | style for bubbles                                                                  |
| ColorFunction          | Automatic           | how to color bubbles                                                               |
| ColorFunctionScaling   | True                | whether to normalize arguments to ColorFunction                                    |
| ContentSelectable      | Automatic           | whether to allow contents to be selected                                           |
| CoordinatesToolOptions | Automatic           | detailed behavior of the coordinates tool                                          |
| Epilog                 | {}                  | primitives rendered after the main plot                                            |
| FormatType             | TraditionalForm     | the default format type for text                                                   |
| Frame                  | True                | whether to draw a frame around the chart                                           |
| FrameLabel             | None                | frame labels                                                                       |
| FrameStyle             | {}                  | style specifications for the frame                                                 |
| FrameTicks             | Automatic           | frame ticks                                                                        |
| FrameTicksStyle        | {}                  | style specifications for frame ticks                                               |
| GridLines              | None                | grid lines to draw                                                                 |
| GridLinesStyle         | {}                  | style specifications for grid lines                                                |
| ImageMargins           | 0.                  | the margins to leave around the graphic                                            |
| ImagePadding           | All                 | what extra padding to allow for labels etc.                                        |
| ImageSize              | Automatic           | the absolute size at which to render the graphic                                   |
| LabelingFunction       | Automatic           | how to label bubbles                                                               |
| LabelingSize           | Automatic           | maximum size of callouts and labels                                                |
| LabelingTarget         | Automatic           | how to determine automatic label positions                                         |
| LabelStyle             | {}                  | style specifications for labels                                                    |
| LegendAppearance       | Automatic           | overall appearance of legends                                                      |
| Method                 | Automatic           | details of graphics methods to use                                                 |
| PerformanceGoal        | \$PerformanceGoal   | aspects of performance to try to optimize                                          |
| PlotInteractivity      | \$PlotInteractivity | whether to allow interactive elements                                              |
| PlotLabel              | None                | an overall label for the plot                                                      |
| PlotRange              | All                 | range of values to include                                                         |
| PlotRangeClipping      | False               | whether to clip at the plot range                                                  |
| PlotRangePadding       | Automatic           | how much to pad the range of values                                                |
| PlotRegion             | Automatic           | the final display region to be filled                                              |
| PlotTheme              | \$PlotTheme         | overall theme for the chart                                                        |
| PreserveImageOptions   | Automatic           | whether to preserve image options when displaying new versions of the same graphic |
| Prolog                 | {}                  | primitives rendered before the main plot                                           |
| RotateLabel            | True                | whether to rotate y labels on the frame                                            |
| ScalingFunctions       | None                | how to scale individual coordinates                                                |
| TargetUnits            | Automatic           | units to display in the chart                                                      |
| Ticks                  | Automatic           | axes ticks                                                                         |
| TicksStyle             | {}                  | style specifications for axes ticks                                                |

---

## Examples (173)

### Basic Examples (3)

Create a bubble chart for a list of triples:

```wl
In[1]:= BubbleChart[RandomReal[1, {10, 3}]]

Out[1]= [image]
```

---

Multiple datasets:

```wl
In[1]:= BubbleChart[RandomReal[1, {5, 7, 3}]]

Out[1]= [image]
```

---

Set the style for bubbles:

```wl
In[1]:= BubbleChart[RandomReal[1, {5, 7, 3}], ChartStyle -> "DarkRainbow"]

Out[1]= [image]
```

Pictorial bubbles:

```wl
In[2]:= BubbleChart[RandomReal[1, {10, 3}], ChartElements -> [image]]

Out[2]= [image]
```

Procedural bubbles:

```wl
In[3]:= BubbleChart[RandomReal[1, {10, 3}], ChartElementFunction -> "NoiseBubble"]

Out[3]= [image]
```

### Scope (32)

#### Data and Wrappers (14)

Items in a dataset are colored the same:

```wl
In[1]:= BubbleChart[{Table[{i, i, 1}, {i, 3}], Table[{i, i + 1, 1}, {i, 3}], Table[{i, i + 2, 1}, {i, 3}]}]

Out[1]= [image]
```

---

Nonreal data is taken to be missing:

```wl
In[1]:= ReplacePart[Flatten[Table[{i, j, 1}, {i, 4}, {j, 4}], 1], {2 -> Missing[], 4 -> 1 + I, 6 -> foo}]

Out[1]= {{1, 1, 1}, Missing[], {1, 3, 1}, 1 + I, {2, 1, 1}, foo, {2, 3, 1}, {2, 4, 1}, {3, 1, 1}, {3, 2, 1}, {3, 3, 1}, {3, 4, 1}, {4, 1, 1}, {4, 2, 1}, {4, 3, 1}, {4, 4, 1}}

In[2]:= BubbleChart[%, ChartLabels -> Range[16]]

Out[2]= [image]
```

---

The data may include units:

```wl
In[1]:= BubbleChart[{{Quantity[2, "Feet"], Quantity[-4, "Feet"], Quantity[14, "Feet"]}, {Quantity[6, "Feet"], Quantity[25, "Feet"], Quantity[22, "Feet"]}, {Quantity[-3, "Feet"], Quantity[17, "Feet"], Quantity[1, "Feet"]}, {Quantity[11, "Feet"], Quantity[17, "Feet"], Quantity[7, "Feet"]}, {Quantity[25, "Feet"], Quantity[-3, "Feet"], Quantity[21, "Feet"]}}, FrameLabel -> Automatic]

Out[1]= [image]
```

---

Specify the units to use:

```wl
In[1]:= BubbleChart[{{Quantity[2, "Feet"], Quantity[-4, "Feet"], Quantity[14, "Feet"]}, {Quantity[6, "Feet"], Quantity[25, "Feet"], Quantity[22, "Feet"]}, {Quantity[-3, "Feet"], Quantity[17, "Feet"], Quantity[1, "Feet"]}, {Quantity[11, "Feet"], Quantity[17, "Feet"], Quantity[7, "Feet"]}, {Quantity[25, "Feet"], Quantity[-3, "Feet"], Quantity[21, "Feet"]}}, FrameLabel -> Automatic, TargetUnits -> {"Meters", "Yards", "Inches"}]

Out[1]= [image]
```

---

The time stamps in ``TimeSeries``, ``EventSeries``, and ``TemporalData`` are ignored:

```wl
In[1]:= BubbleChart[TimeSeries[{{23, 12, 24}, {15, 3, 9}, {3, 23, 12}, {7, 11, 6}, {5, 24, 20}, {5, 17, 8}}, {"May 24, 1982"}]]

Out[1]= [image]
```

---

The values in associations are taken as bubble values:

```wl
In[1]:= BubbleChart[<|"a" -> {3, 1, 5}, "b" -> {2, 2, 4}, "c" -> {1, 2, 3}, "d" -> {2, 1.5, 8}|>]

Out[1]= [image]
```

Use the keys as labels:

```wl
In[2]:= BubbleChart[<|"a" -> {3, 1, 5}, "b" -> {2, 2, 4}, "c" -> {1, 2, 3}, "d" -> {2, 1.5, 8}|>, ChartLabels -> Automatic]

Out[2]= [image]
```

Use the keys as legends:

```wl
In[3]:= BubbleChart[<|"a" -> {3, 1, 5}, "b" -> {2, 2, 4}, "c" -> {1, 2, 3}, "d" -> {2, 1.5, 8}|>, ChartLegends -> Automatic, ChartStyle -> 66]

Out[3]= [image]
```

---

Associations can be nested down to the point level:

```wl
In[1]:= BubbleChart[<|"a" -> <|"x" -> 3, "y" -> 1, "z" -> 5|>, "b" -> <|"x" -> 2, "y" -> 2, "z" -> 4|>, "c" -> <|"x" -> 1, "y" -> 2, "z" -> 3|>|>, ChartLegends -> Automatic, ChartStyle -> 66, FrameLabel -> Automatic]

Out[1]= [image]
```

Or up to the group level:

```wl
In[2]:= BubbleChart[<|"group1" -> <|"a" -> {3, 1, 5}, "b" -> {2, 2, 4}, "c" -> {1, 2, 3}, "d" -> {2, 1.5, 8}|>, "group2" -> <|"a" -> {2, 5, 9}, "b" -> {6, 1, 3}, "c" -> {1, 3, 6}, "d" -> {3, 2, 6}|>|>, ChartLegends -> Automatic, ChartStyle -> 83]

Out[2]= [image]
```

---

The weights in ``WeightedData`` are ignored:

```wl
In[1]:= BubbleChart[WeightedData[{{23, 12, 24}, {15, 3, 9}, {3, 23, 12}, {7, 11, 6}, {5, 24, 20}, {5, 17, 8}}, {0.4, 0.2, 0.6, 0.3, 0.4, 0.3}]]

Out[1]= [image]
```

---

Use wrappers on individual data, datasets, or collections of datasets:

```wl
In[1]:=
{d1, d2, d3} = {{1, 2, 1}, {2, 2, 1}, {3, 2, 1}};
{e1, e2, e3} = {{1, 1, 1}, {2, 1, 1}, {3, 1, 1}};

In[2]:= {BubbleChart[{{d1, Style[d2, Red], d3}, {e1, e2, e3}}], BubbleChart[{Style[{d1, d2, d3}, Red], {e1, e2, e3}}], BubbleChart[Style[{{d1, d2, d3}, {e1, e2, e3}}, Red]]}

Out[2]= {[image], [image], [image]}
```

---

Wrappers can be nested:

```wl
In[1]:=
{d1, d2, d3} = {{1, 2, 1}, {2, 2, 1}, {3, 2, 1}};
{e1, e2, e3} = {{1, 1, 1}, {2, 1, 1}, {3, 1, 1}};

In[2]:= {BubbleChart[{{d1, Style[d2, Red], d3}, {e1, e2, e3}}, ChartStyle -> Gray], BubbleChart[{Style[{d1, Style[d2, Red], d3}, Green], {e1, e2, e3}}, ChartStyle -> Gray], BubbleChart[Style[{Style[{d1, Style[d2, Red], d3}, Green], {e1, e2, e3}}, Blue], ChartStyle -> Gray]}

Out[2]= {[image], [image], [image]}
```

---

Override the default tooltips:

```wl
In[1]:= BubbleChart[{{1, 2, 1}, Tooltip[{1, 1, 2}, "median"], {2, 3, 3}}, BubbleSizes -> {0.2, 0.7}]

Out[1]= [image]
```

---

Use any object in the tooltip:

```wl
In[1]:= data = Table[Tooltip[{CountryData[c, #]& /@ {"LifeExpectancy", "GDPPerCapita", "Population"}}, CountryData[c, "Flag"]], {c, CountryData["G8"]}];

In[2]:= BubbleChart[data]

Out[2]= [image]
```

---

Use ``PopupWindow`` to provide additional drilldown information:

```wl
In[1]:= BubbleChart[{{1, 2, 2}, {1, 1, 1}, PopupWindow[{2, 3, 3}, DateListPlot[FinancialData["IBM", "Jan. 1, 2004"]]]}, BubbleSizes -> {0.2, 0.7}]

Out[1]= [image]
```

---

``Button`` can be used to trigger any action:

```wl
In[1]:= BubbleChart[{{1, 2, 2}, {1, 1, 1}, Button[{2, 3, 3}, Speak[2]]}, BubbleSizes -> {0.2, 0.7}]

Out[1]= [image]
```

#### Tabular Data (1)

Get tabular data:

```wl
In[1]:= cars = ResourceData["Sample Tabular Data: Car Models"]

Out[1]=
Tabular[Association["RawSchema" -> Association["ColumnProperties" -> 
     Association["name" -> Association["ElementType" -> "String"], 
      "origin" -> Association["ElementType" -> TypeSpecifier["Categorical"][
          TabularColumn[Associati ... ementType" -> TypeSpecifier["Quantity"]["Integer64", "Pounds"]]], 
        TabularColumn[Association["Data" -> {398, {{CompressedData["«969»"], {}, None}}, None}, "ElementType" -> TypeSpecifier["Quantity"][
            "Real64", "Seconds"]]]}}]]]]
```

Plot horsepower against displacement, with bubbles sized according to the mileage:

```wl
In[2]:= BubbleChart[cars -> {"displacement", "horsepower", "mpg"}]

Out[2]= [image]
```

Pivot the data to create columns of mileage per region:

```wl
In[3]:= pivot = PivotToColumns[cars, "origin" -> "mpg"]

Out[3]=
Tabular[Association["RawSchema" -> Association["ColumnProperties" -> 
     Association["name" -> Association["ElementType" -> "String"], 
      "model_year" -> Association["ElementType" -> "Integer64"], 
      "cylinders" -> Association["ElementTyp ... "], {}, 
            DataStructure["BitVector", {"Data" -> ByteArray[
                "AAD4AAAAnAgA8AAAQADkBQDgmAAAkN4EIIgKBAACFQAAAHwAIAohIOCVAACGAYAAAMQ="], 
              "Capacity" -> 398, "BitCount" -> 70}]}, "ElementType" -> "Real64"]]}}]]]]
```

Plot the data by region of origin:

```wl
In[4]:= BubbleChart[pivot -> {{"displacement", "horsepower", ExtendedKey["mpg", "europe"]}, {"displacement", "horsepower", ExtendedKey["mpg", "japan"]}, {"displacement", "horsepower", ExtendedKey["mpg", "usa"]}}, ChartLegends -> {"Europe", "Japan", "USA"}]

Out[4]= [image]
```

#### Styling and Appearance (8)

Use an explicit list of styles for the bubbles:

```wl
In[1]:= BubbleChart[RandomReal[1, {3, 5, 3}], ChartStyle -> {Red, Green, Blue}]

Out[1]= [image]
```

---

Use any gradient or indexed color schemes from ``ColorData``:

```wl
In[1]:= {BubbleChart[RandomReal[1, {3, 5, 3}], ChartStyle -> "Pastel"], BubbleChart[RandomReal[1, {3, 5, 3}], ChartStyle -> 12]}

Out[1]= {[image], [image]}
```

---

Use color schemes designed for charting:

```wl
In[1]:= ColorData["Charting"]

Out[1]= {44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114}

In[2]:= Table[BubbleChart[RandomReal[1, {12, 1, 3}], ChartStyle -> i, FrameTicks -> None], {i, ColorData["Charting"][[1 ;; 4]]}]

Out[2]= {[image], [image], [image], [image]}
```

---

``ChartBaseStyle`` can be used to set an initial style for all chart elements:

```wl
In[1]:= BubbleChart[{{1, 2, 2}, {1, 1, 1}, {2, 3, 3}}, ChartBaseStyle -> EdgeForm[Dashed], ChartStyle -> 45, BubbleSizes -> {0.2, 0.7}]

Out[1]= [image]
```

---

``Style`` can be used to override styles:

```wl
In[1]:= BubbleChart[{{1, 2, 2}, {1, 1, 1}, Style[{2, 3, 3}, Red], {3, 4, 1}}, ChartStyle -> Gray, BubbleSizes -> {0.2, 0.7}]

Out[1]= [image]
```

---

Use any graphic for pictorial bubbles:

```wl
In[1]:= BubbleChart[{{1, 2, 2}, {1, 1, 1}, {2, 3, 3}}, ChartElements -> Graphics3D[Cylinder[], Boxed -> False], BubbleSizes -> {0.2, 0.7}]

Out[1]= [image]
```

---

Use built-in programmatically generated bubbles:

```wl
In[1]:= ChartElementData["BubbleChart"]

Out[1]= {"Bubble", "FadingBubble", "GradientBubble", "MarkerBubble", "NoiseBubble", "OscillatingBubble", "PolyhedronBubble", "SphereBubble", "SquareWaveBubble", "TriangleWaveBubble"}

In[2]:= Table[BubbleChart[{{1, 2, 2}, {1, 1, 1}, {2, 3, 3}}, ChartElementFunction -> f, ChartStyle -> "Pastel", BubbleSizes -> {0.2, 0.7}], {f, {"PolyhedronBubble", "MarkerBubble"}}]

Out[2]= {[image], [image]}
```

For detailed settings, use Palettes ▶ ChartElementSchemes :

```wl
In[3]:= BubbleChart[{{1, 2, 2}, {1, 1, 1}, {2, 3, 3}}, ChartElementFunction -> ChartElementDataFunction["Bubble", "Shape" -> "Hexagon"], BubbleSizes -> {0.2, 0.7}]

Out[3]= [image]
```

---

Use a theme with simple ticks and grid lines in a bright color scheme:

```wl
In[1]:= BubbleChart[RandomReal[1, {3, 3, 3}], PlotTheme -> "Business"]

Out[1]= [image]
```

Use a theme with a high contrast color scheme and 3D bubbles:

```wl
In[2]:= BubbleChart[RandomReal[1, {3, 3, 3}], PlotTheme -> "Marketing"]

Out[2]= [image]
```

#### Labeling and Legending (9)

Use ``Labeled`` to add a label to a bubble:

```wl
In[1]:= BubbleChart[{{1, 2, 1}, Labeled[{1, 1, 2}, "label", Left], {2, 3, 3}}, BubbleSizes -> {0.2, 0.7}]

Out[1]= [image]
```

---

Use symbolic positions for label placement:

```wl
In[1]:= Table[BubbleChart[{{1, 2, 2}, Labeled[{2, 3, 3}, "label", p], {1, 1, 1}}, BubbleSizes -> {0.2, 0.7}, PlotLabel -> p, Ticks -> None], {p, {Bottom, Center, Top}}]

Out[1]= {[image], [image], [image]}
```

---

Use ``Placed`` to control the positioning of labels, using the same positions as for ``Labeled``:

```wl
In[1]:= BubbleChart[{{{2, 1, 1}, {1, 1, 1}}, {{1, 2, 2}, {2, 3, 3}}}, ChartLabels -> Placed[{"c1", "c2"}, Center], BubbleSizes -> {0.2, 0.7}]

Out[1]= [image]
```

---

Provide value labels for bubbles by using ``LabelingFunction`` :

```wl
In[1]:= labeler[v_, {i_, j_}, {ri_, cj_}] := Placed[{v, ri[[1]], cj[[1]]}, Tooltip, MatrixForm]

In[2]:= BubbleChart[{{{2, 3, 3}, {1, 2, 2}, {1, 1, 1}}, {{1, 3, 2}, {2, 1, 1}}}, ChartLabels -> {{"r1", "r2"}, {"c1", "c2", "c3"}}, FrameTicks -> None, BubbleSizes -> {0.2, 0.7}, LabelingFunction -> labeler]

Out[2]= [image]
```

---

Specify the maximum size of labels:

```wl
In[1]:= data = Table[Callout[RandomReal[1, 3], RandomWord[]], {i, 20}];

In[2]:= BubbleChart[data, LabelingSize -> 30]

Out[2]= [image]
```

Use the full label:

```wl
In[3]:= BubbleChart[data, LabelingSize -> Full]

Out[3]= [image]
```

---

For dense sets of points, some labels may be turned into tooltips by default:

```wl
In[1]:= data = Table[Callout[RandomReal[1, 3], RandomWord[]], {i, 100}];

In[2]:= BubbleChart[data]

Out[2]= [image]
```

Increasing the size of the plot will show more labels:

```wl
In[3]:= BubbleChart[data, ImageSize -> 400]

Out[3]= [image]
```

---

Use legend entries for different datasets:

```wl
In[1]:= data = RandomReal[1, {7, 3}];

In[2]:= BubbleChart[{data, data + 1}, ChartLegends -> {"data1", "data2"}, ChartStyle -> "Pastel"]

Out[2]= [image]
```

---

Use ``Legended`` to add additional legend entries:

```wl
In[1]:= BubbleChart[{{{2, 3, 3}, Legended[Style[{1, 2, 2}, Yellow], "extra"], {1, 1, 1}}, {{1, 3, 2}, {2, 1, 1}}}, ChartLegends -> {"data1", "data2"}, ChartStyle -> "Pastel"]

Out[1]= [image]
```

---

Use ``Placed`` to affect the positioning of legends:

```wl
In[1]:= data = RandomReal[1, {7, 3}];

In[2]:= Table[BubbleChart[{data, data + 1}, ChartLegends -> Placed[{"data1", "data2"}, p], ChartStyle -> "Pastel"], {p, {Below, Above}}]

Out[2]= [image]
```

### Options (129)

#### AspectRatio (3)

By default, ``BubbleChart`` uses the same width and height:

```wl
In[1]:= BubbleChart[IconizedObject[«data»]]

Out[1]= [image]
```

---

Use a numerical value to specify the height to width ratio:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], AspectRatio -> 1 / 2]

Out[1]= [image]
```

---

``AspectRatio -> Automatic`` determines the range from the values:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], AspectRatio -> Automatic]

Out[1]= [image]
```

#### Axes (3)

By default, ``BubbleChart`` uses a frame instead of axes:

```wl
In[1]:= BubbleChart[IconizedObject[«data»]]

Out[1]= [image]
```

---

Use axes instead of a frame:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True]

Out[1]= [image]
```

---

Turn each axis on individually:

```wl
In[1]:= {BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> {True, False}], BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> {False, True}]}

Out[1]= {[image], [image]}
```

#### AxesLabel (4)

No axes labels are drawn by default:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True]

Out[1]= [image]
```

---

Place a label on the $y$ axis:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, AxesLabel -> "Y-axis"]

Out[1]= [image]
```

---

Specify axes labels:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, AxesLabel -> {"x position", "y position"}]

Out[1]= [image]
```

---

Use units as labels:

```wl
In[1]:= BubbleChart[QuantityArray[IconizedObject[«data»], "Meters"], Frame -> False, Axes -> True, AxesLabel -> Automatic]

Out[1]= [image]
```

#### AxesOrigin (2)

The position of the axes is determined automatically:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True]

Out[1]= [image]
```

---

Specify an explicit origin for the axes:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, AxesOrigin -> {1, 0}]

Out[1]= [image]
```

#### AxesStyle (4)

Change the style for the axes:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, AxesStyle -> Red]

Out[1]= [image]
```

---

Specify the style of each axis:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, AxesStyle -> {{Thick, Red}, {Thick, Blue}}]

Out[1]= [image]
```

---

Use different styles for the ticks and the axes:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, AxesStyle -> Green, TicksStyle -> Black]

Out[1]= [image]
```

---

Use different styles for the labels and the axes:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, AxesStyle -> Green, LabelStyle -> Red]

Out[1]= [image]
```

#### BubbleScale (2)

By default, the area of a bubble is proportional to the ``z`` value:

```wl
In[1]:= BubbleChart[RandomReal[1, {3, 3, 3}], BubbleSizes -> {0.1, 0.4}, BubbleScale -> "Diameter"]

Out[1]= [image]
```

---

Compare area scale to diameter scale:

```wl
In[1]:= data = Table[{i, i, i}, {i, 10}];

In[2]:= Table[BubbleChart[data, BubbleSizes -> {0.1, 0.4}, BubbleScale -> scale, PlotLabel -> scale], {scale, {"Area", "Diameter"}}]

Out[2]= {[image], [image]}
```

#### BubbleSizes (1)

Change the size range of the bubbles:

```wl
In[1]:= data = Table[{i, i, i}, {i, 5}];

In[2]:= Table[BubbleChart[data, BubbleSizes -> {0.1, smax}, PlotLabel -> {0.1, smax}], {smax, {0.2, 0.3, 0.5}}]

Out[2]= {[image], [image], [image]}
```

#### ChartBaseStyle (5)

Use ``ChartBaseStyle`` to style all bubbles:

```wl
In[1]:= data = RandomReal[1, {3, 4, 3}];

In[2]:= Table[BubbleChart[data, ChartBaseStyle -> s], {s, {EdgeForm[Dashed], Opacity[0.7]}}]

Out[2]= {[image], [image]}
```

---

``ChartBaseStyle`` combines with ``ChartStyle``:

```wl
In[1]:= BubbleChart[RandomReal[1, {5, 4, 3}], ChartStyle -> 24, ChartBaseStyle -> EdgeForm[Dashed]]

Out[1]= [image]
```

---

``ChartStyle`` may override settings for ``ChartBaseStyle``:

```wl
In[1]:= BubbleChart[RandomReal[1, {5, 4, 3}], ChartStyle -> EdgeForm[None], ChartBaseStyle -> EdgeForm[Thick]]

Out[1]= [image]
```

---

``ChartBaseStyle`` combines with ``Style``:

```wl
In[1]:= BubbleChart[{{1, 0, 1}, Style[{0, 1, 2}, Yellow], {2, 2, 3}}, ChartBaseStyle -> EdgeForm[Dashed], BubbleSizes -> {0.2, 0.5}]

Out[1]= [image]
```

``Style`` may override settings for ``ChartBaseStyle`` :

```wl
In[2]:= BubbleChart[{{1, 0, 1}, Style[{0, 1, 2}, EdgeForm[None]], {2, 2, 3}}, ChartBaseStyle -> EdgeForm[Dashed], BubbleSizes -> {0.2, 0.5}]

Out[2]= [image]
```

---

``ChartBaseStyle`` combines with ``ColorFunction`` :

```wl
In[1]:= BubbleChart[{{1, 0, 1}, {0, 1, 2}, {2, 2, 3}}, ChartBaseStyle -> EdgeForm[Dashed], ColorFunction -> Function[{x, y}, ColorData["Pastel"][x * y]], BubbleSizes -> {0.2, 0.5}]

Out[1]= [image]
```

``ColorFunction`` may override settings for ``ChartBaseStyle`` :

```wl
In[2]:= BubbleChart[{{1, 0, 1}, {0, 1, 2}, {2, 2, 3}}, ChartBaseStyle -> EdgeForm[Dashed], ColorFunction -> (EdgeForm[None]&), BubbleSizes -> {0.2, 0.5}]

Out[2]= [image]
```

#### ChartElementFunction (5)

Get a list of built-in settings for ``ChartElementFunction``:

```wl
In[1]:= ChartElementData["BubbleChart"]

Out[1]= {"Bubble", "FadingBubble", "GradientBubble", "MarkerBubble", "NoiseBubble", "OscillatingBubble", "PolyhedronBubble", "SphereBubble", "SquareWaveBubble", "TriangleWaveBubble"}
```

---

For more settings, use Palettes ▶ ChartElementSchemes :

```wl
In[1]:= data = {{1, 0, 1}, {0, 1, 2}, {1, 2, 3}};

In[2]:= Table[BubbleChart[data, ChartElementFunction -> f, ChartStyle -> "Pastel", PlotLabel -> f], {f, {"Bubble", "MarkerBubble"}}]

Out[2]= {[image], [image]}

In[3]:= Table[BubbleChart[data, ChartElementFunction -> f, ChartStyle -> "Pastel", PlotLabel -> f], {f, {"SphereBubble", "PolyhedronBubble"}}]

Out[3]= {[image], [image]}

In[4]:= Table[BubbleChart[data, ChartElementFunction -> f, ChartStyle -> "Pastel", PlotLabel -> f], {f, {"NoiseBubble", "OscillatingBubble"}}]

Out[4]= {[image], [image]}
```

---

Write a custom ``ChartElementFunction``:

```wl
In[1]:=
f[{{xmin_, xmax_}, {ymin_, ymax_}}, v_, meta_, style___] := 
	{Rectangle[{xmin, ymin}, {xmax, ymax}]}

In[2]:= BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, ChartElementFunction -> f]

Out[2]= [image]

In[3]:=
g[{{xmin_, xmax_}, {ymin_, ymax_}}, v_, meta_, style___] := 
	Polygon[{{xmin, ymin}, {xmax, ymax}, {xmin, ymax}, {xmax, ymin}}]

In[4]:= BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, ChartElementFunction -> g]

Out[4]= [image]
```

---

Use metadata passed on from the input, in this case charting the data:

```wl
In[1]:=
DataDrilldownBubble[{{xmin_, xmax_}, {ymin_, ymax_}}, v_, {meta_}, style___] := 
	PopupWindow[Polygon[{{xmin, ymin}, {xmax, ymax}, {xmin, ymax}, {xmax, ymin}}], PieChart[meta]]

In[2]:=
DataDrilldownBubble[{{xmin_, xmax_}, {ymin_, ymax_}}, y_, ___] := 
	Rectangle[{xmin, ymin}, {xmax, ymax}]

In[3]:= BubbleChart[{{1, 0, 1} -> Range[5], {0, 1, 2}, {1, 2, 3} -> RandomReal[1, 10]}, ChartElementFunction -> DataDrilldownBubble]

Out[3]= [image]
```

---

The built-in element function may have options; use Palettes ▶ ChartElementSchemes to set them:

```wl
In[1]:= ChartElementData["MarkerBubble", "Options"]

Out[1]= {"Shape" -> "CirclePlus", "Filled" -> True}

In[2]:= Table[BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, ChartElementFunction -> ChartElementDataFunction["MarkerBubble", "Shape" -> s, "Filled" -> True]], {s, {"CircleTimes", "Diamond"}}]

Out[2]= {[image], [image]}
```

#### ChartElements (5)

Create a pictorial chart based on any ``Graphics`` object:

```wl
In[1]:= data = RandomReal[1, {7, 3}];

In[2]:= BubbleChart[data, ChartElements -> Graphics[Rectangle[]]]

Out[2]= [image]
```

``Graphics3D``:

```wl
In[3]:= BubbleChart[data, ChartElements -> Graphics3D[Sphere[]]]

Out[3]= [image]
```

``Image``:

```wl
In[4]:= BubbleChart[data, ChartElements -> ExampleData[{"TestImage", "House"}]]

Out[4]= [image]
```

---

Use a different graphic for each dataset:

```wl
In[1]:= data = {{{1, 0, 3}, {0, 1, 2}, {1, 2, 3}}, {{5, 4, 5}, {4, 5, 6}, {5, 6, 5}}};

In[2]:= BubbleChart[data, ChartElements -> {[image], [image]}]

Out[2]= [image]
```

---

Graphics are used cyclically:

```wl
In[1]:= BubbleChart[{{1, 1, 1}, {2, 2, 1}, {3, 3, 1}, {4, 4, 1}, {5, 5, 1}}, ChartElements -> {[image], [image], [image]}]

Out[1]= [image]
```

---

Styles are inherited from styles set through ``ChartStyle`` etc.:

```wl
In[1]:= BubbleChart[RandomReal[1, {10, 3}], ChartElements -> [image], ChartStyle -> "Pastel"]

Out[1]= [image]
```

Explicit styles set in the graphic will override other style settings:

```wl
In[2]:= BubbleChart[RandomReal[1, {10, 3}], ChartElements -> [image], ChartStyle -> "Pastel"]

Out[2]= [image]
```

---

Create true 3D shaded bubbles:

```wl
In[1]:= g = Graphics3D[{Specularity[White, 30], Sphere[]}, ViewPoint -> {0, -Infinity, 0}, Boxed -> False, Lighting -> "Neutral"];

In[2]:= BubbleChart[RandomReal[1, {10, 3}], ChartElements -> g, ChartStyle -> 54]

Out[2]= [image]
```

#### ChartLabels (7)

By default, labels are placed in the bubbles:

```wl
In[1]:= BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, ChartLabels -> {"a", "b", "c"}, BubbleSizes -> {0.2, 0.7}]

Out[1]= [image]
```

``Labeled`` wrappers in data will place additional labels:

```wl
In[2]:= BubbleChart[{{1, 0, 1}, Labeled[{0, 1, 2}, "label", Below], {1, 2, 3}}, ChartLabels -> {"a", "b", "c"}, BubbleSizes -> {0.2, 0.7}]

Out[2]= [image]
```

---

Use ``Placed`` to control label placement:

```wl
In[1]:= Table[BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, BubbleSizes -> {0.2, 0.7}, ChartLabels -> Placed[{"aaa", "bbb", "ccc"}, p], PlotLabel -> p, Ticks -> None], {p, {Bottom, Center, Top}}]

Out[1]= {[image], [image], [image]}
```

---

Coordinate-based placement relative to a bubble:

```wl
In[1]:= Table[BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, BubbleSizes -> {0.2, 0.7}, ChartLabels -> Placed[{"aaa", "bbb", "ccc"}, p], Ticks -> None, PlotLabel -> p], {p, {{0, 0}, {1 / 2, 1 / 2}, {1, 1}}}]

Out[1]= {[image], [image], [image]}
```

---

Place all labels at the center of each bubble and vary the coordinates within the label:

```wl
In[1]:= Table[BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, BubbleSizes -> {0.2, 0.7}, ChartLabels -> Placed[Framed /@ {"aaa", "bbb", "ccc"}, {{0.5, 0.5}, p}], Ticks -> None, PlotLabel -> p], {p, {{0, 0}, {1 / 2, 1 / 2}, {1, 1}}}]

Out[1]= {[image], [image], [image]}
```

---

Use the third argument to ``Placed`` to control formatting:

```wl
In[1]:= BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, BubbleSizes -> {0.2, 0.7}, ChartLabels -> Placed[{"aaa", "bbb", "ccc"}, Center, Rotate[#, 45Degree]&]]

Out[1]= [image]
```

Use a hyperlink label:

```wl
In[2]:= BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, BubbleSizes -> {0.2, 0.7}, ChartLabels -> Placed[{"aaa", "bbb", "ccc"}, Center, Hyperlink[#, "http://www.wolfram.com"]&]]

Out[2]= [image]
```

---

Use ``Callout`` to connect the labels to the bubbles:

```wl
In[1]:= BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, BubbleSizes -> {0.2, 0.5}, ChartLabels -> Callout[{"aaa", "bbb", "ccc"}, Above, Automatic]]

Out[1]= [image]
```

---

Place multiple labels:

```wl
In[1]:= BubbleChart[{{1, 0, 3}, {0, 1, 2}, {1, 2, 3}}, BubbleSizes -> {0.2, 0.7}, ChartLabels -> Placed[{{"a", "b", "c"}, {"x", "y", "z"}}, {Top, Bottom}]]

Out[1]= [image]
```

#### ChartLegends (7)

Generate a legend based on chart style:

```wl
In[1]:= BubbleChart[RandomReal[1, {3, 10, 3}], ChartStyle -> "Pastel", ChartLegends -> {"John", "Mary", "Bob"}]

Out[1]= [image]
```

---

Use ``Legended`` to add additional legend entries:

```wl
In[1]:= BubbleChart[{{1, 0, 1}, Legended[{0, 1, 2}, "American"], {1, 2, 3}}, ChartStyle -> "Pastel", ChartLegends -> {"John", "Mary", "Bob"}]

Out[1]= [image]
```

---

Use ``Legended`` to specify individual legend entries:

```wl
In[1]:= BubbleChart[{{1, 0, 1}, Legended[{0, 1, 2}, "Mary"], {1, 2, 3}}, ChartStyle -> "Pastel"]

Out[1]= [image]
```

---

Generate a legend for datasets:

```wl
In[1]:= data = RandomReal[1, {7, 3}];

In[2]:= BubbleChart[{data, data + 1}, ChartLegends -> {{"Group A", "Group B"}, None}, ChartStyle -> {"Pastel", None}]

Out[2]= [image]
```

---

Unused legend labels are dropped:

```wl
In[1]:= data = RandomReal[1, {7, 3}];

In[2]:= BubbleChart[{data, data + 1}, ChartLegends -> {{"Group A", "Group B", "Group C"}, None}, ChartStyle -> {"Pastel", None}]

Out[2]= [image]
```

---

Legends can be applied to several dimensions:

```wl
In[1]:= data = RandomReal[1, {7, 3}];

In[2]:= BubbleChart[{data, data + 1}, ChartLegends -> {{"Test A", "Test B"}, {"John", "Mary", "Bob"}}, ChartStyle -> {{EdgeForm[Thickness@0.01], EdgeForm@Dashed}, "Pastel"}]

Out[2]= [image]
```

---

Use ``Placed`` to control the placement of legends:

```wl
In[1]:= data = RandomReal[1, {3, 7, 3}];

In[2]:= Table[BubbleChart[data, ChartLegends -> Placed[{"John", "Mary", "Bob"}, pos], ChartStyle -> "Pastel"], {pos, {Before, Below}}]

Out[2]= [image]
```

#### ChartStyle (14)

Use ``ChartStyle`` to set the style:

```wl
In[1]:= Table[BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ChartStyle -> s, BubbleSizes -> {0.3, 0.5}, FrameTicks -> None], {s, {Pink, EdgeForm[Dashed], Directive[Pink, EdgeForm[Dashed]]}}]

Out[1]= {[image], [image], [image]}
```

---

Give a list of styles:

```wl
In[1]:= BubbleChart[RandomReal[1, {3, 10, 3}], ChartStyle -> {Red, Green, Blue}]

Out[1]= [image]
```

---

Use ``"Gradient"`` colors from ``ColorData`` :

```wl
In[1]:= BubbleChart[RandomReal[1, {3, 10, 3}], ChartStyle -> "Pastel"]

Out[1]= [image]
```

---

Use ``"Indexed"`` colors from ``ColorData``:

```wl
In[1]:= BubbleChart[RandomReal[1, {3, 10, 3}], ChartStyle -> 24]

Out[1]= [image]
```

---

Styles are used cyclically:

```wl
In[1]:= data = Table[{i, i, i}, {i, 5}];

In[2]:= BubbleChart[data, ChartStyle -> {Red, Green}]

Out[2]= [image]
```

---

Style each column of data:

```wl
In[1]:= BubbleChart[RandomReal[1, {4, 5, 3}], ChartStyle -> {None, {Red, Green, Blue, Brown, Yellow}}]

Out[1]= [image]
```

---

Style each row of data:

```wl
In[1]:= BubbleChart[RandomReal[1, {2, 5, 3}], ChartStyle -> {{Red, Green}, None}]

Out[1]= [image]
```

---

Style both rows and columns of data:

```wl
In[1]:= BubbleChart[RandomReal[1, {2, 3, 3}], ChartStyle -> {{EdgeForm[Dotted], EdgeForm[Dashed]}, {Red, Green, Blue}}]

Out[1]= [image]
```

---

With both row and column styles, the last style may override earlier ones:

```wl
In[1]:= BubbleChart[RandomReal[1, {2, 3, 3}], ChartStyle -> {{Yellow, Magenta, White}, {Red, Green, Blue}}]

Out[1]= [image]
```

---

``Style`` overrides settings for ``ChartStyle``:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, Style[{0.1, 0.8, 2}, Yellow], {1, 2, 3}}, ChartStyle -> Blue]

Out[1]= [image]
```

---

``Style`` may combine with ``ChartStyle`` :

```wl
In[1]:= BubbleChart[{{0, 0, 1}, Style[{0.1, 0.8, 2}, EdgeForm[Dashed]], {1, 2, 3}}, ChartStyle -> "Pastel"]

Out[1]= [image]
```

---

``ColorFunction`` overrides settings for ``ChartStyle``:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ChartStyle -> Green, ColorFunction -> "SolarColors"]

Out[1]= [image]
```

---

``ColorFunction`` may combine with ``ChartStyle`` :

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ChartStyle -> EdgeForm /@ {None, Dashed, Dotted}, ColorFunction -> "SolarColors"]

Out[1]= [image]
```

---

``ChartElements`` may override settings for ``ChartStyle``:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ChartStyle -> Green, ChartElements -> [image]]

Out[1]= [image]
```

#### ColorFunction (3)

Color by $x$ coordinate value:

```wl
In[1]:= BubbleChart[RandomInteger[100, {2, 70, 3}], ColorFunction -> Function[{x, y, r}, Lighter[Green, x]]]

Out[1]= [image]
```

---

Use ``ColorFunctionScaling -> False`` to get unscaled height values:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ColorFunction -> Function[{x, y, r}, Switch[{x, y, r}, {0, 0, 1}, Yellow, {0.1, 0.8, 2}, Orange, {1, 2, 3}, Red]], ColorFunctionScaling -> False]

Out[1]= [image]
```

---

``ColorFunction`` overrides styles in ``ChartStyle``:

```wl
In[1]:= data = {{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}};

In[2]:= BubbleChart[data, ChartStyle -> Green, ColorFunction -> "SolarColors"]

Out[2]= [image]
```

Use ``ColorFunction`` to combine different style effects:

```wl
In[3]:= BubbleChart[data, ChartStyle -> EdgeForm /@ {None, Dashed, Dotted}, ColorFunction -> "SolarColors"]

Out[3]= [image]
```

#### ColorFunctionScaling (2)

By default, scaled values are used:

```wl
In[1]:= BubbleChart[RandomInteger[100, {2, 70, 3}], ColorFunction -> Function[{x, y, r}, Lighter[Green, x]]]

Out[1]= [image]
```

---

Use ``ColorFunctionScaling -> False`` to get unscaled height values:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ColorFunction -> Function[{x, y, r}, Switch[{x, y, r}, {0, 0, 1}, Yellow, {0.1, 0.8, 2}, Orange, {1, 2, 3}, Red]], ColorFunctionScaling -> False]

Out[1]= [image]
```

#### Frame (4)

``BubbleChart`` uses a frame by default:

```wl
In[1]:= BubbleChart[IconizedObject[«data»]]

Out[1]= [image]
```

---

Use ``Frame -> False`` to turn off the frame:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False]

Out[1]= [image]
```

---

Draw a frame on the left and right edges:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> {{True, True}, {False, False}}]

Out[1]= [image]
```

---

Draw a frame on the left and bottom edges:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> {{True, False}, {True, False}}]

Out[1]= [image]
```

#### FrameLabel (4)

Place a label along the bottom edge of a chart:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameLabel -> {"label"}]

Out[1]= [image]
```

---

Frame labels are placed on the bottom and left frame edges by default:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameLabel -> {"Bottom", "Left"}]

Out[1]= [image]
```

---

Place labels on each of the edges in the frame:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameLabel -> {{"left", "right"}, {"bottom", "top"}}]

Out[1]= [image]
```

---

Use a customized style for both labels and frame tick labels:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameLabel -> {{"left", "right"}, {"bottom", "top"}}, LabelStyle -> Directive[Bold, Black]]

Out[1]= [image]
```

#### FrameStyle (2)

Specify the style of the frame:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameStyle -> Directive[Black, Thick]]

Out[1]= [image]
```

---

Specify style for each frame edge:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameStyle -> {{Directive[Black, Thick], Directive[Red]}, {Directive[Gray, Thick], Directive[Blue]}}]

Out[1]= [image]
```

#### FrameTicks (7)

Frame ticks are placed automatically by default:

```wl
In[1]:= BubbleChart[IconizedObject[«data»]]

Out[1]= [image]
```

---

By default, the top and right edges have tick marks but no tick labels:

```wl
In[1]:= BubbleChart[IconizedObject[«data»]]

Out[1]= [image]
```

---

Use ``All`` to include tick labels on all edges:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameTicks -> All]

Out[1]= [image]
```

---

Place tick marks at the specified positions:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameTicks -> {{{.1, .5, .8}, Automatic}, {Automatic, Automatic}}]

Out[1]= [image]
```

---

Draw frame tick marks at the specified positions with specific labels:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameTicks -> {{{{.1, a}, {.5, b}, {.8, c}}, Automatic}, {{{.1, a}, {.5, b}, {.8, c}}, Automatic}}]

Out[1]= [image]
```

---

Specify tick length as a fraction of the size of the chart:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameTicks -> {{{{.1, a, .1}, {.5, b, .1}, {.8, c, .1}}, Automatic}, {{{.1, a, .2}, {.5, b, .2}, {.8, c, .2}}, Automatic}}]

Out[1]= [image]
```

Use different sizes in the positive and negative directions for tick marks:

```wl
In[2]:= BubbleChart[IconizedObject[«data»], FrameTicks -> {{{{.1, a, {.1, .1}}, {.5, b, {.1, .1}}, {.8, c, {.1, .1}}}, Automatic}, {{{.1, a, {.2, .05}}, {.5, b, {.2, .05}}, {.8, c, {.2, .05}}}, Automatic}}]

Out[2]= [image]
```

---

Specify a style for the frame tick:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameTicks -> {{{{.1, a, {.1, .1}, Directive[Thick, Blue, Dashed]}, {.5, b, {.1, .1}, Directive[Thick, Green]}, {.8, c, {.1, .1}, Directive[Thick, Red]}}, Automatic}, {Automatic, Automatic}}]

Out[1]= [image]
```

#### FrameTicksStyle (3)

By default, the frame ticks and frame tick labels use the same style as the frame:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameStyle -> Directive[Red]]

Out[1]= [image]
```

---

Specify a style for the frame ticks:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameTicksStyle -> Directive[Blue, Thick], FrameStyle -> LightGray]

Out[1]= [image]
```

---

Use a different style for the ticks on each frame edge:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], FrameTicksStyle -> {{Directive[Red, Thick], Directive[Blue, Thick]}, {Directive[Black, Thick], Directive[Darker@Green, Thick]}}, FrameTicks -> All, FrameStyle -> LightGray]

Out[1]= [image]
```

#### ImageSize (7)

Use named sizes such as ``Tiny``, ``Small``, ``Medium`` and ``Large`` :

```wl
In[1]:= {BubbleChart[IconizedObject[«data»], ImageSize -> Tiny], BubbleChart[IconizedObject[«data»], ImageSize -> Small]}

Out[1]= {[image], [image]}
```

---

Specify the width of the plot:

```wl
In[1]:= {BubbleChart[IconizedObject[«data»], ImageSize -> 150], BubbleChart[IconizedObject[«data»], AspectRatio -> 1.5, ImageSize -> 150]}

Out[1]= {[image], [image]}
```

Specify the height of the plot:

```wl
In[2]:= {BubbleChart[IconizedObject[«data»], ImageSize -> {Automatic, 150}], BubbleChart[IconizedObject[«data»], AspectRatio -> 2, ImageSize -> {Automatic, 150}]}

Out[2]= {[image], [image]}
```

---

Allow the width and height to be up to a certain size:

```wl
In[1]:= {BubbleChart[IconizedObject[«data»], ImageSize -> UpTo[200]], BubbleChart[IconizedObject[«data»], AspectRatio -> 2, ImageSize -> UpTo[200]]}

Out[1]= {[image], [image]}
```

---

Specify the width and height for a graphic, padding with space if necessary:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], ImageSize -> {200, 200}, Background -> LightBlue]

Out[1]= [image]
```

Setting ``AspectRatio -> Full`` will fill the available space:

```wl
In[2]:= BubbleChart[IconizedObject[«data»], AspectRatio -> Full, ImageSize -> {200, 200}, Background -> LightBlue]

Out[2]= [image]
```

---

Use maximum sizes for the width and height:

```wl
In[1]:= {BubbleChart[IconizedObject[«data»], ImageSize -> {UpTo[150], UpTo[100]}], BubbleChart[IconizedObject[«data»], AspectRatio -> 2, ImageSize -> {UpTo[150], UpTo[100]}]}

Out[1]= {[image], [image]}
```

---

Use ``ImageSize -> Full`` to fill the available space in an object:

```wl
In[1]:= Framed[Pane[BubbleChart[IconizedObject[«data»], ImageSize -> Full, Background -> LightBlue], {200, 100}]]

Out[1]= [image]
```

---

Specify the image size as a fraction of the available space:

```wl
In[1]:= Framed[Pane[BubbleChart[IconizedObject[«data»], AspectRatio -> Full, ImageSize -> {Scaled[0.5], Scaled[0.5]}, Background -> LightBlue], {200, 100}]]

Out[1]= [image]
```

#### LabelingFunction (7)

Use automatic labeling by values through ``Tooltip`` and ``StatusArea``:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, BubbleSizes -> {0.2, 0.7}, LabelingFunction -> Automatic]

Out[1]= [image]
```

---

Do no labeling:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, BubbleSizes -> {0.2, 0.7}, LabelingFunction -> None]

Out[1]= [image]
```

---

Use ``Placed`` to control label placement:

```wl
In[1]:= Table[BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, BubbleSizes -> {0.2, 0.7}, LabelingFunction -> (Placed[#, p]&), PlotLabel -> p, Ticks -> None], {p, {Bottom, Center, Top}}]

Out[1]= {[image], [image], [image]}
```

---

Coordinate-based placement relative to a given bubble:

```wl
In[1]:= Table[BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, PlotRange -> All, BubbleSizes -> {0.2, 0.7}, LabelingFunction -> (Placed[#, p]&), PlotLabel -> p, Ticks -> None], {p, {{0, 0}, {1 / 2, 1 / 2}, {1, 1}}}]

Out[1]= {[image], [image], [image]}
```

---

Use ``Callout`` to place labels automatically:

```wl
In[1]:= BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, PlotRange -> All, BubbleSizes -> {0.2, 0.7}, LabelingFunction -> (Callout[Row[#, ","], Automatic]&)]

Out[1]= [image]
```

Use symbolic positions to place ``Callout`` labels:

```wl
In[2]:= Table[BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, PlotRange -> All, BubbleSizes -> {0.2, 0.7}, LabelingFunction -> (Callout[#, p]&)], {p, {Above, Below}}]

Out[2]= {[image], [image]}
```

---

Control the formatting of labels:

```wl
In[1]:= BubbleChart[{{1, 0, 1}, {0, 1, 2}, {1, 2, 3}}, LabelingFunction -> (Placed[#1, Tooltip, MatrixForm]&), BubbleSizes -> {0.2, 0.7}]

Out[1]= [image]
```

---

Use the given chart labels as arguments to the labeling function:

```wl
In[1]:= bubbleLabel[v : {x_, y_, w_}, level_, {r_, c_}] := Placed[Grid[{{Row[{r[[1]], c[[1]], "Fund"}, " "], SpanFromLeft}, {"Age", x}, {"Return %", y}, {"Market Cap", w}}, Frame -> All, Alignment -> Left], Tooltip]

In[2]:= data = {{{1, 11, 300}, {2, 50, 200}, {3, 20, 300}}, {{6, 20, 300}, {2, 8, 600}, {6, 16, 500}}};

In[3]:= BubbleChart[data, ChartLabels -> {{"Growth", "Value"}, Placed[{"Small-Cap", "Mid-Cap", "Large-Cap"}, None]}, LabelingFunction -> bubbleLabel]

Out[3]= [image]
```

#### LabelingSize (4)

Textual labels are shown at their actual sizes:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ChartLabels -> Callout[{"healthfulness", "obstreperous", "spectrogram"}]]

Out[1]= [image]
```

---

Image labels are automatically resized:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ChartLabels -> Callout[{[image], [image], [image]}]]

Out[1]= [image]
```

---

Specify a maximum size for textual labels:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ChartLabels -> Callout[{"healthfulness", "obstreperous", "spectrogram"}], LabelingSize -> 30]

Out[1]= [image]
```

Specify a maximum size for image labels:

```wl
In[2]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ChartLabels -> Callout[{[image], [image], [image]}], LabelingSize -> 20]

Out[2]= [image]
```

---

Show image labels at their natural sizes:

```wl
In[1]:= BubbleChart[{{0, 0, 1}, {0.1, 0.8, 2}, {1, 2, 3}}, ChartLabels -> Callout[{[image], [image], [image]}], LabelingSize -> Full]

Out[1]= [image]
```

#### LabelingTarget (7)

Labels are automatically placed to maximize readability:

```wl
In[1]:= BubbleChart[IconizedObject[«data»]]

Out[1]= [image]
```

---

Show all labels:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], LabelingTarget -> All]

Out[1]= [image]
```

---

Use a denser layout for the labels:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], LabelingTarget -> "Dense"]

Out[1]= [image]
```

---

Show the quarter of the labels that are easiest to read:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], LabelingTarget -> 0.25]

Out[1]= [image]
```

---

Only allow labels that are orthogonal to the points:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], LabelingTarget -> <|"AllowedLabelingPositions" -> "Sides"|>]

Out[1]= [image]
```

Only allow labels that are diagonal to the points:

```wl
In[2]:= BubbleChart[IconizedObject[«data»], LabelingTarget -> <|"AllowedLabelingPositions" -> "Corners"|>]

Out[2]= [image]
```

Restrict labels to be above or to the right of the points:

```wl
In[3]:= BubbleChart[IconizedObject[«data»], LabelingTarget -> <|"AllowedLabelingPositions" -> {"Right", "Top"}|>]

Out[3]= [image]
```

---

Allow labels to obscure other points:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], LabelingTarget -> <|"AllowedOverlaps" -> {"Points"}|>]

Out[1]= [image]
```

---

Allow labels to be clipped by the edges of the plot:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], LabelingTarget -> <|"AllowLabelClipping" -> True|>]

Out[1]= [image]
```

#### PerformanceGoal (1)

Generate a bubble chart with interactive highlighting:

```wl
In[1]:= data = RandomReal[1, {3, 6, 3}];

In[2]:= BubbleChart[data, PerformanceGoal -> "Quality"]

Out[2]= [image]
```

Emphasize performance by disabling interactive behaviors:

```wl
In[3]:= BubbleChart[data, PerformanceGoal -> "Speed"]

Out[3]= [image]
```

Typically, less memory is required for non-interactive charts:

```wl
In[4]:= Table[ByteCount@BubbleChart[data, PerformanceGoal -> p], {p, {"Quality", "Speed"}}]

Out[4]= {59416, 19672}
```

#### PlotInteractivity (4)

Charts with a moderate number of bubbles automatically have tooltips and mouseover effects:

```wl
In[1]:= BubbleChart[{{1, 1, 1}, {2, 2, 2}, {3, 3, 3}}]

Out[1]= [image]
```

---

Turn off all the interactive elements:

```wl
In[1]:= BubbleChart[{{1, 1, 1}, {2, 2, 2}, {3, 3, 3}}, PlotInteractivity -> False]

Out[1]= [image]
```

---

Interactive elements provided as part of the input are disabled:

```wl
In[1]:= BubbleChart[{{1, 1, 1}, {2, 2, 2}, Tooltip[{3, 3, 3}, "hello"]}, PlotInteractivity -> False]

Out[1]= [image]
```

---

Allow provided interactive elements and disable automatic ones:

```wl
In[1]:= BubbleChart[{{1, 1, 1}, {2, 2, 2}, Tooltip[{3, 3, 3}, "hello"]}, PlotInteractivity -> <|"User" -> True, "System" -> False|>]

Out[1]= [image]
```

#### PlotTheme (2)

Use a theme with simple ticks in a bold color scheme:

```wl
In[1]:= BubbleChart[RandomReal[1, {3, 4, 3}], PlotTheme -> "Web"]

Out[1]= [image]
```

---

Change the chart style:

```wl
In[1]:= BubbleChart[RandomReal[1, {3, 4, 3}], PlotTheme -> "Web", ChartStyle -> 88]

Out[1]= [image]
```

#### Ticks (6)

Ticks are placed automatically in each chart:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True]

Out[1]= [image]
```

---

Use ``Ticks -> None`` to draw axes without any tick marks:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, Ticks -> None]

Out[1]= [image]
```

---

Place tick marks at the specified positions:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, Ticks -> {{.1, .5, .8}, {.1, .5, .8}}]

Out[1]= [image]
```

---

Draw tick marks at the specified positions with specific labels:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, Ticks -> {{{.1, a}, {.5, b}, {.8, c}}, {{.1, a}, {.5, b}, {.8, c}}}]

Out[1]= [image]
```

---

Specify the lengths for ticks as a fraction of graphics size:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, Ticks -> {{{.1, a, .1}, {.5, b, .1}, {.8, c, .1}}, {{.1, a, .2}, {.5, b, .2}, {.8, c, .2}}}]

Out[1]= [image]
```

Use different sizes in the positive and negative directions for ticks:

```wl
In[2]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, Ticks -> {{{.1, a, {.1, .1}}, {.5, b, {.1, .15}}, {.8, c, {.1, .2}}}, Automatic}]

Out[2]= [image]
```

---

Specify a style for ticks:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, Ticks -> {{{.04, a, .45, Directive[Thick, Red]}, {.64, b, .35, Directive[Red]}, {.72, c, .1, Directive[Thick, Blue]}}, Automatic}]

Out[1]= [image]
```

#### TicksStyle (4)

By default, the ticks and tick labels use the same styles as the axis:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True]

Out[1]= [image]
```

---

Specify an overall ticks style, including the tick labels:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, TicksStyle -> Red]

Out[1]= [image]
```

---

Specify ticks style for each of the axes:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, TicksStyle -> {Directive[Red, Thick], Directive[Blue, Thick]}]

Out[1]= [image]
```

---

Use a different style for the tick labels and tick marks:

```wl
In[1]:= BubbleChart[IconizedObject[«data»], Frame -> False, Axes -> True, TicksStyle -> Directive[Red, Thick], LabelStyle -> Blue]

Out[1]= [image]
```

### Applications (5)

Display GDP per capita, poverty fraction and population for countries in Africa:

```wl
In[1]:=
countries = CountryData["Africa"];
properties = {"PovertyFraction", "GDPPerCapita", "Population"};
data = {#1, Log@QuantityMagnitude@#2, #3}&@@@Table[CountryData[c, p], {c, countries}, {p, properties}];
```

Define a labeling function for more complex tooltips:

```wl
In[2]:= labeler[v_, {r_, c_}, ___] := Placed[Grid[{{Style[countries[[c]], Bold, 12], SpanFromLeft}, {"Poverty", Row[{Round[100v[[1]]], "%"}]}, {"GDP Per Capita", Row[{"$", Round[Exp[v[[2]]]]}]}, {"Population", Row[{NumberForm[v[[3]] 10 ^ -6, {4, 2}], " million"}]}}, Alignment -> Left], Tooltip]
```

Mouse over the bubbles to view a country's data:

```wl
In[3]:= BubbleChart[data, ChartStyle -> 24, LabelingFunction -> labeler, FrameLabel -> {"Poverty Fraction", "Log GDP Per Capita"}]

Out[3]= [image]
```

---

Display oil data for the G15 countries using ``PieChart`` for bubbles to indicate import and export:

```wl
In[1]:=
countries = CountryData["G15"];
properties = {"OilConsumption", "OilProduction", "OilReserves", "OilExports", "OilImports"};
data = Table[CountryData[c, p], {c, countries}, {p, properties}];

In[2]:= BubbleChart[data[[All, 1 ;; 3]], ChartElements -> Table[PieChart[d, LabelingFunction -> None], {d, data[[All, 4 ;; 5]]}], BubbleSizes -> {0.05, 0.15}, ChartLabels -> Placed[countries, Tooltip], FrameLabel -> properties[[1 ;; 2]]]

Out[2]= [image]
```

---

Click the bubbles to hear the name of the country, its GDP per capita and its population:

```wl
In[1]:=
countries = CountryData["G15"];
properties = {"GDPPerCapita", "PovertyFraction", "Population"};

In[2]:= data = Table[With[{v = cp}, Button[v[[2 ;; 4]], Speak[StringJoin[ToString /@ {v[[1]], ", GDP per capita: $", Round[v[[2]]], ", Poverty Fraction: ", v[[3]], ", Population: ", Round[v[[4]]]}]]]], {cp, Table[Prepend[Table[CountryData[c, p], {p, properties}], c], {c, countries}]}];

In[3]:= BubbleChart[data, ChartStyle -> "Rainbow"]

Out[3]= [image]
```

---

Get population, weather and coordinate data of large Japanese cities:

```wl
In[1]:= data = Table[Tooltip[Flatten@{Reverse@CityData[city, "Coordinates"], CityData[city, "Population"]}, Column[{CityData[city, "Name"], WeatherData[city, "Temperature"] "°C"}]], {city, CityData[{Large, "Japan"}]}];
```

Get a map of Japan:

```wl
In[2]:= map = Graphics[{LightGray, CountryData["Japan", "Polygon"]}]

Out[2]= [image]
```

Mouse over the bubbles to get city and temperature information:

```wl
In[3]:= Show[map, BubbleChart[data, BubbleSizes -> {0.01, 0.15}, ChartStyle -> 58], PlotLabel -> Style["Current Temperature of the Largest Cities in Japan", "Title", 14]]

Out[3]= [image]
```

---

Represent clusters of elements based on three properties:

```wl
In[1]:=
properties = {"Density", "BoilingPoint", "ThermalConductivity"};
elements = Table[ElementData[z], {z, 1, 80}];
data = Table[Table[ElementData[e, p], {p, properties}] -> e, {e, elements}];
clusters = FindClusters[QuantityMagnitude[#[[1]]] -> #[[2]]& /@ data, 10];
```

Cluster the elements into groups based on the value of their properties:

In[2]:=
tooltipLabel[elem\_Entity]:=Module[{d,bPt,tc,dat},{d,bPt,tc}=dat=Table[ElementData[elem,p],{p,properties}];
Tooltip[dat,Grid[{{elem},{"Density",d,"kg/m^3"},{"BoilingPoint",bPt,"°C"},{"ThermalConductivity",tc,"W/mK"}},Alignment->Left]]]

Mouse over the bubbles to get element information:

```wl
In[3]:= BubbleChart[Table[tooltipLabel /@ d, {d, clusters}], ImageSize -> 400, ChartLegends -> Table[Row[{"Cluster ", i}], {i, Length[clusters]}], ChartStyle -> 2, FrameLabel -> properties[[1 ;; 2]]]

Out[3]= [image]
```

### Properties & Relations (2)

Use ``BubbleChart3D`` to get a 3D rendering of bubble charts:

```wl
In[1]:= {BubbleChart[{{3, 4, 4}, {3, 6, 3}, {4, 3, 5}}], BubbleChart3D[{{3, 4, 1, 4}, {3, 6, 1, 3}, {4, 3, 1, 5}}]}

Out[1]= {[image], [image]}
```

---

Use ``SectorChart3D`` and ``RectangleChart3D`` as alternative visualizations:

```wl
In[1]:= Table[f[{{3, 4, 4}, {3, 6, 3}, {4, 3, 5}}], {f, {RectangleChart3D, SectorChart3D, BubbleChart}}]

Out[1]= {[image], [image], [image]}
```

### Neat Examples (2)

```wl
In[1]:= BubbleChart[Table[{i, Mod[i ^ 2, 67], i}, {i, 300}], BubbleSizes -> {0.01, 0.05}]

Out[1]= [image]
```

---

Chartwork:

```wl
In[1]:= BubbleChart[RandomReal[1, {80, 3}], Frame -> False, PerformanceGoal -> "Speed", ChartElementFunction -> "FadingRectangle", ChartStyle -> 12, ChartBaseStyle -> EdgeForm[None]]

Out[1]= [image]
```

## See Also

* [`ListPlot`](https://reference.wolfram.com/language/ref/ListPlot.en.md)
* [`ListPlot3D`](https://reference.wolfram.com/language/ref/ListPlot3D.en.md)
* [`ListDensityPlot`](https://reference.wolfram.com/language/ref/ListDensityPlot.en.md)
* [`BubbleChart3D`](https://reference.wolfram.com/language/ref/BubbleChart3D.en.md)
* [`SectorChart`](https://reference.wolfram.com/language/ref/SectorChart.en.md)
* [`BarChart`](https://reference.wolfram.com/language/ref/BarChart.en.md)
* [`GeoBubbleChart`](https://reference.wolfram.com/language/ref/GeoBubbleChart.en.md)

## Related Guides

* [Charting and Information Visualization](https://reference.wolfram.com/language/guide/ChartingAndInformationVisualization.en.md)
* [Data Visualization](https://reference.wolfram.com/language/guide/DataVisualization.en.md)
* [Statistical Visualization](https://reference.wolfram.com/language/guide/StatisticalVisualization.en.md)
* [Spatial Point Collections](https://reference.wolfram.com/language/guide/SpatialPointCollections.en.md)
* [Tabular Visualization](https://reference.wolfram.com/language/guide/TabularVisualization.en.md)

## Related Links

* [An Elementary Introduction to the Wolfram Language: More Forms of Visualization](https://www.wolfram.com/language/elementary-introduction/24-more-forms-of-visualization.html)

## History

* [Introduced in 2008 (7.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn70.en.md) \| [Updated in 2010 (8.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn80.en.md) ▪ [2012 (9.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn90.en.md) ▪ [2014 (10.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn100.en.md) ▪ [2017 (11.1)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn111.en.md) ▪ [2018 (11.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn113.en.md) ▪ [2025 (14.2)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn142.en.md) ▪ [2025 (14.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn143.en.md)