Skip to content
Dual Y-Axis

Dual Y-Axis

Draw this layer’s y values against a second, independent y-domain on the plot’s right edge, instead of render_layers()’s usual shared left-axis domain.

Dual Y-Axis

Usage

from canvas_mojo.color import Color
from dataviz_mojo.plot import Plot, save_layers
from dataviz_mojo.theme import Theme

def main() raises:
    var months: List[Float64] = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
    var revenue: List[Float64] = [420.0, 480.0, 450.0, 610.0, 550.0, 580.0]
    var growth: List[Float64] = [2.1, 3.4, -1.2, 8.7, 4.0, 5.2]

    var revenue_layer = Plot().mark_area().encode(x=months, y=revenue).theme(
        Theme(mark_color=Color(70, 130, 180))
    ).labels(title="Revenue & Growth", x_title="Month", y_title="Revenue ($M)")
    var growth_layer = (
        Plot()
        .mark_line()
        .encode(x=months, y=growth)
        .theme(Theme(mark_color=Color(220, 80, 60)))
        .secondary_axis()
        .labels(y_title="Growth (%)")
    )
    var plots = List[Plot]()
    plots.append(revenue_layer^)
    plots.append(growth_layer^)

    save_layers(plots, "docs/src/examples/out_dual_axis.svg")