From 8f8bf3d32de6de2073fed633f2ae6474e209928f Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Thu, 7 Jul 2016 20:37:57 -0700 Subject: [PATCH] license and readme. --- LICENSE | 21 +++++++++++++++++ README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++ images/goog_ltm.png | Bin 0 -> 37037 bytes 3 files changed, 77 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 images/goog_ltm.png diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8d9f1c5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 William Charczuk. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..da86551 --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +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: + +```bash +> go get -u github.com/wcharczuk/go-chart +``` + +Most of the components are interchangeable so feel free to crib whatever you want. + +# Usage + + ![](https://raw.githubusercontent.com/wcharczuk/go-chart/master/images/goog_ltm.png) + + +The chart code to produce the above is as follows: + +```go +// 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. + +# 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. diff --git a/images/goog_ltm.png b/images/goog_ltm.png new file mode 100644 index 0000000000000000000000000000000000000000..2128fcfdb20d15def826cbc837eef0603e2b473c GIT binary patch literal 37037 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
X^V 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 u