jitterX.js 901 B

12345678910111213141516171819202122232425
  1. import { deepMix } from '@antv/util';
  2. import { column, columnOf } from './utils/helper';
  3. import { rangeOf, interpolate } from './jitter';
  4. /**
  5. * The JitterX transform produce dy channels for marks (especially for point)
  6. * with ordinal x and y dimension, say to make them jitter in their own space.
  7. */
  8. export const JitterX = (options = {}) => {
  9. const { padding = 0, random = Math.random } = options;
  10. return (I, mark) => {
  11. const { encode, scale } = mark;
  12. const { x: scaleX } = scale;
  13. const [X] = columnOf(encode, 'x');
  14. const rangeX = rangeOf(X, scaleX, padding);
  15. const DX = I.map(() => interpolate(random(), ...rangeX));
  16. return [
  17. I,
  18. deepMix({ scale: { x: { padding: 0.5 } } }, mark, {
  19. encode: { dx: column(DX) },
  20. }),
  21. ];
  22. };
  23. };
  24. JitterX.props = {};
  25. //# sourceMappingURL=jitterX.js.map