npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vcharts

v0.2.1

Published

Reusable [Vega](http://vega.github.io/vega/) charts.

Downloads

15

Readme

vcharts

Reusable Vega charts.

Getting Started

Installation with bower

bower install vcharts

Setup a scaffold index.html with the following contents:

<html>
<head>
  <meta charset="UTF-8">
  <script src="bower_components/d3/d3.min.js"></script>
  <script src="bower_components/vega/vega.min.js"></script>
  <script src="bower_components/vcharts/vcharts.min.js"></script>
</head>
<body>
  <div id="vis"></div>
<script>
vcharts.chart('xy', {
  el: '#vis',
  series: [
    {
      name: 'series1',
      values: [
        {x: 0, y: 0},
        {x: 1, y: 1},
        {x: 2, y: 2},
        {x: 3, y: 3}
      ],
    }
  ]
});
</script>
</body>

Installation with npm

npm install vcharts vega d3

Setup a scaffold index.html with the following contents:

<html>
<head>
  <meta charset="UTF-8">
  <script src="node_modules/d3/d3.min.js"></script>
  <script src="node_modules/vega/vega.min.js"></script>
  <script src="node_modules/vcharts/vcharts.min.js"></script>
</head>
<body>
  <div id="vis"></div>
<script>
vcharts.chart('xy', {
  el: '#vis',
  series: [
    {
      name: 'series1',
      values: [
        {x: 0, y: 0},
        {x: 1, y: 1},
        {x: 2, y: 2},
        {x: 3, y: 3}
      ],
    }
  ]
});
</script>
</body>

View your visualization

Start your favorite local web server:

python -m SimpleHTTPServer 8080 .

Visit http://localhost:8080/index.html.

API

vcharts.chart()

Initialize a chart with the call

var chart = vcharts.chart(chartType, options);

where chartType is one of the supported chart types.

The options argument is an object specifying the chart's options. The following options are available to all charts:

| Option | Type | Description | | :-------- | :----- | :----------- | | el | DOM element or selector string | The container for the visualization. | | renderer | String | Whether to render in "svg" or "canvas" mode (default "canvas"). | | width | Number | Width of the chart in pixels. | | height | Number | Height of the chart in pixels. |

If width and/or height are not specified, they are computed based on the width and height of the enclosing element el.

chart.update()

Note that the width and height options are not dynamically bound if left unset, so if the width or height of el changes, or has just been set programmatically, you may need to call update either in a setTimeout or window.resize callback. The following will set the width and height correctly after a DOM update:

var div = $('#mydiv').css('width', '100px').css('height', '400px');

// Width and height will not be picked up yet since the DOM is not updated.
var chart = vcharts.chart(chartType, { el: div.get(0), /* more options */ });

// Refresh width and height here.
setTimeout(function () { chart.update(); }, 1);

The following will resize the chart when the window resizes:

var chart = vcharts.chart(chartType, { el: '#mydiv', /* more options */ });

// Update size on window resize.
window.onresize = function () {
    chart.update();
};

vcharts.chart('vega', options)

Generic Vega renderer. The following additional option is supported:

| Option | Type | Description | | :-------- | :----- | :----------- | | spec | Object | The Vega spec to render. |

vcharts.chart('xy', options)

Plots (x,y) coordinate pairs as points and/or lines. The following additional options are supported:

| Option | Type | Description | | :-------- | :----- | :----------- | | series | Array of Series | The data series to render. | | xAxis | Axis | An object describing the x axis. | | yAxis | Axis | An object describing the y axis. | | tooltip | String | Mustache-style string template where d is the hovered data element, e.g. '{{d.x}} -- {{d.y}}'. |

Series

A series describes the data and visual mappings for a list of x,y coordinates. Series objects have the following options:

| Option | Type | Description | | :-------- | :----- | :----------- | | name | String | The name of the series to show in the legend. | | values | Array | The array of items in the series. | | x | String | X position field. | | y | String | Y position field. | | color | String | Color as any CSS-compatible color string representation (e.g. 'blue', '#ffffff'). | | line | Boolean | Connect the series with a line (default true). | | point | Boolean | Render points (default false). | | pointSize | Number | The size of points in square pixels. | | lineWidth | Number | The width of the line in pixels. |

Axis

An axis describes how to scale and display an axis. Axis objects have the following options:

| Option | Type | Description | | :-------- | :----- | :----------- | | title | String | The axis title. | | type | String | The mode for axis scale, either 'linear' (default) or 'time'. | | domain | Array | Two-element domain for the axis range of the form [min, max]. Defaults to the range of the data. | | grid | Boolean | Show gridlines (default false). | | pan | Boolean | Allow panning this axis with mouse drags (default true). | | zoom | Boolean | Allow zooming this axis with mouse wheel or swipe (default true). | | ticks | Array | Specific values for tick marks on the axis. |

vcharts.chart('bullet', options)

Bullet graphs based on the description by Perceptual Edge. The following additional options are supported:

| Option | Type | Description | | :-------- | :----- | :----------- | | value | Number | The value to display as a solid bar. | | title | String | Title to display to the left. | | subtitle | String | Subtitle to display below the title. | | markers | Array | Comparative markers to display with the form {value: Number}, displayed as a vertical line. | | ranges | Array of Range | Background ranges to display under the chart. | | axisFontSize | Number | Font size for axis labels. | | labelFontSize | Number | Font size for value label. | | titleFontSize | Number | Font size for title. | | subtitleFontSize | Number | Font size for subtitle. |

Example

vcharts.chart('bullet', {
  el: '#vis',
  value: 0.8,
  title: 'Error',
  subtitle: '% deviation from ground truth',
  markers: [{value: 0.05}],
  ranges: [
    {min: 0, max: 0.1, background: '#eeeeee'},
    {min: 0.1, max: 0.75, background: '#aaaaaa'},
    {min: 0.75, max: 1, background: '#888888'}
  ]
});

Range

A range represents a visual range of an axis with background and foreground colors. Options available are:

| Option | Type | Description | | :-------- | :----- | :----------- | | min | Number | The minimum value of the range. | | max | Number | The maximum value of the range. | | background | String | The background color of the range. | | foreground | String | The color of values and markers that fall in this range (default: 'black'). |

vcharts.chart('bar', options)

Plots a bar chart. The following additional options are supported:

| Option | Type | Description | | :-------- | :----- | :----------- | | values | Array | The array of items in the series. | | x | String | Field used to set the bar x position. | | y | String | Field used to set bar height. | | fill | String | Fill color for the bars. | | hover | String | Fill color when bar is hovered. | | xAxis | Axis | An object describing the x axis. | | yAxis | Axis | An object describing the y axis. | | tooltip | String | Mustache-style string template where d is the hovered data element, e.g. '{{d.x}} -- {{d.y}}'. |

vcharts.chart('histogram', options)

| Option | Type | Description | | :-------- | :----- | :----------- | | values | Array | The array of items in the series. | | bin | String | Field to use for bin values. | | discrete | Boolean | If true, treats values as discrete and makes bins for each unique value. If false, treats values as continuous and makes bins that span the range of the data. | | maxBins | Number | The maximum number of bins to use. Unused if discrete is true. | | fill | String | Fill color for the bars. | | hover | String | Fill color when bar is hovered. | | xAxis | Axis | An object describing the x axis. | | yAxis | Axis | An object describing the y axis. | | tooltip | String | Mustache-style string template where d is the hovered bin with the fields bin and count, e.g. 'Count: {{d.count}}'. |

vcharts.chart('xymatrix', options)

| Option | Type | Description | | :-------- | :----- | :----------- | | values | Array | The array of items in the series. | | fields | Array | The list of fields to use in the matrix of scatterplots. | | color.field | String | If set, colors by this field. | | color.type | String | If color.field is set, specifies the type of scale (e.g. "ordinal" or "linear"). | | color.value | String | If set, colors by this constant color. |

vcharts.chart('box', options)

Statistical box plot based on work by Jeffrey Heer and Randy Zwitch.

| Option | Type | Description | | :-------- | :----- | :----------- | | values | Array | The array of items in the series. | | fields | Array | The fields containing the values to summarize in the box plot. | | group | String | The field to group by for multiple boxes per field (optional). | | fill | String | The fill color for the box. | | orient | String | The orientation of the boxes, either horizontal or vertical. | | boxSize | Number | A number from 0 to 1 to specify box size, where a value of 1 makes box widths touch each other, and lower numbers produce spacing between boxes. | | capSize | Number | A number from 0 to 1 to specify end cap size, where a value of 1 makes caps widths touch each other, and lower numbers produce spacing between caps. |

vcharts.chart('gantt', options)

Gantt chart.

| Option | Type | Description | | :-------- | :----- | :----------- | | values | Array | The array of items in the Gantt chart. Each object should have the fields label (the name of the item), level (either 1 for top-level or 2 for secondary), enter (the start value), and leave (the end value). Each item will be represented by a horizontal bar from enter to leave. | | xAxis | Axis | Attributes for the x (time) axis. |

Development Build

Clone the repository:

git clone https://github.com/XDATA-Year-3/vcharts.git
cd vcharts

Build the library:

npm run build

Run the tests:

npm run test

Release Instructions

To release a new verison x.y.z, first release to npm:

export VERSION=x.y.z
npm run test && npm run lint && npm run build # Should run without errors
git checkout -b version-$VERSION

Edit package.json to set the version to x.y.z, then:

git commit -am "Version bump to $VERSION"
git push -u origin version-$VERSION

Create PR on GitHub and merge to master, then:

git checkout master
git pull
npm run test && npm run lint && npm run build # This should again run without errors.
npm publish

Next, release to Bower, which amounts to creating a tag with the appropriate name that contains the built library, which is normally gitignored.

git checkout -b bower-$VERSION
git add -f vcharts*
git commit -am "Bower $VERSION release"
git tag $VERSION
git push origin $VERSION

Go to GitHub releases page and edit the tag to make it a real GitHub release.

To make a new version of the website:

git checkout master
npm run build
git branch -D gh-pages
git checkout -b gh-pages
git add -f vcharts*
git add -f node_modules/d3/d3.*
git add -f node_modules/vega/vega.*
git commit -m "Updating website for $VERSION"
git push -f -u origin gh-pages
git checkout master
rm -rf node_modules/
npm install
npm run build