Skip to main content

mdbook_plotly/code_handler/plot_obj_parser/
density_mapbox_parser.rs

1use super::until::must_translate_from_context;
2use crate::code_handler::parse_context::ParseContext;
3use crate::translate_with_config;
4use anyhow::Result;
5use plotly::{DensityMapbox, Trace};
6
7pub fn parse_density_mapbox_data(
8    dm_obj: &mut serde_json::Value,
9    context: &ParseContext<'_>,
10) -> Result<Box<DensityMapbox<f64, f64, f64>>> {
11    let lat: Vec<f64> = must_translate_from_context(dm_obj, context, "lat")?;
12    let lon: Vec<f64> = must_translate_from_context(dm_obj, context, "lon")?;
13    let z: Vec<f64> = must_translate_from_context(dm_obj, context, "z")?;
14    let dm = DensityMapbox::new(lat, lon, z);
15    let dm = translate_with_config! {
16        dm,
17        dm_obj,
18        context.map(),
19        context.map_eval(),
20        (show_legend, bool),
21        (name, String),
22        (legend_group, String),
23        (legend_rank, usize),
24        (opacity, f64),
25        (radius, u8),
26        (zoom, u8),
27        (zauto, bool),
28        (zmin, f64),
29        (zmid, f64),
30        (zmax, f64),
31        (subplot, String),
32    }?;
33    Ok(dm)
34}
35
36pub fn parse_density_mapbox_trace(
37    dm_obj: &mut serde_json::Value,
38    context: &ParseContext<'_>,
39) -> Result<Box<dyn Trace>> {
40    Ok(parse_density_mapbox_data(dm_obj, context)?)
41}