#include <fstream>
#include <random>
int main() {
auto ax = fig->axis();
const int n = 100;
std::vector<float> x(n), y(n), r(n), c(n);
std::default_random_engine gen;
std::normal_distribution<float> normal(0, 1);
std::generate(x.begin(), x.end(), [&]() { return normal(gen); });
std::generate(y.begin(), y.end(), [&]() { return normal(gen); });
std::generate(r.begin(), r.end(), [&]() { return normal(gen); });
std::generate(c.begin(), c.end(), [&]() { return normal(gen); });
auto data = create_data().x(x).y(y).size(r).color(c);
auto points = ax->points(data);
points->set_label("points");
float time = 0.0;
auto do_plot = [&]() {
time += 0.3f;
std::normal_distribution<float> normal(0, 1);
std::generate(x.begin(), x.end(), [&]() { return normal(gen); });
std::generate(y.begin(), y.end(), [&]() { return normal(gen); });
std::generate(r.begin(), r.end(), [&]() { return normal(gen); });
std::generate(c.begin(), c.end(), [&]() { return normal(gen); });
auto data = create_data().x(x).y(y).size(r).color(c);
points->add_frame(data, time);
};
for (int i = 0; i < 5; ++i) {
do_plot();
}
ax->xlabel("x");
ax->ylabel("y");
ax->title("points test");
ax->legend();
#ifdef TRASE_EXAMPLES_SVG_BACKEND
std::ofstream out;
out.open("example_animated_points.svg");
fig->draw(backend);
out.close();
#endif
#ifdef TRASE_EXAMPLES_GL_BACKEND
fig->show(backend);
#endif
}