1
|
|
#![deny(missing_docs)]
|
2
|
|
|
3
|
|
//! Configure a grid on a plot.
|
4
|
|
//!
|
5
|
|
//! Grids allow for easier estimating of data values. This module allows the configuration of grids
|
6
|
|
//! on plots.
|
7
|
|
//!
|
8
|
|
//! Grids are created by creating a `Grid` definition, and adding it to a plot:
|
9
|
|
//!
|
10
|
|
//! The grid lines for `plotlib` are rendered
|
11
|
|
//! _underneath_ the data so as to not detract from the data.
|
12
|
|
//!
|
13
|
|
//! # Examples
|
14
|
|
//!
|
15
|
|
//! ```rust
|
16
|
|
//! # use plotlib::view::ContinuousView;
|
17
|
|
//! use plotlib::grid::Grid;
|
18
|
|
//! # use plotlib::style::LineStyle;
|
19
|
|
//! # use plotlib::view::View;
|
20
|
|
//!
|
21
|
|
//! # let l1 = plotlib::repr::Plot::new(vec![(0., 1.), (2., 1.5), (3., 1.2), (4., 1.1)])
|
22
|
|
//! # .line_style(LineStyle::new().colour("burlywood"));
|
23
|
|
//! // let l1 = Plot::new() ...
|
24
|
|
//! let mut v = ContinuousView::new().add(l1);
|
25
|
|
//!
|
26
|
|
//! // 3 vertical lines and 8 horizontal lines
|
27
|
|
//! v.add_grid(Grid::new(3, 8));
|
28
|
|
//!
|
29
|
|
//! // Render plot
|
30
|
|
//! ```
|
31
|
|
|
32
|
|
// Internal type representing the logic of when do we render only horizontal lines, and when do we
|
33
|
|
// render a full grid
|
34
|
|
pub(crate) enum GridType<'a> {
|
35
|
|
HorizontalOnly(&'a Grid),
|
36
|
|
Both(&'a Grid),
|
37
|
|
}
|
38
|
|
|
39
|
|
/// Configuration for the grid on a plot
|
40
|
|
///
|
41
|
|
/// Supports changing the number of grid lines for the x and y dimensions.
|
42
|
|
/// **Note:** for categorical plots, only horizontal lines will be shown.
|
43
|
|
pub struct Grid {
|
44
|
|
/// Number of vertical grid lines (defaults to 3)
|
45
|
|
pub nx: u32,
|
46
|
|
/// Number of horizontal grid lines (defaults to 3)
|
47
|
|
pub ny: u32,
|
48
|
|
/// Color of the grid lines (defaults to "darkgrey")
|
49
|
|
pub color: String,
|
50
|
|
}
|
51
|
|
|
52
|
|
impl Default for Grid {
|
53
|
0
|
fn default() -> Self {
|
54
|
|
Grid::new(3, 3)
|
55
|
|
}
|
56
|
|
}
|
57
|
|
|
58
|
|
impl Grid {
|
59
|
|
/// Create a new grid with `nx` vertical and `ny` horizontal grid lines
|
60
|
|
///
|
61
|
|
/// The default colour is "darkgrey".
|
62
|
0
|
pub fn new(nx: u32, ny: u32) -> Grid {
|
63
|
|
Grid {
|
64
|
|
nx,
|
65
|
|
ny,
|
66
|
0
|
color: "darkgrey".to_owned(),
|
67
|
|
}
|
68
|
|
}
|
69
|
|
}
|