In [ ]:
#include <algorithm>
#include <random>
#include <vector>
#include "xplot/xfigure.hpp"
#include "xplot/xmarks.hpp"
#include "xplot/xaxes.hpp"
auto randn(std::size_t n)
{
std::vector<double> output(n);
std::random_device rd;
std::mt19937 gen(rd());
std::normal_distribution<> dis(5, 2);
std::for_each(output.begin(), output.end(), [&dis, &gen](auto& v){v = dis(gen);});
return output;
}
std::size_t data_size = 200;
std::vector<double> data_x(data_size);
std::iota(data_x.begin(), data_x.end(), 0);
std::vector<double> data_y = randn(data_size);
std::vector<double> data_c = randn(data_size);
xpl::linear_scale scale_x, scale_y;
xpl::linear_scale scale_size;
auto scatter = xpl::scatter::initialize(scale_x, scale_y, scale_size)
.x(data_x)
.y(data_y)
.size(data_c)
.stroke("black")
.default_size(128)
.enable_move(true)
.colors(std::vector<xtl::xoptional<std::string>>{"orangered"})
.finalize();
xpl::axis axis_x(scale_x), axis_y(scale_y);
axis_x.label = "x";
axis_y.label = "y";
axis_y.orientation = "vertical";
axis_y.side = "left";
xpl::figure fig;
fig.padding_x = 0.025;
fig.add_mark(scatter);
fig.add_axis(axis_x);
fig.add_axis(axis_y);
fig