jitter.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
  2. var each = require('@antv/util/lib/each');
  3. var mix = require('@antv/util/lib/mix');
  4. var ArrayUtil = {
  5. merge: require('@antv/util/lib/array/merge')
  6. };
  7. var Adjust = require('./base');
  8. var AdjustMixin = require('./mixin/adjust');
  9. var Jitter =
  10. /*#__PURE__*/
  11. function (_Adjust) {
  12. _inheritsLoose(Jitter, _Adjust);
  13. function Jitter() {
  14. return _Adjust.apply(this, arguments) || this;
  15. }
  16. var _proto = Jitter.prototype;
  17. _proto._initDefaultCfg = function _initDefaultCfg() {
  18. this.xField = null; // 调整对应的 x 方向对应的字段名称
  19. this.yField = null; // 调整对应的 y 方向对应的字段名称
  20. this.adjustNames = ['x', 'y']; // 指x,y
  21. this.groupFields = null; // 参与分组的数据维度
  22. };
  23. _proto.processAdjust = function processAdjust(dataArray) {
  24. var self = this;
  25. var mergeData = ArrayUtil.merge(dataArray);
  26. self.adjDataArray = dataArray;
  27. self.mergeData = mergeData;
  28. self.adjustData(dataArray, mergeData);
  29. self.adjFrames = null;
  30. self.mergeData = null;
  31. };
  32. _proto.getAdjustOffset = function getAdjustOffset(pre, next) {
  33. var r = Math.random(); // 随机位置,均匀分布
  34. var avg = next - pre; // * length
  35. var append = avg * 0.05;
  36. return pre + append + avg * 0.9 * r;
  37. }; // adjust group data
  38. _proto._adjustGroup = function _adjustGroup(group, dim, key, values) {
  39. var self = this;
  40. var range = self.getAdjustRange(dim, key, values);
  41. each(group, function (record) {
  42. record[dim] = self.getAdjustOffset(range.pre, range.next); // 获取调整的位置
  43. });
  44. };
  45. _proto.adjustDim = function adjustDim(dim, values, data) {
  46. var self = this;
  47. var groupData = self.groupData(data, dim);
  48. each(groupData, function (group, key) {
  49. key = parseFloat(key);
  50. self._adjustGroup(group, dim, key, values);
  51. });
  52. };
  53. return Jitter;
  54. }(Adjust);
  55. mix(Jitter.prototype, AdjustMixin);
  56. Adjust.Jitter = Jitter;
  57. module.exports = Jitter;