chrt
Version:
Chrt is a library for creating charts in the most spontaneous way possible.
207 lines (141 loc) • 5.16 kB
Markdown
# chrt
**Chrt** is a free, open source JavaScript library with the goal of creating a more spontaneous experience to make charts. Coding with chrt should be as simple as snapping together building blocks, where each block is an element of the chart.
### Observable Examples and Documentation:
- [Introducing Chrt - Observable](https://observablehq.com/@chrt/introducing-chrt?collection=@chrt/chrt)
### Resources
- [Modules](#modules)
- [How to install](#how-to-install)
- [Examples](#examples)
- [How to build](#how-to-build)
- [Testing](#testing)
### Modules
chrt is composed of several modules, each focusing on specific functionality:
#### Core and Base Functionality
- [chrt-core](https://github.com/chrt-io/chrt-core) - Core functionality and chart management
- [chrt-object](https://github.com/chrt-io/chrt-object) - Base object class for all components
#### Chart Components
- [chrt-line](https://github.com/chrt-io/chrt-line) - Line charts
- [chrt-bars](https://github.com/chrt-io/chrt-bars) - Bar and column charts
- [chrt-points](https://github.com/chrt-io/chrt-points) - Scatter plots and point-based visualizations
- [chrt-dotplot](https://github.com/chrt-io/chrt-dotplot) - Dot plot visualizations
#### Axes and Grid
- [chrt-axis](https://github.com/chrt-io/chrt-axis) - Axis components
- [chrt-grid](https://github.com/chrt-io/chrt-grid) - Grid lines
#### Enhancement Components
- [chrt-label](https://github.com/chrt-io/chrt-label) - Text labels and annotations
- [chrt-markers](https://github.com/chrt-io/chrt-markers) - Point markers and indicators
- [chrt-range](https://github.com/chrt-io/chrt-range) - Range and threshold indicators
- [chrt-annotation](https://github.com/chrt-io/chrt-annotation) - Chart annotations
#### Utilities
- [chrt-set](https://github.com/chrt-io/chrt-set) - Grouping and stacking functionality
- [chrt-interpolations](https://github.com/chrt-io/chrt-interpolations) - Line interpolation methods
Each module is independently maintained and documented. Visit the individual repositories for detailed documentation and examples.
## How to install
### Use in vanilla HTML
In vanilla HTML, you can load `chrt` from a CDN such as jsDelivr or you can download it locally. The following examples show how use `chrt` in your HTML page:
#### ESM+CDN
```html
<!doctype html>
<div id="container"></div>
<script type="module">
import * as chrt from "https://cdn.jsdelivr.net/npm/chrt/+esm";
chrt
.Chrt()
.add(chrt.line().data([3, 2, 5, 1, 2, 4, 5]))
.node(document.getElementById("container"));
</script>
```
#### UMD+CDN
```html
<!doctype html>
<div id="container"></div>
<script src="https://cdn.jsdelivr.net/npm/chrt@latest"></script>
<script type="module">
chrt
.Chrt()
.add(chrt.line().data([3, 2, 5, 1, 2, 4, 5]))
.node(document.getElementById("container"));
</script>
```
#### UMD+Local
```html
<!doctype html>
<div id="container"></div>
<script src="chrt.js"></script>
<script type="module">
chrt
.Chrt()
.add(chrt.line().data([3, 2, 5, 1, 2, 4, 5]))
.node(document.getElementById("container"));
</script>
```
### Install from npm
If you’re developing a web application using Node, you can install `chrt` via yarn, npm, or your preferred package manager.
```bash
npm install chrt
```
After the installation, you can use it as:
```javascript
import * as chrt from "chrt";
```
## Examples
```js
import * as chrt from "chrt";
// Create a basic line chart
const chart = chrt
.Chrt()
.node(document.querySelector("#chart"))
.size(600, 400)
.data([1, 2, 3, 4, 5])
.add(chrt.xAxis())
.add(chrt.yAxis())
.add(chrt.line());
```
For detailed documentation and examples, visit:
- [Introducing Chrt](https://observablehq.com/@chrt/introducing-chrt?collection=@chrt/chrt)
- [Chrt Examples Collection](https://observablehq.com/collection/@chrt/chrt)
## How to build
### Install the dependencies
```
npm install
```
### Build the package
```
npm build
```
### Developing
If you want to develop and see the changes reloaded live into another app you can use the watch script
```
npm run watch
```
## Use it as a module
### Method 1 - tgz package
#### Use the tgz provided in the repository
You can use the `chrt-VERSION.tgz` package. The following commands will expand the chrt module in the `node_modules` folder of your project. Ready to be used with the usual `import` command:
```
cp chrt-VERSION.tgz SOMEWHERE
cd myproject
npm install SOMEWHERE/chrt-VERSION.tgz
```
#### Create a tgz npm package
You can create a package for testing with
```
npm pack
```
This command will create a file called `chrt-VERSION.tgz` in the root folder of chrt.
### Method 2 - symlinked package
#### Create a global node module
```
npm link
```
This creates `chrt` module inside your global `node_modules` so that you can import it with `import {chrtLine} from 'chrt';`
#### Use the module in a different app
```
npm link chrt
```
This will create a sym link to the module created in your global.
## Use it in your code
After having installed or sym-linked the node you can use it as usual
```
import * as chrt from 'chrt';
```