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);