Mixed Subplots in Julia

How to make mixed subplots in Julia with Plotly.


Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Try Plotly Studio now.

Note: We are retiring documentation for R, MATLAB, Julia, and F# in November 2025. Learn more about this change here.

Mixed Subplots

using PlotlyJS, CSV, DataFrames, HTTP df = CSV.File( HTTP.get( "https://raw.githubusercontent.com/plotly/datasets/master/volcano_db.csv").body ) |> DataFrame # frequency of Country freq = combine(groupby(df, :Country), nrow) # read in 3d volcano surface data df_v = CSV.File( HTTP.get( "https://raw.githubusercontent.com/plotly/datasets/master/volcano.csv").body ) |> DataFrame # Initialize figure with subplots fig = make_subplots( rows=2, cols=2, column_widths=[0.6, 0.4], row_heights=[0.4, 0.6], specs=[ Spec(kind="geo", rowspan=2) Spec(kind="xy") missing Spec(kind= "scene") ] ) # TODO: Plot not staying in it's sub plot spot # Add scattergeo globe map of volcano locations add_trace!( fig, scattergeo( lat=df[!, "Latitude"], lon=df[!, "Longitude"], mode="markers", hoverinfo="text", showlegend=false, marker=attr(color="crimson", size=4, opacity=0.8), projection_type="orthographic", landcolor="white", oceancolor="MidnightBlue", showocean=true, lakecolor="LightBlue" ), row=1, col=1 ) # Add locations bar chart add_trace!( fig, bar(x=freq[!,"Country"][1:11],y=freq[!, "nrow"][1:11], marker_color="crimson", showlegend=false), row=1, col=2 ) # Add 3d surface of volcano add_trace!( fig, surface(z=Matrix{Int64}(df_v), showscale=false), row=2, col=2 ) # Set theme, margin, and annotation in layout relayout!( fig, geo=attr(projection_type="orthographic", landcolor="white", oceancolor="MidnightBlue", showocean=true, lakecolor="LightBlue"), xaxis2_tickangle=45, template=templates.plotly_dark, margin=attr(r=10, t=25, b=40, l=60), annotations=[ attr( text="Source: NOAA", showarrow=false, xref="paper", yref="paper", x=0, y=0) ] ) fig

Reference

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