Skip to content
Dual Y-Axis

Dual Y-Axis

Use this when: You need to draw one 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.color import Color
from dataviz.chart import AnyChart
from dataviz import Plot, save_layers
from dataviz.core.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[AnyChart]()
    plots.append(AnyChart(revenue_layer))
    plots.append(AnyChart(growth_layer))

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

Related

Related recipes: Bar-and-Line Combo · Layer Legend

Relevant API: Rendering and composition