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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@undp/data-viz

v2.1.9

Published

The open source graphing library built by UNDP

Downloads

1,418

Readme

UNDP data viz library npm

Getting Started

UNDP data viz library is dedicated to providing a good development experience for data visualization specialists. Before starting, it is recommended to learn React first, and correctly install and configure Node.js v18 or above.

We also assumes that you have intermediate knowledge about HTML, CSS, and JavaScript/TypeScript, and React.

Note: The library uses react v19

Detailed documentation can be found here

NPM Package can be found here

Installation

Using npm

npm i @undp/data-viz

Using yarn

yarn add @undp/data-viz

Import

It is recommended to import what you need and the use it. For example, import the HorizontalBarGraph like this:

import { HorizontalBarGraph } from '@undp/data-viz'

It is also recommended to import the css because some setting expect the CSS to be imported to look good. You can import the css file like this:

import '@undp/data-viz/style.css';

TypeScript

UNDP visualization library provides a built-in ts definition, you don't need to install any type definitions.

Dependencies

The dependencies that are pre-installed wit the library:

  • Various D3 libraries - For visualizations
    • d3-array
    • d3-delaunay
    • d3-force
    • d3-format
    • d3-geo
    • d3-hierarchy
    • d3-scale
    • d3-selection
    • d3-shape
    • d3-zoom
  • Various Lodash libraries - For array and data manipulation
    • lodash.flattendeep
    • lodash.intersection
    • lodash.orderby
    • lodash.sortby
    • lodash.sum
    • lodash.uniqby
  • motion - For creating animations in the animated graphs
  • papaparse - For loading and parsing csv from links
  • simple-statistics - For statistical functions
  • xss - For cleaning up cross scripting from user-submitted HTML
  • date-fns - For date formatting
  • modern-screenshot - For downloading div as images
  • react-csv - For generating a csv file

Required peer dependencies

  • React (of course!) (Peer dependency)
  • React-dom (of course!) (Peer dependency)
  • @undp/design-system-react - For UI elements (Peer dependency)

Optional peer dependencies

  • maplibre-gl - For Maplibre maps (Peer optional dependency: only needed when using GeoHub maps)
  • pmtiles - For adding pmtiles to Maplibre maps (Peer optional dependency: only needed when using GeoHub maps)
  • dnd-kit - For creating comparison maps (Peer optional dependency: only needed when using GeoHub compare maps)
  • ajv - For schema validation (Peer optional dependency: only needed when validating schemas for good developer experience)
  • dom-to-svg - For downloading div as svg (Peer optional dependency: only needed when using SVG download functionality)
  • file-saver - For downloading files (Peer optional dependency: only needed when using XLSX download functionality)
  • xlsx - For generating a xlsx file (Optional dependency: only needed when using XLSX download functionality)

How to add a new chart or graph

Adding a new chart or graph to the library requires multiple steps:

  • Add the code for the graph to ./src/Components/Elements/Graphs/ folder
  • Once the code is done add the id of the graph to either GraphTypeForGriddedGraph or GeoHubGraphType in ./src/Types.tsx depending if you want it to be available in GriddedGraphDashboard or not
  • Add the missing settings to GraphSettingsDataType in ./src/Types.tsx
  • Add the graph configuration settings in ./src/Utils/transformData/graphConfig.ts
  • Add the graph to the list in ./src/Utils/getGraphList.tsx
  • Add the file names in the next step to the getDataSchema and getSettingsSchema functions in ./src/Schemas/getSchema.tsx
  • Add the graph to the graphComponent and getGraphProps functions in ./src/Components/Dashboard/GraphEl.tsx
  • Finally add an export in ./src/index.ts

Adding schema __Schemas are in different repo: undp-viz-library-schema

  • Add the data schema for the graph and graph settings schema to the dataSchema folder.
  • Also add the missing properties to the SettingSchema in settingSchema folder

Adding documentation and stories in storybook:

  • Add a new story in ./src/stories/Graph+Map+Chart folder
  • Add a graph name and id to GraphNames in ./src/stories/assets/constants.ts
  • Add a config file for the graph in ./src/stories/assets/config folder
  • Add the graph in ./src/stories/assets/graphSettingsSelect.ts
  • Add the graph in ./src/stories/assets/graphDataConfigSelect.ts