> For the complete documentation index, see [llms.txt](https://ezel.rustic.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ezel.rustic.dev/optimization/style-customization.md).

# Style Customization

When plotting, ezel uses a lot of aesthetic parameters.

Even rendering a simple scatter plot requires

* marker size
* marker shape
* marker color
* background color
* x axis label size
* x axis label text
* x axis label color
* ..

For a minimal API, they are all optional and structured into `MarkerOpts`, `AxisOpts`, etc.

```rust
struct Cartesian2 {
    marker_opts: Option<MarkerOpts>,
}

let mut plot = ezel::Cartesian2::new();
plot.style.marker = MarkerOpts::default();
plot.style.marker.size = Some(10.0);
```

When unspecified, the value is provided by the theme.

### Theme

A theme is a collection of default style configurations.

You can create a new theme or use one of built-in themes.

```rust
let mut theme: Theme = ezel::theme::MATPLOTLIB.clone();
theme.marker.size = Some(12.0);  // customize the matplotlib theme
```

\[screenshot of themes]
