# d3fc-shape
A collection of SVG/canvas path generators for creating chart series
[Main D3FC package](https://github.com/d3fc/d3fc)
## Installing
```bash
npm install @d3fc/d3fc-shape
```
## API Reference
* [Example usage](#example-usage)
* [Bar](#bar)
* [Boxplot](#boxplot)
* [Candlestick](#candlestick)
* [Error Bar](#error-bar)
* [OHLC](#ohlc)
All of the exported functions have the same signature, `(context) => generator`. The context supplied must be an implementation of the subset of Context2D methods as implemented by [d3-path](https://github.com/d3/d3-path) (or indeed a Context2D!).
You can then configure the `generator` by invoking the relevant methods (e.g. `generator.x(/* ... */)`) as described below. Once suitably configured invoke the generator function itself with the required data (e.g. `generator([/* ... */])`).
### Example usage
#### SVG
```javascript
import { path } from 'd3-path';
import { shapeCandlestick } from 'd3fc-shape';
const ctx = path();
const candlestick = shapeCandlestick()
.x((d, i) => i)
.open((d) => d.open)
.high((d) => d.high)
.low((d) => d.low)
.close((d) => d.close);
d3.select('path')
.datum([
{ open: 4, high: 5, low: 3, close: 3 }
])
.attr('d', candlestick);
```
#### Canvas
```javascript
import { shapeCandlestick } from 'd3fc-shape';
const ctx = document.querySelector('canvas').getContext('2d');
const candlestick = shapeCandlestick()
.context(ctx)
.x((d, i) => i)
.open((d) => d.open)
.high((d) => d.high)
.low((d) => d.low)
.close((d) => d.close);
candlestick([
{ open: 4, high: 5, low: 3, close: 3 }
]);
ctx.stroke();
```
### Bar
# fc.**shapeBar**(*context*)
# *shapeBar*.**x**(*accessorFunc*)
# *shapeBar*.**y**(*accessorFunc*)
# *shapeBar*.**width**(*accessorFunc*)
# *shapeBar*.**height**(*accessorFunc*)
The attribute accessor methods available to set the way the bar chart accesses the data.
The `accessorFunc(datum, index)` function is called on each item of the data, and returns
the relevant value for the relevant attribute for that item.
# *shapeBar*.**horizontalAlign**(*alignment*)
`alignment` is one of: `left`, `right` or `center` (default)
# *shapeBar*.**verticalAlign**(*alignment*)
`alignment` is one of: `bottom`, `top` or `center` (default)
### Boxplot
# fc.**shapeBoxPlot**(*context*)
# *shapeBoxPlot*.**value**(*accessorFunc*)
# *shapeBoxPlot*.**median**(*accessorFunc*)
# *shapeBoxPlot*.**upperQuartile**(*accessorFunc*)
# *shapeBoxPlot*.**lowerQuartile**(*accessorFunc*)
# *shapeBoxPlot*.**high**(*accessorFunc*)
# *shapeBoxPlot*.**low**(*accessorFunc*)
# *shapeBoxPlot*.**width**(*accessorFunc*)
The attribute accessor methods available to set the way the bar chart accesses the data.
The `accessorFunc(datum, index)` function is called on each item of the data, and returns
the relevant value for the relevant attribute for that item.
# *shapeBoxPlot*.**cap**(*accessorFunc*)
The `accessorFunc(item, index)` function is called on each item of the data, and returns
the **proprtion** of the box width that the caps width should be.
# *shapeBoxPlot*.**orient**(*orientation*)
Orientation of the chart. Either `horizontal` (default) or `vertical`
### Candlestick
# fc.**shapeCandlestick**(*context*)
# *shapeCandlestick*.**x**(*accessorFunc*)
# *shapeCandlestick*.**open**(*accessorFunc*)
# *shapeCandlestick*.**high**(*accessorFunc*)
# *shapeCandlestick*.**low**(*accessorFunc*)
# *shapeCandlestick*.**close**(*accessorFunc*)
# *shapeCandlestick*.**width**(*accessorFunc*)
The attribute accessor methods available to set the way the bar chart accesses the data.
The `accessorFunc(datum, index)` function is called on each item of the data, and returns
the relevant value for the relevant attribute for that item.
### Error Bar
# fc.**shapeErrorBar**(*context*)
# *shapeErrorBar*.**value**(*accessorFunc*)
# *shapeErrorBar*.**high**(*accessorFunc*)
# *shapeErrorBar*.**low**(*accessorFunc*)
# *shapeErrorBar*.**width**(*accessorFunc*)
The attribute accessor methods available to set the way the bar chart accesses the data.
The `accessorFunc(datum, index)` function is called on each item of the data, and returns
the relevant value for the relevant attribute for that item.
# *shapeErrorBar*.**orient**(*orientation*)
Orientation of the chart. Either `horizontal` (default) or `vertical`
### OHLC
# fc.**shapeOhlc**(*context*)
# *shapeOhlc*.**x**(*accessorFunc*)
# *shapeOhlc*.**open**(*accessorFunc*)
# *shapeOhlc*.**high**(*accessorFunc*)
# *shapeOhlc*.**low**(*accessorFunc*)
# *shapeOhlc*.**close**(*accessorFunc*)
# *shapeOhlc*.**width**(*accessorFunc*)
The attribute accessor methods available to set the way the bar chart accesses the data.
The `accessorFunc(datum, index)` function is called on each item of the data, and returns
the relevant value for the relevant attribute for that item.
# *shapeOhlc*.**orient**(*orientation*)
Orientation of the chart. Either `horizontal` (default) or `vertical`