GitHunt
NE

NeaByteLab/Chart-To-Image

Generate trading charts as images using Node.js canvas. Support custom colors, themes, compare multiple symbols side-by-side or in grid layouts, several technical indicators, and many more.

๐Ÿ“Š Chart To Image

NPM Version
NPM Downloads
License
TypeScript
Node.js

Convert trading charts to images using Node.js Canvas, lightweight-charts, and CCXT. A powerful Node.js library for generating high-quality trading chart images from market data.

Chart-To-Image Demo

๐Ÿ“Š Chart Types Demo

Candlestick Line Area
Candlestick Line Area
Heikin-Ashi Renko
Heikin-Ashi Renko

๐Ÿ”„ Comparison Charts

Symbol Comparison

Timeframe Comparison


Features

  • ๐Ÿ“Š Real Market Data: Fetch live data from multiple exchanges via CCXT
  • ๐ŸŽจ High-Quality Charts: Generate professional charts using lightweight-charts
  • ๐Ÿ–ผ๏ธ Multiple Formats: Export to PNG and JPEG formats using Node.js Canvas
  • โšก Fast & Lightweight: Optimized for performance and minimal dependencies
  • ๐Ÿ”ง Flexible API: Both programmatic API and CLI interface
  • ๐Ÿ“ฆ Easy Integration: Simple npm install and import
  • ๐ŸŽจ Custom Bar Colors: Customize bullish/bearish candle colors
  • ๐Ÿ“ˆ Horizontal Levels: Add support/resistance levels with labels
  • ๐ŸŒˆ Advanced Chart Types: Candlestick, Line, Area, Heikin-Ashi, Renko, Line Break
  • ๐ŸŽฏ Custom Themes: Light/Dark themes with custom colors
  • ๐Ÿ‘๏ธ Hide Elements: Hide title, time axis, and grid
  • ๐ŸŽจ Color Customization: Hex, RGB, named colors, and gradients
  • ๐Ÿ“ Scaling Options: Auto-scaling and manual scale factors
  • ๐Ÿ”„ Multiple Exchanges: Binance, Kraken, Coinbase, and more
  • ๐Ÿ”„ Chart Comparison: Side-by-side and grid layouts for multiple symbols
  • โฐ Timeframe Comparison: Same symbol across different timeframes
  • ๐ŸŽจ Comparison Customization: Custom colors and themes for comparisons
  • ๐Ÿ“Š Technical Indicators: VWAP, EMA, SMA, and Bollinger Bands with custom colors

๐Ÿ› ๏ธ Technologies Used

  • Node.js Canvas: High-performance 2D graphics rendering
  • lightweight-charts: Professional trading chart library
  • CCXT: Unified cryptocurrency exchange API
  • TypeScript: Type-safe development
  • ESLint: Code quality and consistency

๐Ÿ“ฆ Installation

npm install @neabyte/chart-to-image

๐Ÿš€ Quick Start

๐Ÿ’ป CLI Usage

# Basic chart generation
npx @neabyte/chart-to-image --symbol BTC/USDT --output chart.png

# Custom timeframe and dimensions
npx @neabyte/chart-to-image -s ETH/USDT -t 4h -o eth-chart.png -w 1200 -h 800

# With custom theme and colors
npx @neabyte/chart-to-image -s BTC/USDT -o chart.png --theme dark --background-color "#1a1a2e" --text-color "#00d4ff"

# Advanced chart types
npx @neabyte/chart-to-image -s ETH/USDT -o heikin-ashi.png --chart-type heikin-ashi
npx @neabyte/chart-to-image -s BTC/USDT -o renko.png --chart-type renko
npx @neabyte/chart-to-image -s BTC/USDT -o line-break.png --chart-type line-break

# Technical indicators
npx @neabyte/chart-to-image -s BTC/USDT -o vwap-chart.png --vwap
npx @neabyte/chart-to-image -s ETH/USDT -o ema-chart.png --ema
npx @neabyte/chart-to-image -s BTC/USDT -o sma-chart.png --sma
npx @neabyte/chart-to-image -s BTC/USDT -o indicators.png --vwap --ema --sma

# Bollinger Bands with custom colors
npx @neabyte/chart-to-image -s BTC/USDT -o bb-chart.png --bb
npx @neabyte/chart-to-image -s ETH/USDT -o bb-custom.png --bb --bb-upper-color "#ff6b9d" --bb-middle-color "#4ecdc4" --bb-lower-color "#ff6b9d" --bb-background-color "#ff6b9d" --bb-background-opacity 0.2
npx @neabyte/chart-to-image -s BTC/USDT -o bb-line.png --bb --chart-type line --bb-upper-color "#9b59b6" --bb-middle-color "#f39c12" --bb-lower-color "#9b59b6" --bb-background-color "#9b59b6" --bb-background-opacity 0.25

# All indicators together
npx @neabyte/chart-to-image -s BTC/USDT -o all-indicators.png --vwap --ema --sma --bb

# Chart comparison (side-by-side)
npx @neabyte/chart-to-image --compare "BTC/USDT,ETH/USDT" --output comparison.png

# Timeframe comparison (same symbol, different timeframes)
npx @neabyte/chart-to-image --compare "BTC/USDT,BTC/USDT" --timeframes "1h,4h" --output timeframe-comparison.png

# Grid comparison with custom colors
npx @neabyte/chart-to-image --compare "BTC/USDT,ETH/USDT" --layout grid --custom-colors "bullish=#00ff88,bearish=#ff4444" --output grid-comparison.png

# Comparison with indicators
npx @neabyte/chart-to-image --compare "BTC/USDT,ETH/USDT" --vwap --ema --output comparison-indicators.png

# Comparison with Bollinger Bands
npx @neabyte/chart-to-image --compare "BTC/USDT,ETH/USDT" --bb --output comparison-bb.png
npx @neabyte/chart-to-image --compare "BTC/USDT,ETH/USDT" --bb --bb-upper-color "#ff6b9d" --bb-middle-color "#4ecdc4" --bb-lower-color "#ff6b9d" --bb-background-color "#ff6b9d" --bb-background-opacity 0.2 --output comparison-bb-custom.png

# Hide elements for clean charts
npx @neabyte/chart-to-image -s ADA/USDT -o clean.png --hide-title --hide-time-axis --hide-grid

๐Ÿ”ง Programmatic API

import { quickChart, generateChartImage, fetchMarketData, ComparisonService } from '@neabyte/chart-to-image'

// Quick chart generation
const result = await quickChart('BTC/USDT', 'chart.png', {
  timeframe: '1h',
  width: 1200,
  height: 800,
  theme: 'dark'
})

// Advanced configuration
const config = {
  symbol: 'ETH/USDT',
  timeframe: '4h',
  exchange: 'binance',
  outputPath: 'eth-chart.png',
  width: 1000,
  height: 600,
  theme: 'light',
  chartType: 'heikin-ashi',
  backgroundColor: '#1a1a2e',
  textColor: '#00d4ff',
  customBarColors: {
    bullish: '#00ff88',
    bearish: '#ff4444',
    wick: '#ffffff',
    border: '#333333'
  },
  showTitle: false,
  showTimeAxis: false,
  showGrid: false
}

const result = await generateChartImage(config)

// Chart comparison
const comparisonResult = await ComparisonService.sideBySide(
  ['BTC/USDT', 'ETH/USDT'],
  'comparison.png'
)

// Timeframe comparison
const timeframeResult = await ComparisonService.timeframeComparison(
  'BTC/USDT',
  ['1h', '4h', '1d'],
  'timeframe-comparison.png'
)

// Grid comparison with custom colors
const gridResult = await ComparisonService.grid(
  ['BTC/USDT', 'ETH/USDT'],
  2,
  'grid-comparison.png',
  {
    customBarColors: {
      bullish: '#00ff88',
      bearish: '#ff4444'
    }
  }
)

// Chart with technical indicators
const indicatorResult = await generateChartImage({
  symbol: 'BTC/USDT',
  timeframe: '1h',
  outputPath: 'indicators.png',
  showVWAP: true,
  showEMA: true,
  emaPeriod: 20,
  showSMA: true,
  smaPeriod: 20
})

// Chart with Bollinger Bands
const bbResult = await generateChartImage({
  symbol: 'BTC/USDT',
  timeframe: '1h',
  outputPath: 'bb-chart.png',
  showBollingerBands: true,
  bbPeriod: 20,
  bbStandardDeviations: 2,
  bbColors: {
    upper: '#ff6b9d',
    middle: '#4ecdc4',
    lower: '#ff6b9d',
    background: '#ff6b9d',
    backgroundOpacity: 0.2
  }
})

// All indicators together
const allIndicatorsResult = await generateChartImage({
  symbol: 'BTC/USDT',
  timeframe: '1h',
  outputPath: 'all-indicators.png',
  showVWAP: true,
  showEMA: true,
  emaPeriod: 20,
  showSMA: true,
  smaPeriod: 20,
  showBollingerBands: true,
  bbPeriod: 20,
  bbStandardDeviations: 2,
  bbColors: {
    upper: '#ff6b9d',
    middle: '#4ecdc4',
    lower: '#ff6b9d',
    background: '#ff6b9d',
    backgroundOpacity: 0.2
  }
})

// Comparison with indicators
const comparisonWithIndicators = await ComparisonService.sideBySide(
  ['BTC/USDT', 'ETH/USDT'],
  'comparison-indicators.png',
  {
    showVWAP: true,
    showEMA: true,
    emaPeriod: 20,
    showSMA: true,
    smaPeriod: 20
  }
)

// Comparison with Bollinger Bands
const comparisonWithBB = await ComparisonService.sideBySide(
  ['BTC/USDT', 'ETH/USDT'],
  'comparison-bb.png',
  {
    showBollingerBands: true,
    bbPeriod: 20,
    bbStandardDeviations: 2,
    bbColors: {
      upper: '#ff6b9d',
      middle: '#4ecdc4',
      lower: '#ff6b9d',
      background: '#ff6b9d',
      backgroundOpacity: 0.2
    }
  }
)

โšก Advanced Features

๐Ÿ“Š Chart Types

  • Candlestick: Traditional OHLC candles
  • Line: Simple line chart
  • Area: Filled area chart
  • Heikin-Ashi: Trend-smoothed candles
  • Renko: Price-based block chart
  • Line Break: Break high/low trend patterns

๐Ÿ“ˆ Technical Indicators

  • VWAP: Volume Weighted Average Price (institutional standard)
  • EMA: Exponential Moving Average (configurable periods)
  • SMA: Simple Moving Average (configurable periods)
  • Combined Analysis: Use all indicators together for comprehensive analysis

๐ŸŽจ Custom Colors

# Hex colors
--background-color "#1a1a2e" --text-color "#00d4ff"

# RGB colors
--background-color "rgb(25, 25, 112)" --text-color "rgb(255, 215, 0)"

# Named colors
--background-color "midnightblue" --text-color "gold"

# Gradients
--background-color "linear-gradient(135deg, #667eea 0%, #764ba2 100%)"

๐Ÿ‘๏ธ Hide Elements

# Hide title
--hide-title

# Hide time axis
--hide-time-axis

# Hide grid
--hide-grid

# Hide all elements
--hide-title --hide-time-axis --hide-grid

๐Ÿ“ Scaling Options

# Auto-scaling
--auto-scale

# Manual scaling
--scale-x 1.2 --scale-y 1.1

# Price limits
--min-scale 45000 --max-scale 50000

๐Ÿข Supported Exchanges

  • Binance
  • Coinbase
  • Kraken
  • KuCoin
  • OKX

โฐ Supported Timeframes

  • 1m (1 minute)
  • 5m (5 minutes)
  • 15m (15 minutes)
  • 30m (30 minutes)
  • 1h (1 hour)
  • 4h (4 hours)
  • 1d (1 day)
  • 1w (1 week)

๐Ÿ–ผ๏ธ Output Formats

  • PNG: High-quality raster format
  • JPEG: Compressed raster format

๐Ÿ“– Full Documentation

For complete usage guide with detailed examples, see USAGE.md ๐Ÿ“š


๐Ÿ› ๏ธ Development

๐Ÿ“ฆ Installation

git clone https://github.com/NeaByteLab/Chart-To-Image.git
cd Chart-To-Image
npm install

๐Ÿ”จ Build

npm run build

๐Ÿš€ Development Mode

npm run dev

๐Ÿงช Testing

npm test

๐Ÿ” Linting

npm run lint
npm run lint:fix

๐Ÿ“ Project Structure

src/
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ config.ts         # Chart configuration
โ”‚   โ””โ”€โ”€ renderer.ts       # Chart rendering engine
โ”œโ”€โ”€ renderer/
โ”‚   โ”œโ”€โ”€ charts.ts         # Chart type renderers
โ”‚   โ”œโ”€โ”€ elements.ts       # Chart elements (axes, grid, etc.)
โ”‚   โ”œโ”€โ”€ index.ts          # Main renderer orchestrator
โ”‚   โ”œโ”€โ”€ types.ts          # Renderer types
โ”‚   โ””โ”€โ”€ utils.ts          # Renderer utilities
โ”œโ”€โ”€ types/
โ”‚   โ””โ”€โ”€ types.ts          # TypeScript type definitions
โ”œโ”€โ”€ utils/
โ”‚   โ”œโ”€โ”€ cli.ts            # CLI argument parsing
โ”‚   โ”œโ”€โ”€ exporter.ts       # Image export utilities
โ”‚   โ”œโ”€โ”€ provider.ts       # Market data fetching
โ”‚   โ””โ”€โ”€ utils.ts          # Chart data utilities
โ”œโ”€โ”€ index.ts              # Main API exports
โ””โ”€โ”€ cli.ts                # Command line interface

๐Ÿค Contributing

  1. ๐Ÿด Fork the repository
  2. ๐ŸŒฟ Create a feature branch
  3. โœ๏ธ Make your changes
  4. ๐Ÿงช Add tests if applicable
  5. ๐Ÿ“ค Submit a pull request

๐Ÿ“„ License

MIT License - see LICENSE file for details.