// Example: Scatter plot with custom point shapes and auto-inferred x-axis ticks.
// Run: moon run examples/scatter_chart
///|
fn main {
let groupA = [
@moonchart.DataPoint::new(1.2, 2.1),
@moonchart.DataPoint::new(2.3, 3.8),
@moonchart.DataPoint::new(3.1, 5.2),
@moonchart.DataPoint::new(4.5, 7.0),
@moonchart.DataPoint::new(5.0, 9.3),
@moonchart.DataPoint::new(6.2, 11.5),
@moonchart.DataPoint::new(7.1, 14.0),
@moonchart.DataPoint::new(8.3, 16.2),
]
let groupB = [
@moonchart.DataPoint::new(1.0, 3.0),
@moonchart.DataPoint::new(2.0, 5.2),
@moonchart.DataPoint::new(3.3, 6.8),
@moonchart.DataPoint::new(4.0, 8.5),
@moonchart.DataPoint::new(5.5, 10.0),
@moonchart.DataPoint::new(6.8, 13.0),
@moonchart.DataPoint::new(7.5, 15.5),
@moonchart.DataPoint::new(8.0, 17.8),
]
// Auto-infer x-axis ticks from data; use custom point shapes and colors
let svg = @moonchart.Chart::new()
.title("Correlation Analysis")
.xLabel("Variable X")
.yLabel("Variable Y")
.yRange(0.0, 20.0)
.series(
@moonchart.Series::scatter("Group A", groupA)
.withColor(@moonchart.Color::rgb(0, 122, 184))
.withPointShape(@moonchart.Circle)
.withPointSize(5.0),
)
.series(
@moonchart.Series::scatter("Group B", groupB)
.withColor(@moonchart.Color::rgb(212, 57, 57))
.withPointShape(@moonchart.Triangle)
.withPointSize(5.0),
)
.legend(true, @moonchart.TopLeft)
// .size(500.0, 400.0)
.save("scatter_chart.svg")
match svg {
Ok(s) => println(s)
Err(e) => println("Error: \{e}")
}
}