# 2D Histograms in Julia

How to make 2D Histograms in Julia with Plotly.

## 2D Histograms or Density Heatmaps

A 2D histogram, also known as a density heatmap, is the 2-dimensional generalization of a histogram which resembles a heatmap but is computed by grouping a set of points specified by their `x`

and `y`

coordinates into bins, and applying an aggregation function such as `count`

or `sum`

(if `z`

is provided) to compute the color of the tile representing the bin. This kind of visualization (and the related 2D histogram contour, or density contour) is often used to manage over-plotting, or situations where showing large data sets as scatter plots would result in points overlapping each other and hiding patterns.

## Density Heatmaps

You can make a density heatmap using the `histogram2d`

trace type and setting `xbingroup="x"`

and `ybingroup="y"`

```
using PlotlyJS, CSV, DataFrames
df = dataset(DataFrame, "tips")
plot(df, x=:total_bill, y=:tip, xbingroyp="x", ybingroup="y", kind="histogram2d")
```

The number of bins can be controlled with `nbinsx`

and `nbinsy`

and the color scale with `colorscale`

.

```
using PlotlyJS, CSV, DataFrames
df = dataset(DataFrame, "tips")
plot(
df, x=:total_bill, y=:tip, xbingroyp="x", ybingroup="y", kind="histogram2d",
nbinsx=20, nbinsy=20, colorscale="Viridis"
)
```

Density heatmaps can also be faceted:

```
using PlotlyJS, CSV, DataFrames
df = dataset(DataFrame, "tips")
plot(
df, x=:total_bill, y=:tip, xbingroyp="x", ybingroup="y", kind="histogram2d",
facet_row=:sex, facet_col=:smoker
)
```

### 2D Histogram of a Bivariate Normal Distribution

```
using PlotlyJS, Random
Random.seed!(41)
plot(histogram2d(x=randn(500), y=randn(500) .+ 1))
```

### 2D Histogram Overlaid with a Scatter Chart

```
using PlotlyJS, Random
x0 = randn(100) ./ 5. .+ 0.5 # 5. enforces float division
y0 = randn(100) ./ 5. .+ 0.5
x1 = rand(50)
y1 = rand(50) .+ 1.0
x = [x0; x1]
y = [y0; y1]
plot(
[
scatter(
x=x0, y=y0, mode="markers",
marker=attr(symbol="x", opacity=0.7, color="white", size=8, line_width=1)
),
scatter(
x=x1, y=y1, mode="markers",
marker=attr(symbol="circle", opacity=0.7, color="white", size=8, line_width=1)
),
histogram2d(x=x, y=y, colorscale="YlGnBu", zmax=10, nbinsx=14, nbinsy=14, zauto=false)
],
Layout(
xaxis=attr(ticks="", showgrid=false, zeroline=false, nticks=20),
yaxis=attr(ticks="", showgrid=false, zeroline=false, nticks=20),
autosize=false,
height=550,
width=550,
hovermode="closest",
showlegend=false,
)
)
```

#### Reference

See https://plotly.com/julia/reference/histogram2d/ for more information and chart attribute options!