Skip to content

Latest commit

 

History

History
98 lines (70 loc) · 2.6 KB

README.md

File metadata and controls

98 lines (70 loc) · 2.6 KB

🦜 Sparrow

Sparrow is a tiny plot library based on the grammar of graphics for learning purpose. It aims at helping people to better understand visualization and making it easier for them to choose the the suitable visualization library for their analysis task.

📎 Links

✨ Features

The name sparrow comes from an old Chinese proverb: "Though sparrow is small, but it has all organs". As its name, Sparrow has the following features:

  • Small: The code is less than 2000 lines in total with zero dependencies.
  • Elegant: It can plot in both normal and sketchy, hand-drawn-like, style.
  • Complete: It can plot most of charts in common use.

📦 Installation

$ npm i @sparrow-vis/sparrow

🔨 Get Started

  • Specifies chart by JavaScript Object.
import { plot } from "@sparrow-vis/sparrow";

const data = [
  { genre: "Sports", sold: 275 },
  { genre: "Strategy", sold: 115 },
  { genre: "Action", sold: 120 },
  { genre: "Shooter", sold: 350 },
  { genre: "Other", sold: 150 },
];

const chart = plot({
  data,
  type: "interval",
  encodings: {
    x: "genre",
    y: "sold",
    fill: "genre",
  },
});

document.getElementById("container").appendChild(chart);

example

$ npm i @sparrow-vis/rough-renderer
import { plot } from "@sparrow-vis/sparrow";
import { createPlugin } from "@sparrow-vis/rough-renderer";

const data = [
  { genre: "Sports", sold: 275 },
  { genre: "Strategy", sold: 115 },
  { genre: "Action", sold: 120 },
  { genre: "Shooter", sold: 350 },
  { genre: "Other", sold: 150 },
];

const chart = plot({
  data,
  type: "interval",
  renderer: createPlugin(),
  encodings: {
    x: 'genre',
    y: 'sold',
    fill: 'genre'
  },
});

document.getElementById("container").appendChild(chart);

😝 Thanks

The API design is inspired by the following awesome projects G2, Vega-Lite API and Observable Plot.

📄 License

MIT