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

Merge branch 'feature/histogram_fix' of github.com:plotfx/plotfx

parents d0699cae e888365c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -160,6 +160,9 @@ double domain_translate_categorical(
    const DomainConfig& domain,
    const Value& v) {
  double category_count = domain.categories.size();
  if (category_count == 0) {
    return 0;
  }

  size_t vi = 0;
  if (auto vm = domain.map.find(v); vm != domain.map.end()) {
+21 −17
Original line number Diff line number Diff line
@@ -181,18 +181,30 @@ ReturnCode configure_scales(
    const plist::PropertyList& plist,
    const DataContext& data,
    DomainMap* scales) {
  {
    DomainConfig d;
    d.padding = 0;
    scales->emplace(SCALE_DEFAULT_X, d);
  }
  DomainConfig domain_x;
  domain_x.padding = 0;

  {
    DomainConfig d;
    d.min_auto_snap_zero = true;
    scales->emplace(SCALE_DEFAULT_Y, d);
  DomainConfig domain_y;
  domain_y.min_auto_snap_zero = true;

  static const ParserDefinitions pdefs = {
    {"axis-x", bind(&domain_configure, _1, &domain_x)},
    {"axis-x-min", bind(&configure_float_opt, _1, &domain_x.min)},
    {"axis-x-max", bind(&configure_float_opt, _1, &domain_x.max)},
    {"axis-x-padding", bind(&configure_float, _1, &domain_x.padding)},
    {"axis-y", bind(&domain_configure, _1, &domain_y)},
    {"axis-y-min", bind(&configure_float_opt, _1, &domain_y.min)},
    {"axis-y-max", bind(&configure_float_opt, _1, &domain_y.max)},
    {"axis-y-padding", bind(&configure_float, _1, &domain_y.padding)},
  };

  if (auto rc = parseAll(plist, pdefs); !rc.isSuccess()) {
    return rc;
  }

  scales->emplace(SCALE_DEFAULT_X, domain_x);
  scales->emplace(SCALE_DEFAULT_Y, domain_y);

  for (const auto& prop : plist) {
    if (prop.name != "layer") {
      continue;
@@ -328,9 +340,6 @@ ReturnCode configure_style(
  auto domain_y = find_ptr(scales, SCALE_DEFAULT_Y);

  static const ParserDefinitions pdefs = {
    {"axis-x", bind(&domain_configure, _1, domain_x)},
    {"axis-x-min", bind(&configure_float_opt, _1, &domain_x->min)},
    {"axis-x-max", bind(&configure_float_opt, _1, &domain_x->max)},
    {
      "axis-x-format",
      configure_multiprop({
@@ -345,10 +354,6 @@ ReturnCode configure_style(
          bind(&axis_configure_label_placement, _1, &config->axis_bottom.label_placement),
      })
    },
    {"axis-x-padding", bind(&configure_float, _1, &domain_x->padding)},
    {"axis-y", bind(&domain_configure, _1, domain_y)},
    {"axis-y-min", bind(&configure_float_opt, _1, &domain_y->min)},
    {"axis-y-max", bind(&configure_float_opt, _1, &domain_y->max)},
    {
      "axis-y-format",
      configure_multiprop({
@@ -363,7 +368,6 @@ ReturnCode configure_style(
          bind(&axis_configure_label_placement, _1, &config->axis_right.label_placement),
      })
    },
    {"axis-y-padding", bind(&configure_float, _1, &domain_y->padding)},
    {"axis-top", bind(&parseAxisModeProp, _1, &config->axis_top.mode)},
    {"axis-top-scale", bind(&configure_string, _1, &config->axis_top.scale)},
    {"axis-top-format", bind(&confgure_format, _1, &config->axis_top.label_formatter)},
+26 −0
Original line number Diff line number Diff line
width: 1200px;
height: 480px;

plot {
  data: csv(tests/testdata/histogram.csv);
  y: var1;
  x: var0;

  axis-top: off;

  axis-y: log;
  axis-x: categorical;

  axis-y-max: 80000;

  grid-x: geom;

  layer {
    type: bars;
    labels: var1;
  }

  legend {
    position: top left inside;
  }
}
+71 −0
Original line number Diff line number Diff line
<svg xmlns="http://www.w3.org/2000/svg" width="1200.000000" height="480.000000" viewBox="0 0 1200.0 480.0">
  <rect width="1200.000000" height="480.000000" fill="#ffffff"/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M1120.584375 14.666667 L1120.584375 435.6 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M1120.584375 435.6 L1115.251042 435.6 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M1120.584375 375.466664 L1115.251042 375.466664 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M1120.584375 315.333328 L1115.251042 315.333328 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M1120.584375 255.199986 L1115.251042 255.199986 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M1120.584375 195.066656 L1115.251042 195.066656 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M1120.584375 134.933326 L1115.251042 134.933326 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M1120.584375 74.799971 L1115.251042 74.799971 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M1120.584375 14.666667 L1115.251042 14.666667 "/>
  <text x="1132.317708" y="440.600000" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">1.0</text>
  <text x="1132.317708" y="380.466664" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">5.0</text>
  <text x="1132.317708" y="320.333328" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">25.2</text>
  <text x="1132.317708" y="260.199986" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">126.3</text>
  <text x="1132.317708" y="200.066656" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">633.5</text>
  <text x="1132.317708" y="139.933326" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">3178.4</text>
  <text x="1132.317708" y="79.799971" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">15945.9</text>
  <text x="1132.317708" y="19.666667" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">80000.0</text>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 435.6 L1120.584375 435.6 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 435.6 L79.415625 430.266667 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M252.943755 435.6 L252.943755 430.266667 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M426.471885 435.6 L426.471885 430.266667 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M600.0 435.6 L600.0 430.266667 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M773.528146 435.6 L773.528146 430.266667 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M947.056291 435.6 L947.056291 430.266667 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M1120.584375 435.6 L1120.584375 430.266667 "/>
  <text x="162.101568" y="461.333333" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">1</text>
  <text x="335.629698" y="461.333333" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">2</text>
  <text x="509.157813" y="461.333333" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">3</text>
  <text x="682.685958" y="461.333333" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">4</text>
  <text x="856.214104" y="461.333333" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">5</text>
  <text x="1029.742188" y="461.333333" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">6</text>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 14.666667 L79.415625 435.6 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 435.6 L84.748958 435.6 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 375.466664 L84.748958 375.466664 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 315.333328 L84.748958 315.333328 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 255.199986 L84.748958 255.199986 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 195.066656 L84.748958 195.066656 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 134.933326 L84.748958 134.933326 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 74.799971 L84.748958 74.799971 "/>
  <path stroke-width="1.333333" stroke="#a8a8a8" fill="none" d="M79.415625 14.666667 L84.748958 14.666667 "/>
  <text x="47.291667" y="440.600000" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">1.0</text>
  <text x="47.291667" y="380.466664" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">5.0</text>
  <text x="39.135417" y="320.333328" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">25.2</text>
  <text x="30.979167" y="260.199986" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">126.3</text>
  <text x="30.979167" y="200.066656" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">633.5</text>
  <text x="22.822917" y="139.933326" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">3178.4</text>
  <text x="14.666667" y="79.799971" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">15945.9</text>
  <text x="14.666667" y="19.666667" fill="#333333" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">80000.0</text>
  <path stroke-width="1.333333" stroke="#e5e5e5" fill="none" d="M79.415625 435.6 L1120.584375 435.6 "/>
  <path stroke-width="1.333333" stroke="#e5e5e5" fill="none" d="M79.415625 375.466664 L1120.584375 375.466664 "/>
  <path stroke-width="1.333333" stroke="#e5e5e5" fill="none" d="M79.415625 315.333328 L1120.584375 315.333328 "/>
  <path stroke-width="1.333333" stroke="#e5e5e5" fill="none" d="M79.415625 255.199986 L1120.584375 255.199986 "/>
  <path stroke-width="1.333333" stroke="#e5e5e5" fill="none" d="M79.415625 195.066656 L1120.584375 195.066656 "/>
  <path stroke-width="1.333333" stroke="#e5e5e5" fill="none" d="M79.415625 134.933326 L1120.584375 134.933326 "/>
  <path stroke-width="1.333333" stroke="#e5e5e5" fill="none" d="M79.415625 74.799971 L1120.584375 74.799971 "/>
  <path stroke-width="1.333333" stroke="#e5e5e5" fill="none" d="M79.415625 14.666667 L1120.584375 14.666667 "/>
  <path fill="#4572a7" d="M117.591812 118.45352 L117.591812 435.6 L214.767562 435.6 L214.767562 118.45352 "/>
  <path fill="#4572a7" d="M291.119938 293.670675 L291.119938 435.6 L388.295688 435.6 L388.295688 293.670675 "/>
  <path fill="#4572a7" d="M464.648062 368.79523 L464.648062 435.6 L561.823813 435.6 L561.823813 368.79523 "/>
  <path fill="#4572a7" d="M638.176187 383.912774 L638.176187 435.6 L735.351938 435.6 L735.351938 383.912774 "/>
  <path fill="#4572a7" d="M811.704313 409.756387 L811.704313 435.6 L908.880063 435.6 L908.880063 409.756387 "/>
  <path fill="#4572a7" d="M985.232438 435.6 L985.232438 435.6 L1082.408188 435.6 L1082.408188 435.6 "/>
  <text x="149.867188" y="108.586853" fill="#000000" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">4945</text>
  <text x="331.551563" y="283.804008" fill="#000000" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">45</text>
  <text x="509.157812" y="358.928563" fill="#000000" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">6</text>
  <text x="682.685938" y="374.046108" fill="#000000" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">4</text>
  <text x="856.214063" y="399.889720" fill="#000000" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">2</text>
  <text x="1029.742188" y="425.733333" fill="#000000" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif">1</text>
</svg>
 No newline at end of file
+7 −0
Original line number Diff line number Diff line
var0,var1
1,4945
2,45
3,6
4,4
5,2
6,1