gocharts

GoCharts

Go CI Go Lint Go SAST Go Report Card Docs Visualization License

GoCharts is a library to assist with building charts, by directly working with charting libraries, generating tabular data for Excel XLSX files and CSV files, or to transfer data to/from analytics solutions like Metabase and SimpleKPI.

Features

Contents

It includes two sets of packages:

  1. data structures to generically hold and manipulate different types of data
  2. chart library helpers to make generating charts easier, often times using data structures mentioned above

Data Structures

Commonly used data structures include:

A full list is available in the data folder.

Chart Helpers

quicktemplate is used for rendering some of the charts.

An example chart is the Rickshaw chart shown below:

Collections

Data collections are provided in the collections folder for the primary purpose of providing example data to run in the examples. Currently, cryptocurrency data from Yahoo! Finance is included.

Applications

Various helpers to use applications are located in the apps folder for the primary purpose of providing reusable and example code.

Installation

$ go get github.com/grokify/gocharts/v2/...

Quick Start

Creating a Histogram

import "github.com/grokify/gocharts/v2/data/histogram"

h := histogram.NewHistogram("Response Codes")
h.Add("200", 150)
h.Add("404", 25)
h.Add("500", 10)

// Output as Markdown table
md := h.Markdown()

Creating a Table and Exporting to XLSX

import "github.com/grokify/gocharts/v2/data/table"

tbl := table.NewTable("Sales Report")
tbl.Columns = []string{"Region", "Q1", "Q2", "Q3", "Q4"}
tbl.Rows = [][]string{
    {"North", "100", "120", "130", "150"},
    {"South", "90", "95", "100", "110"},
}

// Write to Excel
err := tbl.WriteXLSX("report.xlsx")

Converting Histogram to Google Charts DataTable

import (
    "github.com/grokify/gocharts/v2/data/histogram"
    "github.com/grokify/gocharts/v2/charts/google"
)

hs := histogram.NewHistogramSet("Traffic by Hour")
// ... populate histogram set ...

dt := google.DataTableFromHistogramSet(hs)

Output Formats

GoCharts supports multiple output formats:

Format Package Description
CSV data/table Comma-separated values
XLSX data/table Excel spreadsheets via excelize
Markdown data/histogram GitHub-flavored markdown tables
HTML charts/* Chart library-specific HTML via quicktemplate
ASCII data/table Terminal-friendly tables via tablewriter

Examples

Examples are available in each chart packageโ€™s examples/ directory:

Chart Library Example Location
Google Charts charts/google/examples/
wchart charts/wchart/examples/
C3 charts/c3/examples/
Rickshaw charts/rickshaw/examples/
D3 Bullet charts/d3/d3bullet/examples/

## Mentions

  1. Philip Gardnerโ€™s GitHub stars: github.com/gaahrdner/starred