MCPcopy Create free account
hub / github.com/alceal/plotlars / build_irregular

Function build_irregular

crates/plotlars-plotly/src/subplot_grid/irregular.rs:46–211  ·  view source on GitHub ↗
(
    plots: Vec<(&dyn Plot, usize, usize, usize, usize)>,
    rows: Option<usize>,
    cols: Option<usize>,
    title: Option<Text>,
    h_gap: Option<f64>,
    v_gap: Option<f64>,
    dimensions: Op

Source from the content-addressed store, hash-verified

44}
45
46pub(super) fn build_irregular(
47 plots: Vec<(&dyn Plot, usize, usize, usize, usize)>,
48 rows: Option<usize>,
49 cols: Option<usize>,
50 title: Option<Text>,
51 h_gap: Option<f64>,
52 v_gap: Option<f64>,
53 dimensions: Option<&Dimensions>,
54) -> SubplotGrid {
55 let rows = rows.unwrap_or(1);
56 let cols = cols.unwrap_or(1);
57 let h_gap = h_gap.unwrap_or(0.1);
58 let v_gap = v_gap.unwrap_or(0.1);
59
60 validate_irregular_grid(&plots, rows, cols);
61
62 let mut all_traces: Vec<Box<dyn Trace + 'static>> = Vec::new();
63 let mut plot_configs: Vec<PlotConfig> = Vec::new();
64 let mut legend_sources: Vec<Vec<JsonTrace>> = Vec::new();
65 let mut per_plot_traces: Vec<Vec<Box<dyn Trace + 'static>>> = Vec::new();
66 let mut scene_count = 0;
67 let mut polar_count = 0;
68 let mut mapbox_count = 0;
69 let mut geo_count = 0;
70
71 for (plot, row, col, rowspan, colspan) in plots.iter() {
72 let (traces, layout_json) = convert_plot(*plot);
73 let plot_type = detect_plot_type(traces[0].as_ref());
74 let plot_title = plot.ir_layout().title.clone();
75
76 let x_axis_json = layout_json.get("xaxis").cloned().unwrap_or(Value::Null);
77 let y_axis_json = layout_json.get("yaxis").cloned().unwrap_or(Value::Null);
78
79 let x_title = plot
80 .ir_layout()
81 .x_title
82 .clone()
83 .or_else(|| extract_axis_title_from_annotations(&layout_json, true));
84
85 let y_title = plot
86 .ir_layout()
87 .y_title
88 .clone()
89 .or_else(|| extract_axis_title_from_annotations(&layout_json, false));
90
91 let x_axis_type = if plot_type == PlotType::Cartesian2D {
92 detect_axis_type_from_traces(&traces)
93 } else {
94 None
95 };
96 let y_axis_type = None;
97
98 let layout_fragment = match plot_type {
99 PlotType::Cartesian3D => layout_json.get("scene").cloned(),
100 PlotType::Polar => layout_json.get("polar").cloned(),
101 PlotType::Mapbox => layout_json.get("mapbox").cloned(),
102 PlotType::Geo => layout_json.get("geo").cloned(),
103 _ => None,

Callers 1

irregularMethod · 0.85

Calls 12

validate_irregular_gridFunction · 0.85
detect_plot_typeFunction · 0.85
adjust_domain_for_typeFunction · 0.85
assign_axis_referencesFunction · 0.85
create_irregular_layoutFunction · 0.85
ensure_colorMethod · 0.80
convert_plotFunction · 0.70
ir_layoutMethod · 0.45

Tested by

no test coverage detected