cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
plot.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <vector>
5
7
8namespace toolbox::utils
9{
10
12{
13public:
14 enum class axis_scale_t
15 {
16 LINEAR,
17 LOG
18 };
19
20 enum class style_t : char
21 {
22 STAR = '*',
23 DOT = '.',
24 PLUS = '+',
25 CROSS = 'x'
26 };
27
28 struct axis_t
29 {
30 axis_scale_t scale {axis_scale_t::LINEAR};
31 std::string label;
32 };
33
34 struct series_t
35 {
36 std::vector<double> xs;
37 std::vector<double> ys;
38 color_t color {color_t::DEFAULT};
39 bool line {true};
40 style_t style {style_t::STAR};
41 };
42
44 void add_line_series(const std::vector<double>& xs,
45 const std::vector<double>& ys,
46 color_t color = color_t::DEFAULT,
47 style_t style = style_t::STAR);
49 void add_scatter_series(const std::vector<double>& xs,
50 const std::vector<double>& ys,
51 color_t color = color_t::DEFAULT,
52 style_t style = style_t::DOT);
53
55 void set_x_axis(axis_scale_t scale = axis_scale_t::LINEAR,
56 std::string label = "");
58 void set_y_axis(axis_scale_t scale = axis_scale_t::LINEAR,
59 std::string label = "");
61 void set_title(std::string title);
62
64 void enable_axis_grid(bool enable = true, color_t color = color_t::WHITE);
66 void enable_global_grid(bool enable = true, color_t color = color_t::CYAN);
67
69 [[nodiscard]] std::string render(size_t width = 60, size_t height = 20) const;
70
71private:
72 std::vector<series_t> m_series;
73 axis_t m_x_axis {};
74 axis_t m_y_axis {};
75 std::string m_title {};
76 bool m_show_axis_grid {false};
77 bool m_show_global_grid {false};
78 color_t m_axis_grid_color {color_t::WHITE};
79 color_t m_global_grid_color {color_t::CYAN};
80};
81
82} // namespace toolbox::utils
Definition plot.hpp:12
style_t
Definition plot.hpp:21
axis_scale_t
Definition plot.hpp:15
#define CPP_TOOLBOX_EXPORT
Definition export.hpp:8
< 用于 std::out_of_range/For std::out_of_range
Definition click.hpp:11
enum CPP_TOOLBOX_EXPORT color_t
默认颜色/Default color
Definition print.hpp:51
Definition plot.hpp:29
std::string label
Definition plot.hpp:31
Definition plot.hpp:35
std::vector< double > ys
Definition plot.hpp:37
std::vector< double > xs
Definition plot.hpp:36