Filled Area Plots in Julia
How to make filled area plots in Julia with Plotly.
Filled area chart with plotly.graph_objects
Basic Overlaid Area Chart
using PlotlyJS
plot([
scatter(x=1:4, y=[0, 2, 3, 5], fill="tozeroy"), # fill down to xaxis
scatter(x=1:4, y=[3, 5, 1, 7], fill="tonexty"), # fill to trace0 y
])
Overlaid Area Chart Without Boundary Lines
Set mode = "none"
to remove boundary lines.
using PlotlyJS
plot([
scatter(x=1:4, y=[0, 2, 3, 5], fill="tozeroy", mode="none"),
scatter(x=1:4, y=[3, 5, 1, 7], fill="tonexty", mode="none"),
])
Interior Filling for Area Chart
using PlotlyJS
plot([
scatter(x=1:4, y=[3, 4, 8, 3], mode="lines", line_color="indigo"),
scatter(x=1:4, y=[1, 6, 2, 6], mode="lines", line_color="indigo", fill="tonexty"),
])
Stacked Area Chart
The stackgroup
parameter is used to add the y
values of the different traces in the same group. Traces in the same group fill up to the next trace of the group.
using PlotlyJS
x = ["Winter", "Spring", "Summer", "Fall"]
plot([
scatter(
x=x, y=[40, 60, 40, 10],
stackgroup="one", mode="lines", hoverinfo="x+y",
line=attr(width=0.5, color="rgb(131, 90, 241)")
),
scatter(
x=x, y=[20, 10, 10, 60],
stackgroup="one", mode="lines", hoverinfo="x+y",
line=attr(width=0.5, color="rgb(111, 231, 219)")
),
scatter(
x=x, y=[40, 30, 50, 30],
stackgroup="one", mode="lines", hoverinfo="x+y",
line=attr(width=0.5, color="rgb(184, 247, 2121)")
),
], Layout(yaxis_range=(0, 100)))
Stacked Area Chart with Normalized Values
using PlotlyJS
x = ["Winter", "Spring", "Summer", "Fall"]
plot([
scatter(
x=x, y=[40, 60, 40, 10],
line=attr(width=0.5, color="rgb(131, 90, 241)"),
stackgroup="one", mode="lines", hoverinfo="x+y",
groupnorm="percent" # sets the normalization for the sum of the stackgroup
),
scatter(
x=x, y=[20, 10, 10, 60],
stackgroup="one", mode="lines", hoverinfo="x+y",
line=attr(width=0.5, color="rgb(111, 231, 219)")
),
scatter(
x=x, y=[40, 30, 50, 30],
stackgroup="one", mode="lines", hoverinfo="x+y",
line=attr(width=0.5, color="rgb(184, 247, 2121)")
),
], Layout(yaxis=attr(ticksuffix="%", range=(0, 100))))
Reference
See https://plotly.com/julia/reference/scatter/#scatter-line and https://plotly.com/julia/reference/scatter/#scatter-fill for more information and attribute options!