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.
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