@uwdata/vgplot
Version:
An API for interactive Mosaic-powered visualizations and dashboards.
136 lines (107 loc) • 5.09 kB
JavaScript
import {
Mark,
ConnectedMark,
ContourMark,
Density1DMark,
Density2DMark,
DenseLineMark,
ErrorBarMark,
GeoMark,
HeatmapMark,
HexbinMark,
RasterMark,
RasterTileMark,
RegressionMark,
} from '@uwdata/mosaic-plot';
const decorators = new Set([
'frame',
'axisX', 'axisY', 'axisFx', 'axisFy',
'gridX', 'gridY', 'gridFx', 'gridFy',
'hexgrid',
'graticule', 'sphere'
]);
function mark(type, data, channels = {}) {
if (arguments.length === 2 && !Array.isArray(data)) {
channels = data;
data = decorators.has(type) ? null : [{}];
}
const MarkClass = type.startsWith('area') || type.startsWith('line')
? ConnectedMark
: Mark;
return explicitType(MarkClass, type, data, channels);
}
function explicitType(MarkClass, type, data, channels) {
return plot => {
plot.addMark(new MarkClass(type, data, channels));
};
}
function implicitType(MarkClass, data, channels) {
return plot => {
plot.addMark(new MarkClass(data, channels));
};
}
export const area = (...args) => mark('area', ...args);
export const areaX = (...args) => mark('areaX', ...args);
export const areaY = (...args) => mark('areaY', ...args);
export const line = (...args) => mark('line', ...args);
export const lineX = (...args) => mark('lineX', ...args);
export const lineY = (...args) => mark('lineY', ...args);
export const barX = (...args) => mark('barX', ...args);
export const barY = (...args) => mark('barY', ...args);
export const cell = (...args) => mark('cell', ...args);
export const cellX = (...args) => mark('cellX', ...args);
export const cellY = (...args) => mark('cellY', ...args);
export const rect = (...args) => mark('rect', ...args);
export const rectX = (...args) => mark('rectX', ...args);
export const rectY = (...args) => mark('rectY', ...args);
export const dot = (...args) => mark('dot', ...args);
export const dotX = (...args) => mark('dotX', ...args);
export const dotY = (...args) => mark('dotY', ...args);
export const circle = (...args) => mark('circle', ...args);
export const hexagon = (...args) => mark('hexagon', ...args);
export const text = (...args) => mark('text', ...args);
export const textX = (...args) => mark('textX', ...args);
export const textY = (...args) => mark('textY', ...args);
export const ruleX = (...args) => mark('ruleX', ...args);
export const ruleY = (...args) => mark('ruleY', ...args);
export const tickX = (...args) => mark('tickX', ...args);
export const tickY = (...args) => mark('tickY', ...args);
export const vector = (...args) => mark('vector', ...args);
export const vectorX = (...args) => mark('vectoX', ...args);
export const vectorY = (...args) => mark('vectorY', ...args);
export const spike = (...args) => mark('spike', ...args);
export const image = (...args) => mark('image', ...args);
export const densityX = (...args) => explicitType(Density1DMark, 'areaX', ...args);
export const densityY = (...args) => explicitType(Density1DMark, 'areaY', ...args);
export const density = (...args) => implicitType(Density2DMark, ...args);
export const denseLine = (...args) => implicitType(DenseLineMark, ...args);
export const contour = (...args) => implicitType(ContourMark, ...args);
export const heatmap = (...args) => implicitType(HeatmapMark, ...args);
export const raster = (...args) => implicitType(RasterMark, ...args);
export const rasterTile = (...args) => implicitType(RasterTileMark, ...args);
export const hexbin = (...args) => implicitType(HexbinMark, ...args);
export const hexgrid = (...args) => mark('hexgrid', ...args);
export const regressionY = (...args) => implicitType(RegressionMark, ...args);
export const errorbarX = (...args) => explicitType(ErrorBarMark, 'ruleY', ...args);
export const errorbarY = (...args) => implicitType(ErrorBarMark, 'ruleX', ...args);
export const voronoi = (...args) => mark('voronoi', ...args);
export const voronoiMesh = (...args) => mark('voronoiMesh', ...args);
export const delaunayLink = (...args) => mark('delaunayLink', ...args);
export const delaunayMesh = (...args) => mark('delaunayMesh', ...args);
export const hull = (...args) => mark('hull', ...args);
export const arrow = (...args) => mark('arrow', ...args);
export const link = (...args) => mark('link', ...args);
export const frame = (...args) => mark('frame', ...args);
export const axisX = (...args) => mark('axisX', ...args);
export const axisY = (...args) => mark('axisY', ...args);
export const axisFx = (...args) => mark('axisFx', ...args);
export const axisFy = (...args) => mark('axisFy', ...args);
export const gridX = (...args) => mark('gridX', ...args);
export const gridY = (...args) => mark('gridY', ...args);
export const gridFx = (...args) => mark('gridFx', ...args);
export const gridFy = (...args) => mark('gridFy', ...args);
export const geo = (...args) => implicitType(GeoMark, ...args);
export const sphere = (...args) => mark('sphere', ...args);
export const graticule = (...args) => mark('graticule', ...args);
export const waffleX = (...args) => mark('waffleX', ...args);
export const waffleY = (...args) => mark('waffleY', ...args);