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

silky-charts

v0.2.0

Published

A silky smooth D3/React library

Downloads

53

Readme

Disclaimer: Silky Charts is a work in progress, there is still many charts and features to add before is considered stable so the API is subject to change during its development.

NPM Version Dependencies Travis CI Build codecov Bundlephobia minified Bundlephobia minified + gzip

Features

  • Full React implementation (not a wrapper)
  • Tree shaking and code splitting
  • Small and fast
  • Customizable and easy to style
  • Two visual styles (solid and outlined)
  • Fully responsive
  • Built in tooltips
  • Choropleth color themes

Roadmap

  • [ ] Empty state
  • [ ] Custom color themes
  • [ ] SVG | PNG export

Installation

Install Silky Charts using Yarn

yarn add silky-charts

Install Silky Charts using npm

npm install --save silky-charts

Peer dependencies

Silky Charts uses React >= 16.8.0, React DOM >= 16.8.0, and Styled Components >= 4.1.3 as peer dependencies.

Install peer dependencies using Yarn

yarn add react react-dom styled-components

Install peer dependencies using npm

npm install --save react react-dom styled-components

Basic usage

From NPM

import Bar from 'silky-charts/Bar';
/* or */
import { Bar } from 'silky-charts';

...
    <Bar data={[ ... ]} />
...

In the browser with UNPKG

<script src="https://unpkg.com/silky-charts@:version/umd/silky-charts.js"></script>

Common props

Most props and options are present indistinguishable in all charts.

| Name | Type | Default | Description | | ----------------------- | :---------------: | :------------: | --------------------------------------------------------------------------------------------------------------------------------- | | aspectRatio | String | "16:9" | Sets the shape and size of the chart using the parent element width as a guide. Is overriden setting a width or height props. | | data | Array | | Chart data. | | dataSource | String Object | | Sets the data source label on the chart's bottom right corner with optional link [3]. | | dateFormat | String | "%a %d" | Name values as ISO dates will be formatted as dates. [1] | | grid | Boolean | false | Display the chart's grid. | | height | Number | | Sets the chart's height (breaks responsiveness). | | margin | Object | | Sets the margin sizes around the chart from an object with top, right, bottom, and left key-values [2]. | | onClick | Function | | Callback function to call during the onClick event. | | onMouseEnter | Function | | Callback function to call during the onMouseEnter event. | | onMouseLeave | Function | | Callback function to call during the OnMouseLeave event. | | outlinedStyle | Boolean | false | Activates the outlined design style. | | responsive | Boolean | false | Activates the chart responsiveness feature. | | staticTooltip | String | | Makes the tooltip to be static on the provided position. [3] | | theme | String | "monteCarlo" | Color theme name. Color themes | | title | String | | Sets the title of the chart. | | tooltip | Boolean | false | Activates the built in tooltip. | | width | Number | 640 | Sets the chart's width. | | xAxisChartLabel | String | | Sets the Chart's X axis label (you might need to adjust the margin). | | xAxisLabelRotation | Boolean | false | Rotates the X axis labels when these are to long to fit horizontally. | | xAxisLabelRotationValue | Number | -50 | Overrides the default X axis label rotation value. | | xAxisTicks | Number | 10 | Sets the number of ticks of the x axis on the chart. [4] | | yAxisChartLabel | String | | Sets the Chart's Y axis label (you might need to adjust the margin). | | yAxisTicks | Number | 5 | Sets the number of ticks of the y axis on the chart. [5] |

  • [1] The ISO dates will be formatted using D3's date formatting rules.
  • [2] The default values for the margin prop is { top: 40, right: 50, bottom: 50, left: 50 }.
  • [3] The static tooltip requires tooltip and the available positions are top-left, top-right, bottom-right, and bottom-left.
  • [4] If you want to display the data source label as a link you can pass an object with { href, target, text, title } instead.
  • [5] The specified count is only a hint; the scale may return more or fewer values depending on the domain. Read more...

Color themes

Silky Charts Choropleth color themes

Bar

Demo - Sandbox

As known as Bar Graph or Column Graph.

The classic Bar Chart uses either horizontal or vertical bars (column chart) to show discrete, numerical comparisons across categories. One axis of the chart shows the specific categories being compared and the other axis represents a discrete value scale.

Bars Charts are distinguished from Histograms, as they do not display continuous developments over an interval. Bar Chart's discrete data is categorical data and therefore answers the question of "how many?" in each category.

One major flaw with Bar Charts is that labelling becomes problematic when there are a large number of bars.

--The Data Visualisation Catalogue

Data definition

[
  {
    name: String | Date {ISO String},
    value: Number,
  },
]

Props

| Name | Type | Default | Description | | ------- | :------: | :-----: | ---------------------------------------- | | padding | Number | 0.15 | Sets the padding between the chart bars. |

Combination

The combination chart is a visualization that combines the features of the bar chart and the line chart. The combination chart displays the data using a number of bars and/or lines, each of which represent a particular category.

A combination of bars and lines in the same visualization can be useful when comparing values in different categories, since the combination gives a clear view of which category is higher or lower. An example of this can be seen when using the combination chart to compare the projected sales with the actual sales for different time periods.

The series in the combination chart is a way to divide the data into slices. The difference is that the slices in the combination chart, called series, can be defined as bars or lines as well as being colored separately. That is, each series in the combination chart will be represented by a line or a set of bars in the visualization.

Demo - Sandbox

Data definition

[
  {
    name: String | Date {ISO String}, 
    series: String, 
    value: Number,
  },
]

Props

| Name | Type | Default | Description | | -------------- | :--------: | :-------------: | ------------------------------------------------------------------------------------------------- | | lineSeries | [String] | | Series names of the datasets you want to appear as lines in the chart. | | lineType | String | "curveLinear" | Define the line style to use based on D3 Curves options. | | lineTypeOption | Any | | If the line style accepts optional values you can set them using this prop. | | padding | Number | 0.15 | Sets the padding between the chart bars. | | secondaryTheme | String | "vividCerise" | Color theme for the chart lines. Hint: opposite colors have better contrast. | | stackedSeries | [String] | | Series names of the datasets you want to appear as stacked bars in the chart. |

StackedArea

Demo - Sandbox

Stacked Area Graphs work in the same way as simple Area Graphs do, except for the use of multiple data series that start each point from the point left by the previous data series.

The entire graph represents the total of all the data plotted. Stacked Area Graphs also use the areas to convey whole numbers, so they do not work for negative values. Overall, they are useful for comparing multiple variables changing over an interval.

--The Data Visualisation Catalogue

Data definition

[
  {
    name: Date {ISO String}, 
    series: String, 
    value: Number,
  },
]

Props

| Name | Type | Default | Description | | -------------- | :------: | :-------------: | ------------------------------------------------------------------------------------------------- | | lineType | String | "curveLinear" | Define the line style to use based on D3 Curves options. | | lineTypeOption | Any | | If the line style accepts optional values you can set them using this prop. |

Contributing

  • Fork this repository to your own GitHub account and then clone it to your local device
  • Install yarn: npm install -g yarn | yarn installation
  • Install the dependencies: yarn
  • Link Silky Charts: yarn link
  • Run yarn dev to build and watch for code changes
  • Get into the Playground: cd playground
  • Install the dependencies: yarn
  • Link to Silky Charts: yarn link silky-charts
  • Start the playground: yarn start

How to use the playground

Once you are in the playground you will find a React application created with RCA. The App structure is the following:

.
├── README.md
├── package.json
├── public
│   ├── favicon.ico
│   ├── index.html
│   └── manifest.json
├── src
│   ├── App.js
│   ├── components
│   │   ├── ChartContainer.js
│   │   └── Container.js
│   ├── data.js
│   ├── index.js
│   └── styles.css
└── yarn.lock

After installing all the dependencies you will be able to start the application and use the App.js to play with the current charts or test new ones. The App file is already importing all the charts available and the example data sets included in the application for testing purposes, and is also already rendering one of the charts with most common props already defined and comment out to make it easier to test these.

There is also a data.js that contains all the testing data sets. Use this data set to test your charts and add new ones if you need them for your new chart or just for testing the current ones and include them in your pull request.

Create a Pull Request

Silky Charts uses git flow in its repository, so if you want to contribute and publish a pull request please create a feature branch out of develop with a name describing you change or feature and create the pull request pointing back to the develop branch.

  • git flow feature start <feature-name>
  • Make your changes and commit them
  • Run the tests with yarn test or npm run tests
  • Add unit tests and fix the linting issues and broken tests
  • Create the pull request.

Tests

To lint your code:

yarn lint

To run the test suite:

yarn test

Testing in your own app

If you haven't yet, follow the first five steps described in Contributing to Silky Charts then inside your project directory:

  • Link to Silky Charts: yarn link silky-charts

And start coding...

Troubleshooting

  • When you use bundlers like Webpack and Parcel you might encounter some issues related with Hooks throwing an error that says "Hooks can only be called inside the body of a function component". This problem is caused by a duplicate React in your bundle and you have to follow this workaround to make it work. -- Use this package.json file as an example.