@hyperobjekt/legend
v3.0.4
Published
<svg class="jss6" width="300" height="24"><g transform="translate(24 4)"><rect x="0" y="0" height="16" width="50.400000000000006" style="fill: rgb(0, 0, 4);"></rect><rect x="50.400000000000006" y="0" height="16" width="50.400000000000006" style="fill: rgb
Downloads
8
Readme
@hyperobjekt/legend
2003605206808401.0k
This package consists of react components for creating data scales that can be used for data readouts or legends.
It allows for several different types of scales, including:
- continuous scales
- category scales
- quantile scales
- quantize scales
- threshold scales
Each scale consists of a wrapper component with one or more child components.
<Scale.Colors />
: renders the scale's colors<Scale.Ticks />
: renders an axis to label the scale<Scale.Marker />
renders a marker on the scale at a given value
See the storybook for further documentation and usage examples.
Usage
Install the package with:
npm i @hyperobjekt/legend
or
yarn add @hyperobjekt/legend
Import the required components and the base CSS styles:
import Scale from "@hyperobjekt/legend";
import "@hyperobjekt/legend/Scale.css";
Assemble the scale parts as desired:
<Scale type="continuous" min={0} max={100} colors="YlGnBu">
<Scale.Colors />
<Scale.Ticks />
<Scale.Marker value={33} pointer />
</Scale>
Components
<Scale />
The parent component that contains the scale configuration.
Props
type
: determines which type of scale to use ("category", "continuous", "quantize", "quantile", "threshold")width
: determines the width of the scalecolors
: either an array of colors or a string representing a scale from d3-scale-chromaticmargin
: an object containing top, left, bottom, right margins for the scalenice
: adjusts the scale to use "nice" values (e.g. 1000 instead of 994)data
: A set of data values to use for the scaleaccessor
: A function that selects a data value (used whendata
is an array of objects instead of an array of values)thresholds
: Contains threshold points when usingthreshold
scale typechunks
: Determines how many groups to split data into forquantize
andquantile
scales.min
: Minimum value for the scalemax
: Maximum value for the scale
Usage
See the storybook for usage and examples.
<Scale.Colors />
Renders a color scale for the given data and scale type.
Props
height
: height of the color scale
Usage
See the storybook for usage
<Scale.Ticks />
Renders tick labels for the given data and scale type.
Props
ticks
: the target number of ticks to show on the scale (continuous)tickFormat
: a formatter function for ticks on the scaletickValues
: used to explicitly specify where to render ticks on the scaletickSize
: size of the ticks on the scaletickSizeInner
: size of the inner ticks on the scaletickSizeOuter
: size of the outer ticks on the scaletickPadding
: padding space between ticks
Usage
See the storybook for usage
<Scale.Marker />
Renders a marker with optional label at a given location on the scale.
Props
value
: determines which point on the scale has the markerpointer
: when true, renders a pointer on the scale at the valuerenderPointer
: a function that takes {color, position, value} and returns JSX to render the pointercolor
: overrides the pointer color (uses value color by default)
Usage
See the storybook for usage
Utility Functions
The following utility functions are provided by this package:
getScale(type, {data, accessor, min, max, thresholds, chunks })
Returns all relevant scales for the given type
and config object.
getColors(value, numColors)
This function will return an array of hex color strings based on the provided value
parameter.
Parameters
value
: either a string containing a scale name from d3-scale-chromatic (e.g. "YlGnBu") or an array of color strings (e.g. ["#f00", "#0f0", "#00f"])numColors
: the number of colors to return
getColorScale(type, domain, colors)
Returns a color scale that maps a data domain to a color string.
type
: a string representing scale type ("category", "quantile", "quantize", "threshold", "linear", or "sequential")domain
: the data domain for the scalecolors
: either a string containing a scale name from d3-scale-chromatic (e.g. "YlGnBu") or an array of color strings (e.g. ["#f00", "#0f0", "#00f"]) that will be used to map domain values to
getPositionScale(type, domain, range, options)
Returns a scale that maps a data domain to a pixel value range.
type
: a string representing scale type ("category", "quantile", "threshold", or "linear")domain
: the data domain for the scalerange
: the range of pixel values to map tooptions
: options for the scalenice
: when true, the domain is adjusted to have nice values
useScaleContext()
You can use the useScaleContext()
hook provided by this package to create your own child components. The scale context provides the following:
width
: width of the scalemargin
: margins for the scaledata
: data for the scaleposition
: a scale for mapping values to position on the scalecolor
: a scale for mapping values to colorschunks
: objects containing data for "chunks" on discrete scales (not available on continuous scales)extent
: an array with the [min, max] of the position / color scale