Mixed Subplots in Julia
How to make mixed subplots 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.
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!