Best-fit lines

The code below is the source for this graph.

<?php
// Best-fit lines
require_once 'SVGGraph/autoloader.php';

$colours = ['#e11', '#1b1', '#11e', '#888'];

$settings = [
  'auto_fit' => true,
  'show_tooltips' => false,
  'back_stroke_width' => 0,
  'axis_max_h' => 20,
  'grid_division_v' => 10,
  'marker_size' => 4,
  'marker_type' => 'cross',
  'grid_back_colour' => '#f9f9f9',
  'pad_left' => 5,
  'pad_top' => 5,
  'pad_right' => 5,
  'pad_bottom' => 5,
  'structured_data' => true,
  'best_fit' => 'straight',
  //'best_fit_colour' => $colours,
  'best_fit_colour' => 'fillColour',
  'best_fit_range' => [ [ NULL, NULL], [1, 6], [0, 9] ],
  'best_fit_project' => 'both',
  'best_fit_project_opacity' => 0.5,
  'grid_back_stripe' => true,
  'grid_back_stripe_colour' => '#fff',
  'shape' => [
    'rect', 'x' => 'g1', 'y' => 'gt', 'width' => 'u5', 'height' => 'gh',
    'fill' => '#8c8', 'stroke' => 'none', 'opacity' => 0.2, 
  ],
];

$type = 'MultiScatterGraph';
$values = [];
srand(100);
for($i = 2; $i < 12; ++$i) {
  for($c = 1; $c < 5; ++$c) {
    $val = [$i + 0.05 * (rand(1, 100) - 50)];
    $val[$c] = $c + 0.95 * rand($c, 100);
    $values[] = $val;
  }
}

$graph = new Goat1000\SVGGraph\SVGGraph(600, 200, $settings);
$graph->colours($colours);
$graph->values($values);

$graph->render($type);

Please note: the source code above comes from a script used to generate one of the example graphs on the site. This is simply a wrapper page to apply highlighting and make the source code easier to read, so there is no content here to describe what the source code is doing.