Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/daidr/node-wordcloud
Tag cloud presentation for NodeJS (Based on wordcloud2.js)
https://github.com/daidr/node-wordcloud
nodejs tagcloud wordcloud
Last synced: 2 days ago
JSON representation
Tag cloud presentation for NodeJS (Based on wordcloud2.js)
- Host: GitHub
- URL: https://github.com/daidr/node-wordcloud
- Owner: daidr
- License: mit
- Created: 2022-08-23T16:26:02.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2022-08-26T14:20:19.000Z (about 2 years ago)
- Last Synced: 2024-10-08T15:21:09.135Z (about 1 month ago)
- Topics: nodejs, tagcloud, wordcloud
- Language: JavaScript
- Homepage:
- Size: 21.5 KB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# node-wordcloud ![npm version](https://img.shields.io/npm/v/node-wordcloud.svg)
Tag cloud presentation for NodeJS (Based on [wordcloud2.js](https://github.com/timdream/wordcloud2.js))
## Installation
```bash
npm install node-wordcloud
```## Usage
```javascript
const { createCanvas } = require('canvas');
const WordCloud = require('node-wordcloud')();const canvas = createCanvas(500, 500);
// Array of words [text: String, weight: Number][]
// The weight of word isn't the absolute size of word, the real size will be automatically calculated based on options.sizeRange
const list = [['word', 150], ['hello', 140], ['world', 130], ['test', 90]];const wordcloud = WordCloud(canvas, { list });
// you should call draw() to draw the wordcloud manually
wordcloud.draw();const buffer = canvas.toBuffer();
// you can use the wordcloud.updateList() to update the word list
// wordcloud.updateList([['word', 150], ['hello', 140], ['world', 130], ['test', 90]]);
// wordcloud.draw();
```## Example
See [example](./example) folder for more examples.
## Options
Support most of options of [wordcloud2.js](https://github.com/timdream/wordcloud2.js), except for:
- `clearCanvas`
- `weightFactor`
- `wait`
- `minRotation`
- `maxRotation`
- `classes`
- `hover`
- `click`Also we added some options:
```diff
+ {
+ sizeRange: [16, 68],
+ rotationRange: [-70, 70],
+ }
```## API
We remove the support for generating word cloud in svg format, because some canvas implementation already allow to generate svg directly (such as [node-canvas](https://github.com/Automattic/node-canvas)).
This module will not draw word cloud automatically, you need to call `wordcloud.draw()` to draw word cloud. See example for more details.
You can use `wordcloud.updateList(list: Array<[text: String, weight: Number]>)` to update word list. See example for more details.
In `wordcloud2.js`, you can import module by `const WordCloud = require('wordcloud2')`, but in node-wordcloud, it will be `const WordCloud = require('node-wordcloud')()`, you can choose the canvas implementation you want to use by passing `createCanvas` function, here here some examples:
```javascript
// use node-canvas default
const WordCloud = require('node-wordcloud')();// use node-canvas
const { createCanvas } = require('canvas');
const WordCloud = require('node-wordcloud')(createCanvas);// use skia-canvas
const { Canvas } = require('skia-canvas');
const WordCloud = require('node-wordcloud')((w, h) => new Canvas(w, h));// etc.
```## LICENSE
MIT License