2D Histogram Contour in Julia
How to make 2D Histogram Contour plots in Julia with Plotly.
2D Histogram Contours or Density Contours
A 2D histogram contour plot, also known as a density contour plot, is a 2-dimensional generalization of a histogram which resembles a contour plot 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 value to be used to compute contours. This kind of visualization (and the related 2D histogram, or density heatmap) 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.
2D Histograms with Graph Objects
Basic 2D Histogram Contour
using PlotlyJS, Distributions
x = rand(Uniform(-1,1), 500)
y = rand(Uniform(-1,1), 500)
plot(histogram2dcontour(x=x,y=y))
2D Histogram Contour Colorscale
using PlotlyJS, Distributions
x = rand(Uniform(-1,1), 500)
y = rand(Uniform(-1,1), 500)
plot(histogram2dcontour(x=x,y=y, colorscale="Blues"))
2D Histogram Contour Styled
using PlotlyJS, Distributions
x = rand(Uniform(-1,1), 500)
y = rand(Uniform(-1,1), 500)
plot(histogram2dcontour(
x = x,
y = y,
colorscale = "Jet",
contours = attr(
showlabels = true,
labelfont = attr(
family = "Raleway",
color = "white"
)
),
hoverlabel = attr(
bgcolor = "white",
bordercolor = "black",
font = attr(
family = "Raleway",
color = "black"
)
)
))
2D Histogram Contour Subplot
using PlotlyJS
t = range(-1, stop=1.2, length=2000)
x = (t .^ 3) .+ (0.3 .* randn(2000))
y = (t .^ 6) .+ (0.3 .* randn(2000))
trace1 = histogram2dcontour(
x = x,
y = y,
colorscale = "Blues",
reversescale = true,
xaxis = "x",
yaxis = "y"
)
trace2 = scatter(
x = x,
y = y,
xaxis = "x",
yaxis = "y",
mode = "markers",
marker = attr(
color = "rgba(0,0,0,0.3)",
size = 3
)
)
trace3 = histogram(
y = y,
xaxis = "x2",
marker = attr(
color = "rgba(0,0,0,1)"
)
)
trace4 = histogram(
x = x,
yaxis = "y2",
marker = attr(
color = "rgba(0,0,0,1)"
)
)
layout = Layout(
autosize = false,
xaxis = attr(
zeroline = false,
domain = [0,0.85],
showgrid = false
),
yaxis = attr(
zeroline = false,
domain = [0,0.85],
showgrid = false
),
xaxis2 = attr(
zeroline = false,
domain = [0.85,1],
showgrid = false
),
yaxis2 = attr(
zeroline = false,
domain = [0.85,1],
showgrid = false
),
height = 600,
width = 600,
bargap = 0,
hovermode = "closest",
showlegend = false
)
plot([trace1, trace2, trace3, trace4], layout)
Reference
See https://plotly.com/julia/reference/histogram2dcontour/ for more information and chart attribute options!