Commit 16a2bf04 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

implement [xy]domain 'invert' flag

parent 8481cf1a
Loading
Loading
Loading
Loading
+26 −15
Original line number Diff line number Diff line
@@ -259,27 +259,38 @@ Series domain_untranslate(
  return {};
}

ReturnCode confgure_domain_kind(
ReturnCode domain_configure(
    const plist::Property& prop,
    DomainKind* kind) {
  if (plist::is_value(prop, "linear")) {
    *kind = DomainKind::LINEAR;
    return OK;
    DomainConfig* domain) {
  auto args = plist::flatten(prop);
  for (const auto& prop : args) {
    if (prop == "linear") {
      domain->kind = DomainKind::LINEAR;
      continue;
    }

  if (plist::is_value(prop, "logarithmic") ||
      plist::is_value(prop, "log")) {
    *kind = DomainKind::LOGARITHMIC;
    return OK;
    if (prop == "log" ||
        prop == "logarithmic") {
      domain->kind = DomainKind::LOGARITHMIC;
      continue;
    }

  if (plist::is_value(prop, "categorical")) {
    *kind = DomainKind::CATEGORICAL;
    return OK;
    if (prop == "categorical") {
      domain->kind = DomainKind::CATEGORICAL;
      continue;
    }

    if (prop == "invert" ||
        prop == "inverted") {
      domain->inverted = true;
      continue;
    }

    return ERROR_INVALID_ARGUMENT;
  }

  return OK;
}

} // namespace plotfx
+2 −2
Original line number Diff line number Diff line
@@ -69,9 +69,9 @@ Series domain_untranslate(
    const DomainConfig& domain,
    const std::vector<double>& data);

ReturnCode confgure_domain_kind(
ReturnCode domain_configure(
    const plist::Property& prop,
    DomainKind* kind);
    DomainConfig* domain);

} // namespace plotfx
+2 −2
Original line number Diff line number Diff line
@@ -199,8 +199,8 @@ ReturnCode configure(
          std::placeholders::_1,
          &config.axis_left.label_placement),
    },
    {"xdomain", std::bind(&confgure_domain_kind, std::placeholders::_1, &config.domain_x.kind)},
    {"ydomain", std::bind(&confgure_domain_kind, std::placeholders::_1, &config.domain_y.kind)},
    {"xdomain", std::bind(&domain_configure, std::placeholders::_1, &config.domain_x)},
    {"ydomain", std::bind(&domain_configure, std::placeholders::_1, &config.domain_y)},
    {
      "xdomain-format",
      configure_multiprop({
+37 −0
Original line number Diff line number Diff line
plot {
  ymin: -10;
  ymax: 32;
  ydomain: inverted;
  xdomain: categorical;
  xdomain-format: string;
  legend: bottom left inside;

  series {
    title: "New York";
    xs: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec;
    ys: -0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5;
    point-size: 3.3pt;
  }

  series {
    title: "北京市   ";
    xs: Jan, Feb, Mar, Apr,  May,  Jun,  Jul,  Aug,  Sep,  Oct,  Nov, Dec;
    ys: -4, -1.4, 5.4, 13.5, 19.9, 24.3, 26.3, 24.9, 19.9, 13.1, 4.7, -1.8;
    point-size: 3.3pt;
  }

  series {
    title: "Москва";
    xs: Jan,  Feb,  Mar,  Apr, May,  Jun,  Jul,  Aug,  Sep,  Oct, Nov, Dec;
    ys: -7.4, -5.8, -0.1, 7.1, 14.7, 17.7, 20.6, 18.8, 12.6, 6.1, 1.1, -3.6;
    point-size: 3.3pt;
  }

  series {
    title: "Berlin";
    xs: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec;
    ys: -0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0;
    point-size: 3.3pt;
  }

}
+0 −12
Original line number Diff line number Diff line
IMPORT TABLE city_temperatures
   FROM 'csv:examples/data/city_temperatures.csv?headers=true';

DRAW LINECHART WITH
   XDOMAIN INVERT
   YDOMAIN INVERT
   AXIS BOTTOM
   AXIS LEFT
   LEGEND BOTTOM RIGHT INSIDE;

SELECT city AS series, month AS x, temperature AS y, "circle" as pointstyle
   FROM city_temperatures;
Loading