mdbook_plotly/code_handler/plot_obj_parser/
density_mapbox_parser.rs1use 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}