---
title: "BubbleChart3D"
language: "en"
type: "Symbol"
summary: "BubbleChart3D[{{x1, y1, z1, u1}, {x2, y2, z2, u2}, ...}] makes a 3D bubble chart with bubbles at positions {xi, yi, zi} with sizes ui. BubbleChart3D[{..., wi[{xi, yi, zi, ui}, ...], ..., wj[{xj, yj, zj, uj}, ...], ...}] makes a 3D bubble chart with bubble features defined by the symbolic wrappers wk. BubbleChart3D[{data1, data2, ...}] makes a 3D bubble chart from multiple datasets datai."
keywords: 
- 3d bubble chart
- 3d bubble graph
- 3d bubble plot
- 3d scatter plot
- 3d business matrix
- 4d plot
- 4d chart
- 4d data
- volume chart
- volume graph
- volume plot
canonical_url: "https://reference.wolfram.com/language/ref/BubbleChart3D.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Charting and Information Visualization"
    link: "https://reference.wolfram.com/language/guide/ChartingAndInformationVisualization.en.md"
  - 
    title: "Spatial Point Collections"
    link: "https://reference.wolfram.com/language/guide/SpatialPointCollections.en.md"
related_functions: 
  - 
    title: "BubbleChart"
    link: "https://reference.wolfram.com/language/ref/BubbleChart.en.md"
  - 
    title: "ListPointPlot3D"
    link: "https://reference.wolfram.com/language/ref/ListPointPlot3D.en.md"
  - 
    title: "ListPlot3D"
    link: "https://reference.wolfram.com/language/ref/ListPlot3D.en.md"
  - 
    title: "Sphere"
    link: "https://reference.wolfram.com/language/ref/Sphere.en.md"
---
# BubbleChart3D

BubbleChart3D[{{x1, y1, z1, u1}, {x2, y2, z2, u2}, …}] makes a 3D bubble chart with bubbles at positions {xi, yi, zi} with sizes ui.

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

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

## Details and Options

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

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

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

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

* Datasets for ``BubbleChart3D`` 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              |

* ``BubbleChart3D[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, colw}                                        | plot data from columns x. y, z and w |
| {{colx1, coly1, colz1, colw1}, {colx2, coly2, colz2, colw2}, …} | 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    |
| 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 ``BubbleChart3D``, ``Labeled`` and ``Placed`` allow the following positions:

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

* ``BubbleChart3D`` has the same options as ``Graphics3D`` with the following additions and changes: []

|                       |                               |                                                      |
| --------------------- | ----------------------------- | ---------------------------------------------------- |
| Axes                  | True                          | whether to draw axes                                 |
| AxesEdge              | {{-1, -1}, {1, -1}, {-1, -1}} | on which edges to put axes                           |
| Boxed                 | {Left, Bottom, Back}          | what faces to draw on a bounding box                 |
| BoxRatios             | {1, 1, 1}                     | bounding 3D box ratios                               |
| BubbleScale           | "Volume"                      | size feature 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 the arguments for ColorFunction |
| FaceGrids             | Automatic                     | grid lines to draw on the bounding box               |
| LabelingFunction      | Automatic                     | how to label bubbles                                 |
| LegendAppearance      | Automatic                     | overall appearance of legends                        |
| Lighting              | "Neutral"                     | simulated light sources to use                       |
| 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                        |

* With the setting ``ChartElements -> g``, the graphic ``g`` will be used to form pictorial bubbles consisting of stretched versions of ``g``.

* The arguments supplied to ``ChartElementFunction`` are the bubble region ``{{xmin, xmax}, {ymin, ymax}, {zmin, zmax}}``, the values ``{xi, yi, zi, ui}``, 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["BubbleChart3D"]``.

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

* Style and other specifications from options and other constructs in ``BubbleChart3D`` 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          | Automatic                     | ratio of height to width                                                           |
| Axes                 | True                          | whether to draw axes                                                               |
| AxesEdge             | {{-1, -1}, {1, -1}, {-1, -1}} | on which edges to put axes                                                         |
| AxesLabel            | None                          | axes labels                                                                        |
| AxesOrigin           | Automatic                     | where axes should cross                                                            |
| AxesStyle            | {}                            | graphics directives to specify the style for 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                                          |
| Boxed                | {Left, Bottom, Back}          | what faces to draw on a bounding box                                               |
| BoxRatios            | {1, 1, 1}                     | bounding 3D box ratios                                                             |
| BoxStyle             | {}                            | style specifications for the box                                                   |
| BubbleScale          | "Volume"                      | size feature 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                                                                  |
| ClipPlanes           | None                          | clipping planes                                                                    |
| ClipPlanesStyle      | Automatic                     | style specifications for clipping planes                                           |
| ColorFunction        | Automatic                     | how to color bubbles                                                               |
| ColorFunctionScaling | True                          | whether to normalize the arguments for ColorFunction                               |
| ContentSelectable    | Automatic                     | whether to allow contents to be selected                                           |
| ControllerLinking    | False                         | when to link to external rotation controllers                                      |
| ControllerPath       | Automatic                     | what external controllers to try to use                                            |
| Epilog               | {}                            | 2D graphics primitives to be rendered after the main plot                          |
| FaceGrids            | Automatic                     | grid lines to draw on the bounding box                                             |
| FaceGridsStyle       | {}                            | style specifications for face grids                                                |
| FormatType           | TraditionalForm               | default format type for text                                                       |
| ImageMargins         | 0.                            | the margins to leave around the graphic                                            |
| ImagePadding         | All                           | what extra padding to allow for labels, etc.                                       |
| ImageSize            | Automatic                     | absolute size at which to render the graphic                                       |
| LabelingFunction     | Automatic                     | how to label bubbles                                                               |
| LabelStyle           | {}                            | style specifications for labels                                                    |
| LegendAppearance     | Automatic                     | overall appearance of legends                                                      |
| Lighting             | "Neutral"                     | simulated light sources to use                                                     |
| Method               | Automatic                     | details of 3D graphics methods to use                                              |
| PerformanceGoal      | \$PerformanceGoal             | aspects of performance to try to optimize                                          |
| PlotInteractivity    | \$PlotInteractivity           | whether to allow interactive elements                                              |
| PlotLabel            | None                          | a label for the plot                                                               |
| PlotRange            | All                           | range of values to include                                                         |
| PlotRangePadding     | Automatic                     | how much to pad the range of values                                                |
| PlotRegion           | Automatic                     | 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               | {}                            | 2D graphics primitives to be rendered before the main plot                         |
| RotationAction       | "Fit"                         | how to render after interactive rotation                                           |
| ScalingFunctions     | None                          | how to scale individual coordinates                                                |
| SphericalRegion      | Automatic                     | whether to make the circumscribing sphere fit in the final display area            |
| TargetUnits          | Automatic                     | units to display in the chart                                                      |
| Ticks                | Automatic                     | specification for ticks                                                            |
| TicksStyle           | {}                            | style specification for ticks                                                      |
| TouchscreenAutoZoom  | False                         | whether to zoom to fullscreen when activated on a touchscreen                      |
| ViewAngle            | Automatic                     | angle of the field of view                                                         |
| ViewCenter           | Automatic                     | point to display at the center                                                     |
| ViewMatrix           | Automatic                     | explicit transformation matrix                                                     |
| ViewPoint            | {1.3, -2.4, 2.}               | viewing position                                                                   |
| ViewProjection       | Automatic                     | projection method for rendering objects distant from the viewer                    |
| ViewRange            | All                           | range of viewing distances to include                                              |
| ViewVector           | Automatic                     | position and direction of a simulated camera                                       |
| ViewVertical         | {0, 0, 1}                     | direction to make vertical                                                         |

---

## Examples (128)

### Basic Examples (3)

Create a 3D bubble chart for a list of 4-tuples:

```wl
In[1]:= BubbleChart3D[RandomReal[1, {10, 4}]]

Out[1]= [image]
```

---

Multiple datasets:

```wl
In[1]:= BubbleChart3D[RandomReal[1, {5, 10, 4}]]

Out[1]= [image]
```

---

Set the style for bubbles:

```wl
In[1]:= BubbleChart3D[RandomReal[1, {5, 10, 4}], ChartStyle -> "DarkRainbow"]

Out[1]= [image]
```

Pictorial bubbles:

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

Out[2]= [image]
```

Procedural bubbles:

```wl
In[3]:= BubbleChart3D[RandomReal[1, {10, 4}], ChartElementFunction -> "MarkerBubble3D"]

Out[3]= [image]
```

### Scope (31)

#### Data and Wrappers (14)

Items in a dataset are colored the same:

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

Out[1]= [image]
```

---

Nonreal data is taken to be missing:

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

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

In[2]:= BubbleChart3D[data, ChartLabels -> Range[16]]

Out[2]= [image]
```

---

The data may include units:

```wl
In[1]:= BubbleChart3D[{{Quantity[8, "Feet"], Quantity[17, "Feet"], Quantity[3, "Feet"], Quantity[10, "Feet"]}, {Quantity[15, "Feet"], Quantity[19, "Feet"], Quantity[1, "Feet"], Quantity[23, "Feet"]}, {Quantity[2, "Feet"], Quantity[20, "Feet"], Quantity[15, "Feet"], Quantity[15, "Feet"]}, {Quantity[21, "Feet"], Quantity[6, "Feet"], Quantity[3, "Feet"], Quantity[25, "Feet"]}, {Quantity[12, "Feet"], Quantity[24, "Feet"], Quantity[4, "Feet"], Quantity[3, "Feet"]}, {Quantity[1, "Feet"], Quantity[15, "Feet"], Quantity[17, "Feet"], Quantity[5, "Feet"]}}, AxesLabel -> Automatic]

Out[1]= [image]
```

---

Specify the units to use:

```wl
In[1]:= BubbleChart3D[{{Quantity[8, "Feet"], Quantity[17, "Feet"], Quantity[3, "Feet"], Quantity[10, "Feet"]}, {Quantity[15, "Feet"], Quantity[19, "Feet"], Quantity[1, "Feet"], Quantity[23, "Feet"]}, {Quantity[2, "Feet"], Quantity[20, "Feet"], Quantity[15, "Feet"], Quantity[15, "Feet"]}, {Quantity[21, "Feet"], Quantity[6, "Feet"], Quantity[3, "Feet"], Quantity[25, "Feet"]}, {Quantity[12, "Feet"], Quantity[24, "Feet"], Quantity[4, "Feet"], Quantity[3, "Feet"]}, {Quantity[1, "Feet"], Quantity[15, "Feet"], Quantity[17, "Feet"], Quantity[5, "Feet"]}}, AxesLabel -> Automatic, TargetUnits -> {"Meters", "Yards", "Feet", "Inches"}]

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[TimeSeries[{{19, 14, 23, 12}, {17, 14, 23, 21}, {22, 9, 8, 14}, {16, 16, 22, 25}, {24, 24, 13, 22}, {24, 11, 2, 3}}, {"May 24, 1982"}]]

Out[1]= [image]
```

---

The values in associations are taken as bubble values:

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

Out[1]= [image]
```

Use the keys as labels:

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

Out[2]= [image]
```

Use the keys as legends:

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

Out[3]= [image]
```

---

Associations can be nested down to the point level:

```wl
In[1]:= BubbleChart3D[<|"a" -> <|"x" -> 2, "y" -> 1, "z" -> 5, "u" -> 2|>, "b" -> <|"x" -> 2, "y" -> 3, "z" -> 1, "u" -> 4|>, "c" -> <|"x" -> 7, "y" -> 3, "z" -> 3, "u" -> 6|>, "d" -> <|"x" -> 4, "y" -> 1, "z" -> 3, "u" -> 5|>|>, ChartLegends -> Automatic, ChartStyle -> 66, AxesLabel -> Automatic]

Out[1]= [image]
```

Or up to the group level:

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

Out[2]= [image]
```

---

The weights in ``WeightedData`` are ignored:

```wl
In[1]:= BubbleChart3D[WeightedData[{{6, 17, 16, 1}, {15, 15, 16, 8}, {19, 15, 10, 5}, {13, 11, 4, 8}, {8, 20, 5, 15}, {17, 3, 7, 2}}, {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, 1, 1, 1}, {2, 1, 1, 1}, {3, 1, 1, 1}};
{e1, e2, e3} = {{1, 2, 2, 1}, {2, 2, 2, 1}, {3, 2, 2, 1}};

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

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

---

Wrappers can be nested:

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

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

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

---

Override the default tooltips:

```wl
In[1]:= BubbleChart3D[{{1, 1, 1, 1}, Tooltip[{2, 2, 2, 2}, "median"], {3, 3, 3, 3}}]

Out[1]= [image]
```

---

Use any object in the tooltip:

```wl
In[1]:= BubbleChart3D[Table[Tooltip[{CountryData[c, #]& /@ {"Area", "GovernmentConsumption", "GDP", "Population"}}, CountryData[c, "Flag"]], {c, CountryData["G8"]}], ImageSize -> Medium]

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[{{1, 1, 1, 1}, {2, 2, 2, 2}, PopupWindow[{3, 3, 3, 3}, DateListPlot[FinancialData["IBM", "Jan. 1, 2004"]]]}]

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[{{1, 1, 1, 1}, {2, 2, 2, 2}, Button[{3, 3, 3, 3}, Speak[2]]}]

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 and weight, with bubbles sized according to the mileage:

```wl
In[2]:= BubbleChart3D[cars -> {"displacement", "weight", "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]:= BubbleChart3D[pivot -> {{"displacement", "weight", "horsepower", ExtendedKey["mpg", "europe"]}, {"displacement", "weight", "horsepower", ExtendedKey["mpg", "japan"]}, {"displacement", "weight", "horsepower", ExtendedKey["mpg", "usa"]}}, ChartLegends -> {"Europe", "Japan", "USA"}]

Out[4]= [image]
```

#### Styling and Appearance (9)

Use an explicit list of styles for the bubbles:

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

Out[1]= [image]
```

---

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

```wl
In[1]:= {BubbleChart3D[RandomReal[1, {3, 5, 4}], ChartStyle -> "Pastel"], BubbleChart3D[RandomReal[1, {3, 5, 4}], 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[BubbleChart3D[RandomReal[1, {12, 1, 4}], ChartStyle -> i, Axes -> None, ImageSize -> Tiny], {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]:= BubbleChart3D[RandomReal[1, {3, 5, 4}], ChartBaseStyle -> Opacity[0.6], ChartStyle -> 46]

Out[1]= [image]
```

---

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

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

Out[1]= [image]
```

---

Use any graphic for pictorial bubbles:

```wl
In[1]:= BubbleChart3D[{{1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}}, ChartElements -> Graphics3D[Cylinder[]]]

Out[1]= [image]
```

---

Use built-in programmatically generated bubbles:

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

Out[1]= {"Bubble3D", "Cone", "Cube", "Cylinder", "FadingCube", "GradientScaleCube", "MarkerBubble3D", "PolyhedronBubble3D", "ProfileCube", "SegmentScaleCube", "SquareWaveCube", "TriangleWaveCube"}

In[2]:= Table[BubbleChart3D[{{1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}}, ChartElementFunction -> f, ChartStyle -> "Pastel"], {f, {"PolyhedronBubble3D", "MarkerBubble3D"}}]

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

---

For detailed settings, use Palettes ▶ ChartElementSchemes :

```wl
In[1]:= BubbleChart3D[{{1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}}, ChartElementFunction -> ChartElementDataFunction["MarkerBubble3D", "Shape" -> "Cylinder", "Marker" -> "Cuboid", "MarkerColor" -> Yellow]]

Out[1]= [image]
```

---

Use a theme in a high contrast color scheme:

```wl
In[1]:= BubbleChart3D[RandomReal[1, {3, 5, 4}], PlotTheme -> "Marketing"]

Out[1]= [image]
```

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

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

Out[2]= [image]
```

#### Labeling and Legending (7)

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

```wl
In[1]:= BubbleChart3D[{{1, 1, 1, 1}, Labeled[{2, 2, 2, 2}, Framed["label", FrameMargins -> 1, Background -> LightYellow], Left], {3, 3, 3, 3}}]

Out[1]= [image]
```

---

Use symbolic positions for label placement:

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

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

---

Provide categorical labels for the datasets:

```wl
In[1]:= BubbleChart3D[{{{1, 1, 1, 1}, {2, 2, 2, 2}}, {{3, 3, 3, 3}, {4, 4, 4, 4}}}, ChartLabels -> {"c1", "c2"}]

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[{{{1, 1, 1, 1}, {2, 2, 2, 2}}, {{3, 3, 3, 3}, {4, 4, 4, 4}}}, PlotRange -> All, LabelingFunction -> Above]

Out[1]= [image]
```

Use ``Placed`` to control placement and formatting:

```wl
In[2]:= labeler[v_, {i_, j_}, {ri_, cj_}] := Placed[{v, ri[[1]], cj[[1]]}, Tooltip, Row[#, ","]&]

In[3]:= BubbleChart3D[{{{1, 1, 1, 1}, {2, 2, 2, 2}}, {{3, 3, 3, 3}, {4, 4, 4, 4}}}, ChartLabels -> {{"r1", "r2"}, {"c1", "c2", "c3"}}, FaceGrids -> None, PlotRange -> All, LabelingFunction -> labeler]

Out[3]= [image]
```

---

Add categorical legend entries for the columns of data:

```wl
In[1]:= BubbleChart3D[RandomReal[1, {2, 3, 4}], ChartLegends -> {"data1", "data2"}, ChartStyle -> "Pastel"]

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[{{{1, 1, 1, 1}, Legended[Style[{2, 2, 2, 2}, Red], "extra"]}, {{3, 3, 3, 3}, {4, 4, 4, 4}}}, ChartStyle -> "Pastel", ChartLegends -> {"aaa", "bbb"}]

Out[1]= [image]
```

---

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

```wl
In[1]:= Table[BubbleChart3D[{{{1, 1, 1, 1}, {2, 2, 2, 2}}, {{3, 3, 3, 3}, {4, 4, 4, 4}}}, ChartLegends -> Placed[{"data1", "data2"}, p], ChartStyle -> "Pastel"], {p, {Below, Above}}]

Out[1]= [image]
```

### Options (90)

#### Axes (3)

By default, axes are drawn for ``BubbleChart3D`` :

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

Out[1]= [image]
```

---

Use ``Axes -> False`` to turn off axes:

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

Out[1]= [image]
```

---

Turn each axis on individually:

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

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

#### AxesOrigin (2)

The position of the axes is determined automatically:

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

Out[1]= [image]
```

---

Specify an explicit origin for the axes:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], Axes -> True, AxesOrigin -> {.5, .5, .5}]

Out[1]= [image]
```

#### AxesStyle (4)

Change the style for the axes:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], AxesStyle -> Red]

Out[1]= [image]
```

---

Specify the style of each axis:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], AxesStyle -> {{Thick, Brown}, {Thick, Blue}, {Thick, Green}}]

Out[1]= [image]
```

---

Use different styles for the ticks and the axes:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], AxesStyle -> Green, TicksStyle -> Black]

Out[1]= [image]
```

---

Use different styles for the labels and the axes:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], AxesStyle -> Green, LabelStyle -> Black]

Out[1]= [image]
```

#### AxesLabel (4)

No axes labels are drawn by default:

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

Out[1]= [image]
```

---

Place a label on the $z$ axis:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], Axes -> True, AxesLabel -> "Z-axis"]

Out[1]= [image]
```

---

Specify axes labels:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], Axes -> True, AxesLabel -> {"X", "Y", "Z"}]

Out[1]= [image]
```

---

Use units as labels:

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

Out[1]= [image]
```

#### BubbleScale (2)

By default, the volume of a bubble is proportional to the ``u`` value:

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

Out[1]= [image]
```

---

Compare the volume scale to the diameter scale:

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

In[2]:= Table[BubbleChart3D[data, BubbleScale -> scale], {scale, {"Volume", "Diameter"}}]

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

---

#### BubbleSizes (1)

Change the size range of the bubbles:

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

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

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

#### ChartBaseStyle (4)

Use ``ChartBaseStyle`` to style all bubbles:

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

In[2]:= Table[BubbleChart3D[data, ChartBaseStyle -> s], {s, {Specularity[0.8, 30], Opacity[0.7]}}]

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

---

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

```wl
In[1]:= BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, ChartStyle -> 24, ChartBaseStyle -> Specularity[0.8, 30]]

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[{{1, 0, 1, 1}, Style[{0, 1, 2, 2}, Yellow], {2, 2, 3, 3}}, ChartBaseStyle -> Opacity[0.6]]

Out[1]= [image]
```

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

```wl
In[2]:= BubbleChart3D[{{1, 0, 1, 1}, Style[{0, 1, 2, 2}, Opacity[1]], {2, 2, 3, 3}}, ChartBaseStyle -> Opacity[0.5]]

Out[2]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, ChartBaseStyle -> Opacity[0.6], ColorFunction -> "Pastel"]

Out[1]= [image]
```

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

```wl
In[2]:= BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, ChartBaseStyle -> Opacity[0.6], ColorFunction -> (Opacity[1]&)]

Out[2]= [image]
```

#### ChartElementFunction (5)

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

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

Out[1]= {"Bubble3D", "Cone", "Cube", "Cylinder", "FadingCube", "GradientScaleCube", "MarkerBubble3D", "PolyhedronBubble3D", "ProfileCube", "SegmentScaleCube", "SquareWaveCube", "TriangleWaveCube"}
```

---

For detailed settings, use Palettes ▶ ChartElementSchemes :

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

In[2]:= Table[BubbleChart3D[data, ChartElementFunction -> f, ChartStyle -> "Pastel", PlotLabel -> f], {f, {"Bubble3D", "MarkerBubble3D"}}]

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

In[3]:= Table[BubbleChart3D[data, ChartElementFunction -> f, ChartStyle -> "Pastel", PlotLabel -> f], {f, {"ProfileCube", "PolyhedronBubble3D"}}]

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

---

Write a custom ``ChartElementFunction``:

```wl
In[1]:=
f[{{xmin_, xmax_}, {ymin_, ymax_}, {zmin_, zmax_}}, v_, meta_] := 
	{Cuboid[{xmin, ymin, zmin}, {xmax, ymax, zmax}]}

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

Out[2]= [image]
```

---

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

```wl
In[1]:=
DataDrilldownBubble[box_, v_, {meta_}] := 
	PopupWindow[ChartElementData["Cylinder"][box, v, {}], PieChart[meta]]

In[2]:=
DataDrilldownBubble[box_, v_, ___] := 
	ChartElementData["Cube"][box, v]

In[3]:= BubbleChart3D[{{1, 0, 1, 1} -> Range[5], {0, 1, 2, 2}, {2, 2, 3, 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["MarkerBubble3D", "Options"]

Out[1]= {"Shape" -> "Sphere", "Marker" -> "Sphere", "MarkerColor" -> RGBColor[1, 1, 0]}

In[2]:= Table[BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, ChartElementFunction -> ChartElementDataFunction["MarkerBubble3D", "Shape" -> s[[1]], "Marker" -> s[[2]], "MarkerColor" -> Yellow]], {s, {{"Sphere", "Cylinder"}, {"Cuboid", "Sphere"}}}]

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

#### ChartElements (6)

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

```wl
In[1]:= BubbleChart3D[{{1, 2, 3, 4}, {3, 2, 1, 3}, {3, 1, 1, 2}}, ChartElements -> Graphics3D[Cone[]]]

Out[1]= [image]
```

---

Use a different graphic for each row of data:

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

In[2]:= {data1, data2, data3} = {data, data + 1, data + 2};

In[3]:= BubbleChart3D[{data1, data2, data3}, ChartElements -> {[image], [image], [image]}]

Out[3]= [image]

In[4]:= BubbleChart3D[{data1, data2, data3}, ChartElements -> {{[image], [image], [image]}, None}]

Out[4]= [image]
```

---

Graphics are used cyclically:

```wl
In[1]:= BubbleChart3D[Table[{i, i, i, 1}, {i, 5}], ChartElements -> {[image], [image]}]

Out[1]= [image]
```

---

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

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

Out[1]= [image]
```

---

Override individual styles by using ``Style``:

```wl
In[1]:= BubbleChart3D[{{{1, 2, 3, 4}, Style[{3, 2, 1, 3}, Red], {3, 1, 1, 2}}}, BubbleSizes -> {0.2, 0.4}, ChartElements -> [image], ChartStyle -> Gray]

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[{{{1, 2, 3, 4}, {3, 2, 1, 3}, {3, 1, 1, 2}}}, BubbleSizes -> {0.2, 0.4}, ChartElements -> [image], ChartStyle -> Gray]

Out[1]= [image]
```

#### ChartLabels (5)

By default, labels are placed in the center of the bubbles:

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

Out[1]= [image]
```

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

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

Out[2]= [image]
```

---

Use ``Placed`` to control label placement:

```wl
In[1]:= Table[BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, ChartLabels -> Placed[Style[#, FontSize -> 18, Background -> White]& /@ {"a", "b", "c"}, p], PlotLabel -> p, Ticks -> None], {p, {Bottom, Center, Top}}]

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

---

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

```wl
In[1]:= BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, BubbleSizes -> {0.3, 0.4}, ChartLabels -> Placed[{"aaa", "bbb", "ccc"}, Center, Panel[#, FrameMargins -> 0]&]]

Out[1]= [image]
```

---

By default, labels are associated with columns of data:

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

In[2]:=
{BubbleChart3D[data, ChartLabels -> {"c1", "c2", "c3"}], 
	BubbleChart3D[data, ChartLabels -> {None, {"c1", "c2", "c3"}}]}

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

Use ``Placed`` to affect placements:

```wl
In[3]:= BubbleChart3D[data, ChartLabels -> {Placed[{"r1", "r2"}, Above], Placed[{"c1", "c2", "c3"}, Center]}]

Out[3]= [image]
```

---

Place multiple labels:

```wl
In[1]:= BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, BubbleSizes -> {0.4, 0.6}, ChartLabels -> Placed[{{"a", "b", "c"}, {"x", "y", "z"}}, {Top, Bottom}, Framed[#, FrameMargins -> 1, Background -> LightYellow]&]]

Out[1]= [image]
```

#### ChartLegends (5)

Generate a legend based on chart style:

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

Out[1]= [image]
```

---

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

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

Out[1]= [image]
```

---

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

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

Out[1]= [image]
```

---

Generate a legend for datasets:

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

In[2]:= BubbleChart3D[data, ChartLegends -> {"Group A", "Group B"}, ChartStyle -> "Pastel"]

Out[2]= [image]
```

Unused legend labels are dropped:

```wl
In[3]:= BubbleChart3D[data, ChartLegends -> {"Group A", "Group B", "Group C"}, ChartStyle -> "Pastel"]

Out[3]= [image]
```

---

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

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

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

Out[2]= [image]
```

#### ChartStyle (14)

Use ``ChartStyle`` to set the style:

```wl
In[1]:= Table[BubbleChart3D[{{1, 2, 3, 10}, {3, 2, 1, 7}, {3, 1, 1, 3}, {1, 1, 1, 1}}, BubbleSizes -> {0.1, 0.5}, ChartStyle -> s], {s, {Gray, Opacity[.5], Directive[Gray, Opacity[.5]]}}]

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

---

Use ``Style`` to highlight individual data elements:

```wl
In[1]:= BubbleChart3D[{{1, 2, 3, 4}, Style[{3, 2, 1, 3}, Yellow], {3, 1, 1, 2}, {1, 1, 1, 1}}]

Out[1]= [image]
```

---

Give an explicit list of styles:

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

Out[1]= [image]
```

---

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

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

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[RandomReal[1, {3, 5, 4}], ChartStyle -> 44]

Out[1]= [image]
```

---

Use ``Style`` to highlight a dataset:

```wl
In[1]:= BubbleChart3D[{Style[{{1, 2, 3, 2}, {3, 2, 1, 4}}, Yellow], {{3, 1, 1, 2}, {1, 1, 1, 1}}, {{5, 2, 3, 5}, {1, 5, 4, 4}}}, ChartStyle -> {Red, Green}]

Out[1]= [image]
```

---

Styles are used cyclically:

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

In[2]:= BubbleChart3D[data, BubbleSizes -> {0.1, 0.2}, ChartStyle -> {Blue, Green}]

Out[2]= [image]
```

---

Style each row of data or dataset:

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

In[2]:= {BubbleChart3D[{data, data + 1}, ChartStyle -> {Red, Green}], BubbleChart3D[{data, data + 1}, ChartStyle -> {{Red, Green}, None}]}

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

---

Style each column of data:

```wl
In[1]:= BubbleChart3D[{RandomReal[1, {3, 4}], RandomReal[1, {3, 4}] + 1}, ChartStyle -> {None, {Red, Green, Blue}}]

Out[1]= [image]
```

---

Style both rows and columns of data:

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

In[2]:= BubbleChart3D[{data, data + 1}, BubbleSizes -> {0.2, 0.3}, ChartStyle -> {{Opacity[0.4], Opacity[1]}, {Red, Green, Blue}}]

Out[2]= [image]
```

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

```wl
In[3]:= BubbleChart3D[{data, data + 1}, BubbleSizes -> {0.2, 0.3}, ChartStyle -> {{Yellow, Magenta}, {Red, Green, Blue}}]

Out[3]= [image]
```

---

``Style`` may override settings for ``ChartStyle`` :

```wl
In[1]:= BubbleChart3D[{{1, 2, 3, 4}, Style[{3, 2, 1, 3}, Yellow], {3, 1, 1, 2}, {1, 1, 1, 1}}, BubbleSizes -> {0.1, 0.5}, ChartStyle -> Gray]

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[RandomReal[1, {3, 4}], ChartStyle -> {Red, Green, Blue}, ColorFunction -> "SolarColors"]

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[{{{1, 1, 1, 1}, {2, 2, 2, 2}}, {{3, 3, 3, 3}, {4, 4, 4, 4}}}, BubbleSizes -> {0.1, 0.3}, ChartStyle -> "SolarColors", ColorFunction -> (Function[{x, y, z, r}, Opacity[Rescale[x y z r, {0, 1}, {0.3, 1.}]]])]

Out[1]= [image]
```

---

``ChartElements`` with explicit style settings may override settings for ``ChartStyle``:

```wl
In[1]:= BubbleChart3D[{{{1, 2, 3, 4}, {3, 2, 1, 3}, {3, 1, 1, 2}}}, BubbleSizes -> {0.2, 0.4}, ChartElements -> [image], ChartStyle -> Gray]

Out[1]= [image]
```

#### ColorFunction (4)

Color by $x$ coordinate value:

```wl
In[1]:= BubbleChart3D[RandomInteger[10, {2, 10, 4}], ColorFunction -> Function[{x, y, z, r}, Lighter[Green, x]]]

Out[1]= [image]
```

---

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

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

Out[1]= [image]
```

---

``ColorFunction`` may override styles in ``ChartStyle``:

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

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, ChartStyle -> {Opacity[0.5], Specularity[1, 20], Glow[Red]}, ColorFunction -> (Blue&)]

Out[1]= [image]
```

#### ColorFunctionScaling (2)

By default, scaled height values are used:

```wl
In[1]:= BubbleChart3D[{{1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}}, ColorFunction -> Function[{x, y, z, r}, GrayLevel[r]]]

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[{{1, 2, 3, 4}, {3, 2, 1, 3}, {3, 1, 1, 2}}, ColorFunction -> Function[{x, y, z, r}, Switch[{x, y, z, r}, {1, 2, 3, 4}, Yellow, {3, 2, 1, 3}, Orange, {3, 1, 1, 2}, Red]], ColorFunctionScaling -> False]

Out[1]= [image]
```

#### ImageSize (7)

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

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

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

---

Specify the width of the plot:

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

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

Specify the height of the plot:

```wl
In[2]:= {BubbleChart3D[IconizedObject[«data»], ImageSize -> {Automatic, 150}], BubbleChart3D[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]:= {BubbleChart3D[IconizedObject[«data»], ImageSize -> UpTo[200]], BubbleChart3D[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]:= BubbleChart3D[IconizedObject[«data»], ImageSize -> {200, 200}, Background -> LightBlue]

Out[1]= [image]
```

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

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

Out[2]= [image]
```

---

Use maximum sizes for the width and height:

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

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

---

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

```wl
In[1]:= Framed[Pane[BubbleChart3D[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[BubbleChart3D[IconizedObject[«data»], AspectRatio -> Full, ImageSize -> {Scaled[0.5], Scaled[0.5]}, Background -> LightBlue], {200, 200}]]

Out[1]= [image]
```

#### LabelingFunction (7)

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

```wl
In[1]:= BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, LabelingFunction -> Automatic]

Out[1]= [image]
```

---

Do no labeling:

```wl
In[1]:= BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, LabelingFunction -> None]

Out[1]= [image]
```

---

Use ``Placed`` to control label placement:

```wl
In[1]:= Table[BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, LabelingFunction -> p, PlotLabel -> p, Ticks -> None], {p, {Bottom, Center, Top}}]

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

In[2]:= Table[BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, LabelingFunction -> p, PlotLabel -> p, Ticks -> None], {p, {Left, Right}}]

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

---

Symbolic positions outside the bubble:

```wl
In[1]:= Table[BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, LabelingFunction -> p, PlotLabel -> p, Ticks -> None], {p, {Below, Above}}]

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

In[2]:= Table[BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, PlotRange -> All, LabelingFunction -> p, PlotLabel -> p, Ticks -> None], {p, {Before, After}}]

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

---

Coordinate-based placement relative to a given bubble:

```wl
In[1]:= Table[BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, PlotRange -> All, LabelingFunction -> p, PlotLabel -> p, Ticks -> None], {p, {{0, 0, 0}, {0.5, 0.5, 0.5}, {1, 1, 1}}}]

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

---

Control the formatting of labels:

```wl
In[1]:= BubbleChart3D[{{1, 0, 1, 1}, {0, 1, 2, 2}, {2, 2, 3, 3}}, PlotRange -> All, LabelingFunction -> (Placed[MatrixForm[#1], Tooltip]&)]

Out[1]= [image]
```

---

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

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

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

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

Out[3]= [image]
```

#### PerformanceGoal (1)

Generate a bubble chart with interactive highlighting:

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

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

Out[2]= [image]
```

Emphasize performance by disabling interactive behaviors:

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

Out[3]= [image]
```

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

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

Out[4]= {49536, 31296}
```

#### PlotInteractivity (4)

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

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

Out[1]= [image]
```

---

Turn off all the interactive elements:

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

Out[1]= [image]
```

---

Interactive elements provided as part of the input are disabled:

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

Out[1]= [image]
```

---

Allow provided interactive elements and disable automatic ones:

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

Out[1]= [image]
```

#### PlotTheme (2)

Use a theme in a high contrast color scheme:

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

Out[1]= [image]
```

---

Change the chart style:

```wl
In[1]:= BubbleChart3D[RandomReal[1, {4, 3, 4}], PlotTheme -> "Marketing", ChartStyle -> 83]

Out[1]= [image]
```

#### Ticks (6)

Ticks are placed automatically on each axis:

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

Out[1]= [image]
```

---

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

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], Ticks -> None]

Out[1]= [image]
```

---

Place tick marks at the specified positions:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], Ticks -> {{.5, 1, 1.5}, {.5, 1, 1.5}, {.5, 1, 1.5}}]

Out[1]= [image]
```

---

Draw tick marks at the specified positions with specific labels:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], Ticks -> {{{.5, a}, {1, b}, {1.5, c}}, {{.5, a}, {1, b}, {1.5, c}}, {{.5, a}, {1, b}, {1.5, c}}}]

Out[1]= [image]
```

---

Specify tick marks with scaled lengths:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], Ticks -> {{{.5, a, .22}, {1, b, .11}, {1.5, c, .2}}, {{.5, a, .22}, {1, b, .13}, {1.5, c, .08}}, {{.5, a, .1}, {1, b, .1}, {1.5, c, .1}}}]

Out[1]= [image]
```

---

Customize each tick with position, length, labeling and styling:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], Ticks -> {{{.5, a, .22, Directive[Blue]}, {1, b, .11, Directive[Blue, Thick]}, {1.5, c, .2, Directive[Blue, Thick, Dashed]}}, {{.5, a, .22, Directive[Red]}, {1, b, .13, Directive[Red, Thick]}, {1.5, c, .08, Directive[Red, Thick, Dashed]}}, {{.5, a, .1, Directive[Black]}, {1, b, .1, Directive[Black, Thick]}, {1.5, c, .1, Directive[Black, Thick]}}}]

Out[1]= [image]
```

#### TicksStyle (2)

Specify an overall style for ticks, including for labels:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], TicksStyle -> Directive[Bold, Red]]

Out[1]= [image]
```

---

Specify tick style for each of the axes:

```wl
In[1]:= BubbleChart3D[IconizedObject[«data»], TicksStyle -> {Directive[Black, Bold], Directive[Bold, Red], Directive[Bold, Blue]}]

Out[1]= [image]
```

### Applications (2)

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", "MilitaryExpenditureFraction", "Population"};

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

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

Out[3]= [image]
```

---

Display GDP per capita, poverty, and military expenditures for a list of countries:

```wl
In[1]:=
countries = {"US", "France", "China", "India", "Iran", "Afghanistan", "Cameroon", "Brazil", "Russia", "Canada"};
properties = {"PovertyFraction", "GDPPerCapita", "MilitaryExpenditureFraction", "Population"};
data = Table[CountryData[c, p], {c, countries}, {p, properties}];
```

Define a labeling function for the tooltips:

```wl
In[2]:= labeler[v_, {r_, c_}, {rowLabels_, colLabels_}] := Placed[Grid[Prepend[Table[{properties[[i]], v[[i]]}, {i, Length[v]}], {Style[countries[[c]], Bold, 12], }], Alignment -> Left], Tooltip]
```

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

```wl
In[3]:= BubbleChart3D[data, ViewPoint -> {2.19, -1.93, 1.72}, ImageSize -> 400, ChartLegends -> countries, AxesLabel -> properties[[1 ;; 3]], LabelingFunction -> labeler, ChartStyle -> 24]

Out[3]= [image]
```

### Properties & Relations (1)

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]}
```

### Neat Examples (1)

Here is some chart work:

```wl
In[1]:= BubbleChart3D[RandomReal[10, {75, 4}], Axes -> None, Boxed -> False, FaceGrids -> None, PerformanceGoal -> "Speed", ChartElementFunction -> "FadingCube", ChartStyle -> 12, ChartBaseStyle -> EdgeForm[None], BoxRatios -> {1.2, 1, 1}]

Out[1]= [image]
```

## See Also

* [`BubbleChart`](https://reference.wolfram.com/language/ref/BubbleChart.en.md)
* [`ListPointPlot3D`](https://reference.wolfram.com/language/ref/ListPointPlot3D.en.md)
* [`ListPlot3D`](https://reference.wolfram.com/language/ref/ListPlot3D.en.md)
* [`Sphere`](https://reference.wolfram.com/language/ref/Sphere.en.md)

## Related Guides

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

## 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) ▪ [2025 (14.2)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn142.en.md) ▪ [2025 (14.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn143.en.md)