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

hilbert-chart

v1.16.1

Published

A hilbert space-filling curve D3 chart for representing one-dimensional lengths on a two-dimensional space.

Downloads

1,268

Readme

Hilbert Chart

NPM package Build Size NPM Downloads

A hilbert space-filling curve chart for representing one-dimensional lengths on a two-dimensional space.

Live example at: https://observablehq.com/@vasturiano/hilbert-map-of-ipv4-address-space

Quick start

import HilbertChart from 'hilbert-chart';

or using a script tag

<script src="//unpkg.com/hilbert-chart"></script>

then

const myChart = new HilbertChart(<myDOMElement>)
  .hilbertOrder(<hilbertOrder>)
  .data(<myData>);

API reference

Initialisation

new HilbertChart(<domElement>, { configOptions })

| Config options | Description | Default | | --- | --- | :--: | | useCanvas: boolean | Whether to use HTML5 Canvas (true) or SVG (false) as rendering method. Canvas yields much better rendering performance for very large number of items. | false | | zoomWithModKey: boolean | Whether to require a modifier key (meta or ctrl) to be pressed in order to engage the scrolling zoom. | false |

Methods

| Method | Description | Default | | ------------------ | -------------------------------------------------------------------------------------------------------------------------- | ------------- | | width([number]) | Getter/setter for the length of each side of the square chart, in px. | (fit to window) | | margin([number]) | Getter/setter for the chart margin that contains the axis ticks and labels, in px. | 90 | | hilbertOrder([number]) | Getter/setter for the extent of the hilbert curve range, determined by 4^order. Values higher than 26 are disadvised, due to JavaScript's MAX_SAFE_INTEGER. | 4 | | data([array]) | Getter/setter for the list of ranges to render. Each range object should follow the minimum syntax of {start: <int>, length: <int>}. | [] | | rangeLabel([string or fn]) | Getter/setter for the range object label accessor function (fn(range)) or attribute. | name | | rangeLabelColor([string or fn]) | Getter/setter for the range object label color accessor function (fn(range)) or attribute. | () => 'black' | | rangeColor([string or fn]) | Getter/setter for the range object color accessor function (fn(range)) or attribute. | (cycle through d3.schemeCategory20 for unique labels) | | rangePadding([number, string or fn]) | Getter/setter for the range object padding ratio accessor function (fn(range)), attribute or a constant number for all ranges. The padding ratio should be a number between 0 and 1 representing the proportional size of the padding space compared to the width of the path. | 0 | | rangePaddingAbsolute([number, string or fn]) | Getter/setter for the range object absolute padding accessor function (fn(range)), attribute or a constant number for all ranges. This absolute padding is added to the relative one set with rangePadding. | 0 | | valFormatter([fn]) | Getter/setter for the value formatting function (fn(value)), as text displayed in axis ticks and tooltips. Should return a string. | d => d | | focusOn(pos, length, [ms]) | Zoom-in on a particular area of the chart, defined by [pos, pos+length-1]. May be an approximation if length doesn't match a logical bit boundary. An optional 3rd argument defines the duration of the transition (in ms) to animate the zooming motion. A value of 0 (default) jumps immediately to the final position. || | showValTooltip([boolean]) | Getter/setter for whether to show a value tooltip on mouse-over. | true | | showRangeTooltip([boolean]) | Getter/setter for whether to show a range tooltip on mouse-over. | true | | rangeTooltipContent([string or fn]) | Getter/setter for the range object tooltip content accessor function or attribute. Supports plain text or HTML content. | <label>: <start> - <end> | | enableZoom([boolean]) | Getter/setter for whether to enable zoom/pan interaction in the chart. | true | | onRangeClick(fn) | Callback function for range clicks. The range object is included as single argument onRangeClick(range). | - | | onRangeHover(fn) | Callback function for range mouse over events. The range object (or null if hovering out) is included as single argument onRangeHover(range). | - | | onPointerMove(fn) | Callback function for pointer move events over the hilbert canvas. The hilbert curve value directly under the mouse pointer is included as argument, as well as the event object itself. onPointerMove(value, event). | - | | onZoom(fn) | Callback function for zoom/pan events. The current zoom transform is included as single argument onZoom({ k, x, y }). Note that onZoom is triggered by user interaction as well as programmatic zooming/panning with focusOn(). | - | | onZoomEnd(fn) | Callback function for 'end' of zoom/pan events. The current zoom transform is included as single argument onZoomEnd({ k, x, y }). Note that onZoomEnd is triggered by user interaction as well as programmatic zooming/panning with focusOn(). | - |