Commit 1d504da3 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

snap the y-axis to zero if in 'auto' mode

parent f2430572
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ DomainConfig::DomainConfig() :
    inverted(false),
    padding(0.0f) {}

void domain_fit(const std::vector<double>& data, DomainConfig* domain) {
void domain_fit(const std::vector<double>& data, DomainConfig* domain, bool snap_zero) {
  bool fit_min = !domain->min;
  bool fit_max = !domain->max;

@@ -49,15 +49,19 @@ void domain_fit(const std::vector<double>& data, DomainConfig* domain) {
    }
  }

  auto range = domain->max.value_or(0.0f) - domain->min.value_or(0.0f);
  auto range = domain->max.value_or(0) - domain->min.value_or(0);
  if (fit_max) {
    domain->max = std::optional<double>(
        domain->max.value_or(0.0f) + range * domain->padding);
        domain->max.value_or(0) + range * domain->padding);
  }

  if (fit_min) {
    if (snap_zero && domain->min.value_or(0) > 0) {
      domain->min = std::optional<double>(0);
    } else {
      domain->min = std::optional<double>(
        domain->min.value_or(0.0f) - range * domain->padding);
          domain->min.value_or(0) - range * domain->padding);
    }
  }
}

+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ struct DomainConfig {
  double padding;
};

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

double domain_translate(const DomainConfig& domain, double v);

+2 −2
Original line number Diff line number Diff line
@@ -132,8 +132,8 @@ ReturnCode configure(const plist::Property& prop, PlotConfig* config) {
    return rc;
  }

  domain_fit(series.xs, &config->domain_x);
  domain_fit(series.ys, &config->domain_y);
  domain_fit(series.xs, &config->domain_x, false);
  domain_fit(series.ys, &config->domain_y, true);

  config->series.emplace_back(PlotSeries {
    .draw = std::bind(
+438 B (33.7 KiB)
Loading image diff...
+8 −0
Original line number Diff line number Diff line
plot {

  series {
    xs: 10,   20,   30,   40,   50,   60,    70,   80,  90,  100;
    ys: 1.23, -4.32, -3.23, -6.43, 3.45, 12.32, 8.14, -5.2, -3.5, 2.2;
    colour: #06c;
  }
}
Loading