public template group(Specs...)

Groups data by colour label etc.

Will also add DefaultValues for label etc to the data. It is also possible to specify exactly what to group by on as a template parameter. See example.

Example

import std.range : walkLength;
auto aes = Aes!(double[], "x", string[], "colour", double[], "alpha")
    ([0.0,1,2,3], ["a","a","b","b"], [0.0,1,0,1]);

assertEqual(group!("colour","alpha")(aes).walkLength,4);
assertEqual(group!("alpha")(aes).walkLength,2);

// Ignores field that does not exist
assertEqual(group!("alpha","abcdef")(aes).walkLength,2);

// Should return one group holding them all
assertEqual(group!("abcdef")(aes)[0].walkLength,4);

assertEqual(group(aes).walkLength,4);

Example

auto aes = Aes!(double[], "x", double[], "y", string[], "colour")([1.0,
    2.0, 1.1], [3.0, 1.5, 1.1], ["a", "b", "a"]);

import std.range : walkLength, front, popFront;

auto grouped = aes.group;
assertEqual(grouped.walkLength, 2);
size_t totalLength = grouped.front.walkLength;
assertGreaterThan(totalLength, 0);
assertLessThan(totalLength, 3);
grouped.popFront;
assertEqual(totalLength + grouped.front.walkLength, 3);