jitter.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var tslib_1 = require("tslib");
  4. var _ = require("@antv/util");
  5. var constant_1 = require("../constant");
  6. var adjust_1 = require("./adjust");
  7. function randomNumber(min, max) {
  8. return (max - min) * Math.random() + min;
  9. }
  10. var Jitter = /** @class */ (function (_super) {
  11. tslib_1.__extends(Jitter, _super);
  12. function Jitter() {
  13. return _super !== null && _super.apply(this, arguments) || this;
  14. }
  15. Jitter.prototype.process = function (groupDataArray) {
  16. var groupedDataArray = _.clone(groupDataArray);
  17. // 之前分组之后的数据,然后有合并回去(和分组前可以理解成是一样的)
  18. var mergeData = _.flatten(groupedDataArray);
  19. // 返回值
  20. this.adjustData(groupedDataArray, mergeData);
  21. return groupedDataArray;
  22. };
  23. /**
  24. * 当前数据分组(index)中,按照维度 dim 进行 jitter 调整
  25. * @param dim
  26. * @param values
  27. * @param dataArray
  28. */
  29. Jitter.prototype.adjustDim = function (dim, values, dataArray) {
  30. var _this = this;
  31. // 在每一个分组中,将数据再按照 dim 分组,用于散列
  32. var groupDataArray = this.groupData(dataArray, dim);
  33. return _.each(groupDataArray, function (data, dimValue) {
  34. return _this.adjustGroup(data, dim, parseFloat(dimValue), values);
  35. });
  36. };
  37. // 随机出来的字段值
  38. Jitter.prototype.getAdjustOffset = function (range) {
  39. var pre = range.pre, next = range.next;
  40. // 随机的范围
  41. var margin = (next - pre) * constant_1.GAP;
  42. return randomNumber(pre + margin, next - margin);
  43. };
  44. // adjust group data
  45. Jitter.prototype.adjustGroup = function (group, dim, dimValue, values) {
  46. var _this = this;
  47. // 调整范围
  48. var range = this.getAdjustRange(dim, dimValue, values);
  49. _.each(group, function (data) {
  50. data[dim] = _this.getAdjustOffset(range); // 获取调整的位置
  51. });
  52. return group;
  53. };
  54. return Jitter;
  55. }(adjust_1.default));
  56. exports.default = Jitter;
  57. //# sourceMappingURL=jitter.js.map