Contour Plots in Julia
How to make Contour plots in Julia with Plotly.
Plotly is known for its graphing libraries, but it's also a broader ecosystem for building interactive data apps, AI data analysis tools, and deploying and hosting Dash apps. Explore the full set of tools and platforms designed to help turn data into action. Discover Plotly.
Note: We are retiring documentation for R, MATLAB, Julia, and F#. Learn more about this change here.
Basic Contour Plot
A 2D contour plot shows the contour lines of a 2D numerical array z, i.e. interpolated lines of isovalues of z.
using PlotlyJS
plot(contour(
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]'
))
Setting X and Y Coordinates in a Contour Plot
using PlotlyJS
plot(contour(
x=[-9, -6, -5 , -3, -1], # horizontal axis
y=[0, 1, 4, 5, 7], # vertical axis
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]'
))
Colorscale for Contour Plot
using PlotlyJS
plot(contour(
colorscale="Electric",
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]'
))
Customizing Size and Range of a Contour Plot's Contours
using PlotlyJS
plot(contour(
z=z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]',
colorscale="Hot",
contours_start=0,
contours_end=8,
contours_size=2
))
Customizing Spacing Between X and Y Axis Ticks
using PlotlyJS
plot(contour(
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]',
dx=10, x0=5, dy=10, y0=10,
))
Connect the Gaps Between None Values in the Z Matrix
using PlotlyJS
p = make_subplots(
rows=2, cols=2,
column_titles=["connectgaps = False"; "connectgaps = True"],
row_titles=["Contour map"; "Heatmap"]
)
z = [
[missing, missing, missing, 12, 13, 14, 15, 16],
[missing, 1, missing, 11, missing, missing, missing, 17],
[missing, 2, 6, 7, missing, missing, missing, 18],
[missing, 3, missing, 8, missing, missing, missing, 19],
[5, 4, 10, 9, missing, missing, missing, 20],
[missing, missing, missing, 27, missing, missing, missing, 21],
[missing, missing, missing, 26, 25, 24, 23, 22]
]
add_trace!(p, contour(z=z, showscale=false), row=1, col=1)
add_trace!(p, contour(z=z, showscale=false, connectgaps=true), row=1, col=2)
add_trace!(p, heatmap(z=z, showscale=false, zsmooth="best"), row=2, col=1)
add_trace!(p, heatmap(z=z, showscale=false, connectgaps=true, zsmooth="best"), row=2, col=2)
p
Smoothing the Contour lines
using PlotlyJS
z = [
2 4 7 12 13 14 15 16
3 1 6 11 12 13 16 17
4 2 7 7 11 14 17 18
5 3 8 8 13 15 18 19
7 4 10 9 16 18 20 19
9 10 5 27 23 21 21 21
11 14 17 26 25 24 23 22
]'
p = make_subplots(
rows=1, cols=2, column_titles=["Without Smoothing"; "With Smoothing"]
)
add_trace!(p, contour(z=z, line_smoothing=0), row=1, col=1)
add_trace!(p, contour(z=z, line_smoothing=0.85), row=1, col=2)
p
Smooth Contour Coloring
using PlotlyJS
plot(contour(
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]',
# heatmap gradient coloring is applied between each contour level
contours_coloring="heatmap" # can also be "lines", or "none"
))
Contour Line Labels
using PlotlyJS
plot(contour(
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]',
# heatmap gradient coloring is applied between each contour level
contours=attr(
coloring ="heatmap",
showlabels = true, # show labels on contours
labelfont = attr( # label font properties
size = 12,
color = "white",
)
)
))
Contour Lines
using PlotlyJS
plot(contour(
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]',
contours_coloring="lines",
line_width=2,
))
Custom Contour Plot Colorscale
using PlotlyJS
# Valid color strings are CSS colors, rgb or hex strings
colorscale = [[0, "gold"], [0.5, "mediumturquoise"], [1, "lightsalmon"]]
plot(contour(
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]',
colorscale=colorscale,
))
Color Bar Title
using PlotlyJS
plot(contour(
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]',
colorbar=attr(
title="Color bar title", # title here
titleside="right",
titlefont=attr(
size=14,
family="Arial, sans-serif"
)
)
))
Color Bar Size for Contour Plots
In the example below, both the thickness (given here in pixels) and the length (given here as a fraction of the plot height) are set.
using PlotlyJS
plot(contour(
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]',
colorbar=attr(
thickness=25,
thicknessmode="pixels",
len=0.6,
lenmode="fraction",
outlinewidth=0
)
))
Styling Color Bar Ticks for Contour Plots
using PlotlyJS
plot(contour(
z=[
10 10.625 12.5 15.625 20
5.625 6.25 8.125 11.25 15.625
2.5 3.125 5. 8.125 12.5
0.625 1.25 3.125 6.25 10.625
0 0.625 2.5 5.625 10
]',
colorbar=attr(
nticks=10, ticks="outside",
ticklen=5, tickwidth=1,
showticklabels=true,
tickangle=0, tickfont_size=12
)
))
Reference
See https://plotly.com/julia/reference/contour/ for more information and chart attribute options!