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

add the 'fill' and 'stroke-{high,low}-{color,style,width}' options to the 'plot/areas' element

parent 3fe18153
Loading
Loading
Loading
Loading
+100 −15
Original line number Original line Diff line number Diff line
@@ -17,6 +17,8 @@
#include "environment.h"
#include "environment.h"
#include "layout.h"
#include "layout.h"
#include "scale.h"
#include "scale.h"
#include "style.h"
#include "style_reader.h"
#include "color_reader.h"
#include "color_reader.h"
#include "sexpr_conv.h"
#include "sexpr_conv.h"
#include "sexpr_util.h"
#include "sexpr_util.h"
@@ -41,7 +43,9 @@ struct PlotAreaConfig {
  std::vector<Measure> yoffset;
  std::vector<Measure> yoffset;
  ScaleConfig scale_x;
  ScaleConfig scale_x;
  ScaleConfig scale_y;
  ScaleConfig scale_y;
  Color color;
  StrokeStyle stroke_high_style;
  StrokeStyle stroke_low_style;
  FillStyle fill_style;
};
};


PlotAreaConfig::PlotAreaConfig() :
PlotAreaConfig::PlotAreaConfig() :
@@ -90,17 +94,31 @@ ReturnCode draw_horizontal(
      &*config.yoffset.begin(),
      &*config.yoffset.begin(),
      &*config.yoffset.end());
      &*config.yoffset.end());


  convert_unit_typographic(
      layer->dpi,
      layer->font_size,
      &config.stroke_high_style.line_width);

  convert_unit_typographic(
      layer->dpi,
      layer->font_size,
      &config.stroke_low_style.line_width);

  /* draw areas */
  /* draw areas */
  Path path;
  Path shape;
  Path stroke_high;
  Path stroke_low;


  for (size_t i = 0; i < config.x.size(); ++i) {
  for (size_t i = 0; i < config.x.size(); ++i) {
    auto sx = clip.x + config.x[i];
    auto sx = clip.x + config.x[i];
    auto sy = clip.y + clip.h - config.y[i];
    auto sy = clip.y + clip.h - config.y[i];


    if (i == 0) {
    if (i == 0) {
      path.moveTo(sx, sy);
      shape.moveTo(sx, sy);
      stroke_high.moveTo(sx, sy);
    } else {
    } else {
      path.lineTo(sx, sy);
      shape.lineTo(sx, sy);
      stroke_high.lineTo(sx, sy);
    }
    }
  }
  }


@@ -108,12 +126,20 @@ ReturnCode draw_horizontal(
  for (int i = config.x.size() - 1; i >= 0; --i) {
  for (int i = config.x.size() - 1; i >= 0; --i) {
    auto sx = clip.x + (config.xoffset.empty() ? x0 : config.xoffset[i]);
    auto sx = clip.x + (config.xoffset.empty() ? x0 : config.xoffset[i]);
    auto sy = clip.y + clip.h - config.y[i];
    auto sy = clip.y + clip.h - config.y[i];
    path.lineTo(sx, sy);
    shape.lineTo(sx, sy);

    if (stroke_low.empty()) {
      stroke_low.moveTo(sx, sy);
    } else {
      stroke_low.lineTo(sx, sy);
    }
  }
  }


  path.closePath();
  shape.closePath();


  fillPath(layer, clip, path, config.color);
  fillPath(layer, clip, shape, config.fill_style);
  strokePath(layer, clip, stroke_high, config.stroke_high_style);
  strokePath(layer, clip, stroke_low, config.stroke_low_style);


  return OK;
  return OK;
}
}
@@ -161,17 +187,31 @@ ReturnCode draw_vertical(
      &*config.yoffset.begin(),
      &*config.yoffset.begin(),
      &*config.yoffset.end());
      &*config.yoffset.end());


  convert_unit_typographic(
      layer->dpi,
      layer->font_size,
      &config.stroke_high_style.line_width);

  convert_unit_typographic(
      layer->dpi,
      layer->font_size,
      &config.stroke_low_style.line_width);

  /* draw areas */
  /* draw areas */
  Path path;
  Path shape;
  Path stroke_high;
  Path stroke_low;


  for (size_t i = 0; i < config.x.size(); ++i) {
  for (size_t i = 0; i < config.x.size(); ++i) {
    auto sx = clip.x + config.x[i];
    auto sx = clip.x + config.x[i];
    auto sy = clip.y + clip.h - config.y[i];
    auto sy = clip.y + clip.h - config.y[i];


    if (i == 0) {
    if (i == 0) {
      path.moveTo(sx, sy);
      shape.moveTo(sx, sy);
      stroke_high.moveTo(sx, sy);
    } else {
    } else {
      path.lineTo(sx, sy);
      shape.lineTo(sx, sy);
      stroke_high.lineTo(sx, sy);
    }
    }
  }
  }


@@ -179,12 +219,20 @@ ReturnCode draw_vertical(
  for (int i = config.x.size() - 1; i >= 0; --i) {
  for (int i = config.x.size() - 1; i >= 0; --i) {
    auto sx = clip.x + config.x[i];
    auto sx = clip.x + config.x[i];
    auto sy = clip.y + clip.h - (config.yoffset.empty() ? y0 : config.yoffset[i]);
    auto sy = clip.y + clip.h - (config.yoffset.empty() ? y0 : config.yoffset[i]);
    path.lineTo(sx, sy);
    shape.lineTo(sx, sy);

    if (stroke_low.empty()) {
      stroke_low.moveTo(sx, sy);
    } else {
      stroke_low.lineTo(sx, sy);
    }
  }
  }


  path.closePath();
  shape.closePath();


  fillPath(layer, clip, path, config.color);
  fillPath(layer, clip, shape, config.fill_style);
  strokePath(layer, clip, stroke_high, config.stroke_high_style);
  strokePath(layer, clip, stroke_low, config.stroke_low_style);


  return OK;
  return OK;
}
}
@@ -209,7 +257,9 @@ ReturnCode build(
    ElementRef* elem) {
    ElementRef* elem) {
  /* set defaults from environment */
  /* set defaults from environment */
  auto c = std::make_shared<PlotAreaConfig>();
  auto c = std::make_shared<PlotAreaConfig>();
  c->color = env.foreground_color;
  c->stroke_high_style.color = env.foreground_color;
  c->stroke_low_style.color = env.foreground_color;
  c->fill_style = fill_style_solid(env.foreground_color);


  /* parse properties */
  /* parse properties */
  std::vector<std::string> data_x;
  std::vector<std::string> data_x;
@@ -234,7 +284,42 @@ ReturnCode build(
    {"scale-y", bind(&scale_configure_kind, _1, &c->scale_y)},
    {"scale-y", bind(&scale_configure_kind, _1, &c->scale_y)},
    {"scale-x-padding", bind(&expr_to_float64, _1, &c->scale_x.padding)},
    {"scale-x-padding", bind(&expr_to_float64, _1, &c->scale_x.padding)},
    {"scale-y-padding", bind(&expr_to_float64, _1, &c->scale_y.padding)},
    {"scale-y-padding", bind(&expr_to_float64, _1, &c->scale_y.padding)},
    {"color", bind(&color_read, env, _1, &c->color)},
    {
      "stroke-color",
      expr_calln_fn({
        bind(&color_read, env, _1, &c->stroke_high_style.color),
        bind(&color_read, env, _1, &c->stroke_low_style.color),
      })
    },
    {
      "stroke-width",
      expr_calln_fn({
        bind(&measure_read, _1, &c->stroke_high_style.line_width),
        bind(&measure_read, _1, &c->stroke_low_style.line_width),
      })
    },
    {
      "stroke-style",
      expr_calln_fn({
        bind(&stroke_style_read, env, _1, &c->stroke_high_style),
        bind(&stroke_style_read, env, _1, &c->stroke_low_style),
      })
    },
    {"stroke-high-color", bind(&color_read, env, _1, &c->stroke_high_style.color)},
    {"stroke-high-width", bind(&measure_read, _1, &c->stroke_high_style.line_width)},
    {"stroke-high-style", bind(&stroke_style_read, env, _1, &c->stroke_high_style)},
    {"stroke-low-color", bind(&color_read, env, _1, &c->stroke_low_style.color)},
    {"stroke-low-width", bind(&measure_read, _1, &c->stroke_low_style.line_width)},
    {"stroke-low-style", bind(&stroke_style_read, env, _1, &c->stroke_low_style)},
    {"fill", bind(&fill_style_read, env, _1, &c->fill_style)},
    {
      "color",
      expr_calln_fn({
        bind(&color_read, env, _1, &c->stroke_high_style.color),
        bind(&color_read, env, _1, &c->stroke_low_style.color),
        bind(&fill_style_read_solid, env, _1, &c->fill_style),
      })
    },
    {
    {
      "direction",
      "direction",
      expr_to_enum_fn<Direction>(&c->direction, {
      expr_to_enum_fn<Direction>(&c->direction, {
+53 −1
Original line number Original line Diff line number Diff line
@@ -78,9 +78,61 @@ properties:
          direction vertical
          direction vertical
      - name: color
      - name: color
        desc: |
        desc: |
          Set the area color.
          Set the area's fill and stroke color.
        desc_code: |
        desc_code: |
          color <color>
          color <color>
      - name: stroke-high-color
        desc: |
          Set the area's high ("upper") stroke color. See the [color](#FIXME) page for more details on valid values.
        desc_code: |
          stroke-high-color <color>
        examples: |
          ;; set the area's high ("upper") stroke color to grey
          stroke-high-color #eee
      - name: stroke-high-width
        desc: |
          Set the area's high ("upper") stroke width. See the
          [measure](#FIXME) page for more details on valid values.
        desc_code: |
          stroke-high-width <measure>
        examples: |
          ;; set the area's high ("upper") stroke width to 2pt
          stroke-high-width 2pt
      - name: stroke-high-style
        desc: |
          Set the area's high ("upper") stroke style. See the
          [Fill & Stroke Styles](#FIXME) page for more details on valid values.
        desc_code: |
          stroke-high-style <stroke-high-style>
        examples: |
          ;; set the area's high ("upper") stroke style to none
          stroke-high-style solid
      - name: stroke-low-color
        desc: |
          Set the area's low ("lower") stroke color. See the [color](#FIXME) page for more details on valid values.
        desc_code: |
          stroke-low-color <color>
        examples: |
          ;; set the area's low ("lower") stroke color to grey
          stroke-low-color #eee
      - name: stroke-low-width
        desc: |
          Set the area's low ("lower") stroke width. See the
          [measure](#FIXME) page for more details on valid values.
        desc_code: |
          stroke-low-width <measure>
        examples: |
          ;; set the area's low ("lower") stroke width to 2pt
          stroke-low-width 2pt
      - name: stroke-low-style
        desc: |
          Set the area's low ("lower") stroke style. See the
          [Fill & Stroke Styles](#FIXME) page for more details on valid values.
        desc_code: |
          stroke-low-style <stroke-low-style>
        examples: |
          ;; set the area's low ("lower") stroke style to none
          stroke-low-style solid


  - title: "Scale Options"
  - title: "Scale Options"
    anchor: scale-options
    anchor: scale-options
+15 −5
Original line number Original line Diff line number Diff line
@@ -15,23 +15,33 @@
  areas (
  areas (
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-y (7 13 17 27 38 39 52 59 48 60 65)
    data-y (7 13 17 27 38 39 52 59 48 60 65)
    color 5)
    color 5
    stroke-width .6pt
    stroke-color (rgba 0 0 0 .5))
  areas (
  areas (
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-y (4 12 15 22 35 38 47 47 42 53 60)
    data-y (4 12 15 22 35 38 47 47 42 53 60)
    color 4)
    color 4
    stroke-width .6pt
    stroke-color (rgba 0 0 0 .4))
  areas (
  areas (
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-y (3 10 10 18 32 34 42 40 36 46 54)
    data-y (3 10 10 18 32 34 42 40 36 46 54)
    color 3)
    color 3
    stroke-width .6pt
    stroke-color (rgba 0 0 0 .5))
  areas (
  areas (
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-y (2 6 6 8 18 20 30 30 30 36 35)
    data-y (2 6 6 8 18 20 30 30 30 36 35)
    color 2)
    color 2
    stroke-width .6pt
    stroke-color (rgba 0 0 0 .5))
  areas (
  areas (
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-y (1 2 4 7 13 15 20 16 18 23 18)
    data-y (1 2 4 7 13 15 20 16 18 23 18)
    color 1)
    color 1
    stroke-width .6pt
    stroke-color (rgba 0 0 0 .5))
  grid (
  grid (
    color #eee
    color #eee
    tick-placement-x (none))
    tick-placement-x (none))
+10 −0
Original line number Original line Diff line number Diff line
@@ -7,10 +7,20 @@
  <path stroke-width="1.333333" stroke="#eeeeee" fill="none" d="M54.9469 73.5048 L945.333 73.5048 "/>
  <path stroke-width="1.333333" stroke="#eeeeee" fill="none" d="M54.9469 73.5048 L945.333 73.5048 "/>
  <path stroke-width="1.333333" stroke="#eeeeee" fill="none" d="M54.9469 53.0857 L945.333 53.0857 "/>
  <path stroke-width="1.333333" stroke="#eeeeee" fill="none" d="M54.9469 53.0857 L945.333 53.0857 "/>
  <path fill="#f92d23" d="M99.4662 161.307 L143.986 149.055 L233.024 140.888 L322.063 120.469 L411.101 98.0076 L500.14 95.9657 L589.179 69.421 L678.217 55.1276 L767.256 77.5886 L856.295 53.0857 L945.333 42.8762 L945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 Z"/>
  <path fill="#f92d23" d="M99.4662 161.307 L143.986 149.055 L233.024 140.888 L322.063 120.469 L411.101 98.0076 L500.14 95.9657 L589.179 69.421 L678.217 55.1276 L767.256 77.5886 L856.295 53.0857 L945.333 42.8762 L945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 Z"/>
  <path stroke-width="0.800000" stroke="#000000" fill="none" d="M99.4662 161.307 L143.986 149.055 L233.024 140.888 L322.063 120.469 L411.101 98.0076 L500.14 95.9657 L589.179 69.421 L678.217 55.1276 L767.256 77.5886 L856.295 53.0857 L945.333 42.8762 "/>
  <path stroke-width="0.800000" stroke="#000000" fill="none" d="M945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 "/>
  <path fill="#f5a325" d="M99.4662 167.432 L143.986 151.097 L233.024 144.971 L322.063 130.678 L411.101 104.133 L500.14 98.0076 L589.179 79.6305 L678.217 79.6305 L767.256 89.84 L856.295 67.379 L945.333 53.0857 L945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 Z"/>
  <path fill="#f5a325" d="M99.4662 167.432 L143.986 151.097 L233.024 144.971 L322.063 130.678 L411.101 104.133 L500.14 98.0076 L589.179 79.6305 L678.217 79.6305 L767.256 89.84 L856.295 67.379 L945.333 53.0857 L945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 Z"/>
  <path stroke-width="0.800000" stroke="#000000" fill="none" d="M99.4662 167.432 L143.986 151.097 L233.024 144.971 L322.063 130.678 L411.101 104.133 L500.14 98.0076 L589.179 79.6305 L678.217 79.6305 L767.256 89.84 L856.295 67.379 L945.333 53.0857 "/>
  <path stroke-width="0.800000" stroke="#000000" fill="none" d="M945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 "/>
  <path fill="#efeb52" d="M99.4662 169.474 L143.986 155.181 L233.024 155.181 L322.063 138.846 L411.101 110.259 L500.14 106.175 L589.179 89.84 L678.217 93.9238 L767.256 102.091 L856.295 81.6724 L945.333 65.3371 L945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 Z"/>
  <path fill="#efeb52" d="M99.4662 169.474 L143.986 155.181 L233.024 155.181 L322.063 138.846 L411.101 110.259 L500.14 106.175 L589.179 89.84 L678.217 93.9238 L767.256 102.091 L856.295 81.6724 L945.333 65.3371 L945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 Z"/>
  <path stroke-width="0.800000" stroke="#000000" fill="none" d="M99.4662 169.474 L143.986 155.181 L233.024 155.181 L322.063 138.846 L411.101 110.259 L500.14 106.175 L589.179 89.84 L678.217 93.9238 L767.256 102.091 L856.295 81.6724 L945.333 65.3371 "/>
  <path stroke-width="0.800000" stroke="#000000" fill="none" d="M945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 "/>
  <path fill="#75c042" d="M99.4662 171.516 L143.986 163.349 L233.024 163.349 L322.063 159.265 L411.101 138.846 L500.14 134.762 L589.179 114.343 L678.217 114.343 L767.256 114.343 L856.295 102.091 L945.333 104.133 L945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 Z"/>
  <path fill="#75c042" d="M99.4662 171.516 L143.986 163.349 L233.024 163.349 L322.063 159.265 L411.101 138.846 L500.14 134.762 L589.179 114.343 L678.217 114.343 L767.256 114.343 L856.295 102.091 L945.333 104.133 L945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 Z"/>
  <path stroke-width="0.800000" stroke="#000000" fill="none" d="M99.4662 171.516 L143.986 163.349 L233.024 163.349 L322.063 159.265 L411.101 138.846 L500.14 134.762 L589.179 114.343 L678.217 114.343 L767.256 114.343 L856.295 102.091 L945.333 104.133 "/>
  <path stroke-width="0.800000" stroke="#000000" fill="none" d="M945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 "/>
  <path fill="#6a88c4" d="M99.4662 173.558 L143.986 171.516 L233.024 167.432 L322.063 161.307 L411.101 149.055 L500.14 144.971 L589.179 134.762 L678.217 142.93 L767.256 138.846 L856.295 128.636 L945.333 138.846 L945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 Z"/>
  <path fill="#6a88c4" d="M99.4662 173.558 L143.986 171.516 L233.024 167.432 L322.063 161.307 L411.101 149.055 L500.14 144.971 L589.179 134.762 L678.217 142.93 L767.256 138.846 L856.295 128.636 L945.333 138.846 L945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 Z"/>
  <path stroke-width="0.800000" stroke="#000000" fill="none" d="M99.4662 173.558 L143.986 171.516 L233.024 167.432 L322.063 161.307 L411.101 149.055 L500.14 144.971 L589.179 134.762 L678.217 142.93 L767.256 138.846 L856.295 128.636 L945.333 138.846 "/>
  <path stroke-width="0.800000" stroke="#000000" fill="none" d="M945.333 175.6 L856.295 175.6 L767.256 175.6 L678.217 175.6 L589.179 175.6 L500.14 175.6 L411.101 175.6 L322.063 175.6 L233.024 175.6 L143.986 175.6 L99.4662 175.6 "/>
  <text x="71.080208" y="28.666667" fill="#000000" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif" font-weight="500.000000">Series A</text>
  <text x="71.080208" y="28.666667" fill="#000000" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif" font-weight="500.000000">Series A</text>
  <path fill="#6a88c4" d="M62.6469 23.6667 M51.6469 23.6667 a5.5 5.5 0 1 0 11 0 a5.5 5.5 0 1 0 -11 0 "/>
  <path fill="#6a88c4" d="M62.6469 23.6667 M51.6469 23.6667 a5.5 5.5 0 1 0 11 0 a5.5 5.5 0 1 0 -11 0 "/>
  <text x="162.387500" y="28.666667" fill="#000000" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif" font-weight="500.000000">Series B</text>
  <text x="162.387500" y="28.666667" fill="#000000" font-size="14.666667" font-family="Arial,Helvetica,'Helvetica Neue',sans-serif" font-weight="500.000000">Series B</text>
+15 −5
Original line number Original line Diff line number Diff line
@@ -15,23 +15,33 @@
  areas (
  areas (
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-y (7 13 17 27 38 39 52 59 48 60 65)
    data-y (7 13 17 27 38 39 52 59 48 60 65)
    color 5)
    color 5
    stroke-width .6pt
    stroke-color (rgba 0 0 0 .5))
  areas (
  areas (
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-y (4 12 15 22 35 38 47 47 42 53 60)
    data-y (4 12 15 22 35 38 47 47 42 53 60)
    color 4)
    color 4
    stroke-width .6pt
    stroke-color (rgba 0 0 0 .4))
  areas (
  areas (
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-y (3 10 10 18 32 34 42 40 36 46 54)
    data-y (3 10 10 18 32 34 42 40 36 46 54)
    color 3)
    color 3
    stroke-width .6pt
    stroke-color (rgba 0 0 0 .5))
  areas (
  areas (
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-y (2 6 6 8 18 20 30 30 30 36 35)
    data-y (2 6 6 8 18 20 30 30 30 36 35)
    color 2)
    color 2
    stroke-width .6pt
    stroke-color (rgba 0 0 0 .5))
  areas (
  areas (
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-x (5 10 20 30 40 50 60 70 80 90 100)
    data-y (1 2 4 7 13 15 20 16 18 23 18)
    data-y (1 2 4 7 13 15 20 16 18 23 18)
    color 1)
    color 1
    stroke-width .6pt
    stroke-color (rgba 0 0 0 .5))
  grid (
  grid (
    color #eee
    color #eee
    tick-placement-x (none))
    tick-placement-x (none))
Loading