Create beautiful charts with one line of JavaScript
Supports Chart.js, Google Charts, and Highcharts
Also available for React, Vue.js, Ruby, Python, and Elixir
Create a div for the chart
<div id="chart-1" style="height: 300px;"></div>Line chart
new Chartkick.LineChart("chart-1", {"2013-02-10 00:00:00 -0800": 11, "2013-02-11 00:00:00 -0800": 6});Pie chart
new Chartkick.PieChart("chart-1", [["Blueberry", 44], ["Strawberry", 23]]);Column chart
new Chartkick.ColumnChart("chart-1", [["Sun", 32], ["Mon", 46], ["Tue", 28]]);Bar chart
new Chartkick.BarChart("chart-1", [["Work", 32], ["Play", 1492]]);Area chart
new Chartkick.AreaChart("chart-1", {"2013-02-10 00:00:00 -0800": 11, "2013-02-11 00:00:00 -0800": 6});Scatter chart
new Chartkick.ScatterChart("chart-1", [[174.0, 80.0], [176.5, 82.3], [180.3, 73.6]]);Geo chart - Google Charts
new Chartkick.GeoChart("chart-1", [["United States", 44], ["Germany", 23], ["Brazil", 22]]);Timeline - Google Charts
new Chartkick.Timeline("chart-1", [["Washington", "1789-04-29", "1797-03-03"], ["Adams", "1797-03-03", "1801-03-03"]]);Multiple series
data = [
{name: "Workout", data: {"2013-02-10 00:00:00 -0800": 3, "2013-02-17 00:00:00 -0800": 4}},
{name: "Call parents", data: {"2013-02-10 00:00:00 -0800": 5, "2013-02-17 00:00:00 -0800": 3}}
];
new Chartkick.LineChart("chart-1", data);Make your pages load super fast and stop worrying about timeouts. Give each chart its own endpoint.
new Chartkick.LineChart("chart-1", "/stocks");Min and max values
new Chartkick.LineChart("chart-1", data, {min: 1000, max: 5000});min defaults to 0 for charts with non-negative values. Use null to let the charting library decide.
Colors
new Chartkick.LineChart("chart-1", data, {colors: ["pink", "#999"]});Stacked columns or bars
new Chartkick.ColumnChart("chart-1", data, {stacked: true});Discrete axis
new Chartkick.LineChart("chart-1", data, {discrete: true});Label (for single series)
new Chartkick.LineChart("chart-1", data, {label: "Value"});Axis titles
new Chartkick.LineChart("chart-1", data, {xtitle: "Time", ytitle: "Population"});You can pass options directly to the charting library with:
new Chartkick.LineChart("chart-1", data, {library: {backgroundColor: "pink"}});Pass data as an array or object
new Chartkick.PieChart("chart-1", {"Blueberry": 44, "Strawberry": 23});
new Chartkick.PieChart("chart-1", [["Blueberry", 44], ["Strawberry", 23]]);Times can be a Date, a timestamp, or a string (strings are parsed)
new Chartkick.LineChart("chart-1", [[new Date(), 5], [1368174456, 4], ["2013-05-07 00:00:00 UTC", 7]]);Download directly, or with npm or Bower:
npm install chartkick
# or
bower install chartkickFor Chart.js (works with 2.1+), download the bundle and use:
<script src="/path/to/Chart.bundle.js"></script>
<script src="chartkick.js"></script>For Google Charts, use:
<script src="https://www.gstatic.com/charts/loader.js"></script>
<script src="chartkick.js"></script>For Highcharts (works with 2.1+), download it and use:
<script src="/path/to/highcharts.js"></script>
<script src="chartkick.js"></script>To specify a language for Google Charts, add:
Chartkick.configure({language: "de"});after the JavaScript files and before your charts.
If more than one charting library is loaded, choose between them with:
new Chartkick.LineChart("chart-1", data, {adapter: "google"}); // or highchartsAccess a chart with:
var chart = Chartkick.charts["chart-id"];Get the underlying chart object with:
chart.getChartObject();You can also use:
chart.getElement();
chart.getData();
chart.getOptions();To run the files in the examples directory, you'll need a web server. Run:
python -m SimpleHTTPServerand visit http://localhost:8000/examples/
Breaking changes
- Chart.js is now the default adapter if multiple are loaded - yay open source!
- Axis types are automatically detected - no need for
discrete: true - Better date support - dates are no longer treated as UTC
Chartkick uses iso8601.js to parse dates and times.
View the changelog
Chartkick.js follows Semantic Versioning
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features