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
11class CPP_TOOLBOX_EXPORT plot_t
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
void set_y_axis(axis_scale_t scale=axis_scale_t::LINEAR, std::string label="")
设置 Y 轴 / Configure the Y axis
void set_title(std::string title)
设置标题 / Set plot title
void enable_global_grid(bool enable=true, color_t color=color_t::CYAN)
开启或关闭全局网格 / Toggle global grid
void add_line_series(const std::vector< double > &xs, const std::vector< double > &ys, color_t color=color_t::DEFAULT, style_t style=style_t::STAR)
style_t
Definition plot.hpp:21
void set_x_axis(axis_scale_t scale=axis_scale_t::LINEAR, std::string label="")
设置 X 轴 / Configure the X axis
std::string render(size_t width=60, size_t height=20) const
void add_scatter_series(const std::vector< double > &xs, const std::vector< double > &ys, color_t color=color_t::DEFAULT, style_t style=style_t::DOT)
axis_scale_t
Definition plot.hpp:15
void enable_axis_grid(bool enable=true, color_t color=color_t::WHITE)
开启或关闭轴网格 / Toggle axis grid
< 用于 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