Commit cb8c2f13 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

linechart: fit domains to data

parent e6d1358b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -208,6 +208,11 @@ ReturnCode draw(
  DomainConfig domain_x;
  DomainConfig domain_y;

  for (const auto& s : config.series) {
    domain_fit(s.xs, &domain_x);
    domain_fit(s.ys, &domain_y);
  }

  // setup layout
  auto border_box = layout_margin_box(
      clip,
@@ -316,6 +321,7 @@ ReturnCode configureSeries(const plist::Property& prop, LinechartConfig* config)
    return rc;
  }

  config->series.emplace_back(std::move(series));
  return OK;
}

+1 −1
Original line number Diff line number Diff line
@@ -225,7 +225,7 @@ ReturnCode axis_expand_linear_geom(
    AxisDefinition* axis) {
  uint32_t num_ticks = 6; // FIXME make configurable
  double min = domain.min.value_or(0.0f);
  double max = domain.min.value_or(0.0f);
  double max = domain.max.value_or(0.0f);

  for (size_t i = 0; i < num_ticks; ++i) {
    auto o = (1.0f / (num_ticks - 1)) * i;
+13 −0
Original line number Diff line number Diff line
@@ -31,6 +31,19 @@

using namespace plotfx;
namespace plotfx {

void domain_fit(const std::vector<double>& data, DomainConfig* domain) {
  for (const auto& d : data) {
    if (!domain->min || *domain->min > d) {
      domain->min = std::optional<double>(d);
    }
    if (!domain->max || *domain->max < d) {
      domain->max = std::optional<double>(d);
    }
  }
}


namespace chart {

/*
+2 −0
Original line number Diff line number Diff line
@@ -49,6 +49,8 @@ struct DomainConfig {
  std::optional<double> max;
};

void domain_fit(const std::vector<double>& data, DomainConfig* domain);

namespace chart {

/**