Go to file
Will Charczuk e2d8f6164b updates.
2016-07-07 22:30:16 -07:00
images updates. 2016-07-07 22:30:16 -07:00
testserver SVG! 2016-07-07 22:18:53 -07:00
box.go better default handling around final value labels. 2016-07-07 19:11:30 -07:00
chart_test.go updates. 2016-07-07 14:44:03 -07:00
chart.go SVG! 2016-07-07 22:18:53 -07:00
defaults.go axis labels! 2016-07-07 20:26:07 -07:00
formatter.go axis labels! 2016-07-07 20:26:07 -07:00
LICENSE license and readme. 2016-07-07 20:37:57 -07:00
point.go initial commit. 2016-07-06 18:54:00 -07:00
range_test.go updates. 2016-07-07 14:44:03 -07:00
range.go axis labels! 2016-07-07 20:26:07 -07:00
raster_renderer.go SVG! 2016-07-07 22:18:53 -07:00
README.md updates. 2016-07-07 22:30:16 -07:00
renderer.go SVG! 2016-07-07 22:18:53 -07:00
roboto.go initial commit. 2016-07-06 18:54:00 -07:00
series_test.go updates. 2016-07-07 14:44:03 -07:00
series.go axis labels! 2016-07-07 20:26:07 -07:00
style.go SVG! 2016-07-07 22:18:53 -07:00
util_test.go things work more or less, added a testing service. 2016-07-07 17:14:25 -07:00
util.go SVG! 2016-07-07 22:18:53 -07:00
vector_renderer.go SVG! 2016-07-07 22:18:53 -07:00

go-chart

Package chart is a very simple golang native charting library that supports timeseries and continuous line charts.

Installation

To install chart run the following:

> go get -u github.com/wcharczuk/go-chart

Most of the components are interchangeable so feel free to crib whatever you want.

Usage

The chart code to produce the above is as follows:

// note this assumes that xvalues and yvalues
// have been pulled from a pricing service.
graph := chart.Chart{
    Width:  1024,
    Height: 400,
    Axes: chart.Style{
        Show:        true,
    },
    FinalValueLabel: chart.Style{
        Show: true,
    },
    Series: []chart.Series{
        chart.TimeSeries{
            XValues: xvalues,
            YValues: yvalues,
        },
    },
}
graph.Render(chart.PNG, buffer) //thats it!

The key areas to note are that we have to explicitly turn on two features, the axes and the last value label. When calling .Render(..) we add a parameter, chart.PNG that tells the renderer to use a raster renderer (in this case, an awesome library called draw2d).

Coming in the near future will be the option to output to SVG.

Alternate Usage

You can alternately turn a bunch of features off and constrain the proportions to something like a spark line:

The code to produce the above would be:

// note this assumes that xvalues and yvalues
// have been pulled from a pricing service.
graph := chart.Chart{
    Width:  1024,
    Height: 100,
    Axes: chart.Style{
        Show:        false,
    },
    FinalValueLabel: chart.Style{
        Show: false,
    },
    Series: []chart.Series{
        chart.TimeSeries{
            XValues: xvalues,
            YValues: yvalues,
        },
    },
}
graph.Render(chart.PNG, buffer)

Design Philosophy

I wanted to make a charting library that used only native golang, that could be stood up on a server (i.e. it had built in fonts).

The goal with the API itself is to have the "zero value be useful", and to require the user to not code more than they absolutely needed.

Contributions

This library is super early but contributions are welcome.