• Stars
    star
    156
  • Rank 239,589 (Top 5 %)
  • Language
    Elixir
  • License
    MIT License
  • Created about 9 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Create beautiful Javascript charts with minimal code

Chartkick Build Status

Create beautiful Javascript charts with one line of Elixir. No more fighting with charting libraries!

See it in action, you can find the example phoenix app that generates that page here.

Works with Phoenix, plain Elixir and most browsers.

Any feedback, suggestions or comments please open an issue or PR.

Charts

All charts expect a JSON string.

raw_data = [[175, 60], [190, 80], [180, 75]]
data = Poison.encode!(raw_data)
# or if you are using Jason
data = Jason.encode!(raw_data)

Line chart

Chartkick.line_chart data

Pie chart

Chartkick.pie_chart data

Column chart

Chartkick.column_chart data

Bar chart

Chartkick.bar_chart data

Area chart

Chartkick.area_chart data

Scatter chart

Chartkick.scatter_chart data

Geo chart

Chartkick.geo_chart Poison.encode!("[[\"United States\",44],[\"Germany\",23]]")
# or if you are using Jason
Chartkick.geo_chart Jason.encode!("[[\"United States\",44],[\"Germany\",23]]")

Timeline

Chartkick.timeline "[
  [\"Washington\", \"1789-04-29\", \"1797-03-03\"],
  [\"Adams\", \"1797-03-03\", \"1801-03-03\"],
  [\"Jefferson\", \"1801-03-03\", \"1809-03-03\"]
]"

Say Goodbye To Timeouts

Make your pages load super fast and stop worrying about timeouts. Give each chart its own endpoint.

Chartkick.line_chart "/path/to/chart.json"

And respond with data as JSON.

Options

ℹ️ This implementation aims to support all options that chartkick.js supports. If there are any missing, please open an issue or a PR.

Id, width and height

Chartkick.line_chart data, id: "users-chart", height: "500px", width: "50%"

Min and max values

Chartkick.line_chart data, min: 1000, max: 5000

min defaults to 0 for charts with non-negative values. Use nil to let the charting library decide.

Colors

Chartkick.line_chart data, colors: ["pink", "#999"]

Stacked columns or bars

Chartkick.column_chart data, stacked: true

Discrete axis

Chartkick.line_chart data, discrete: true

Axis titles

Chartkick.line_chart data, xtitle: "Time", ytitle: "Population"

Straight lines between points instead of a curve

Chartkick.line_chart data, curve: false

Hide points

Chartkick.line_chart data, points: false

Show or hide legend

Chartkick.line_chart data, legend: false

Specify legend position

Chartkick.line_chart data, legend: "bottom"

Donut chart

Chartkick.pie_chart data, donut: true

Prefix, useful for currency - Chart.js, Highcharts

Chartkick.line_chart data, prefix: "$"

Suffix, useful for percentages - Chart.js, Highcharts

Chartkick.line_chart data, suffix: "%"

Set a thousands separator - Chart.js, Highcharts

Chartkick.line_chart data, thousands: ","

Set a decimal separator - Chart.js, Highcharts

Chartkick.line_chart data, decimal: ","

Show insignificant zeros, useful for currency - Chart.js, Highcharts

Chartkick.line_chart data, round: 2, zeros: true

Show a message when data is empty

Chartkick.line_chart data, messages: %{ empty: "My message.."}

Refresh data from a remote source every n seconds

Chartkick.line_chart data, refresh: 60

You can pass options directly to the charting library with:

Chartkick.line_chart data, library: %{ backgroundColor: "#eee" }

See the documentation for Google Charts and Highcharts for more info.

To customize datasets in Chart.js, use:

Chartkick.line_chart data, dataset: %{ borderWidth: 10 }

Data

Pass data as a JSON string.

Chartkick.pie_chart "{\"Football\" => 10, \"Basketball\" => 5}"
Chartkick.pie_chart "[[\"Football\", 10], [\"Basketball\", 5]]"

For multiple series, use the format

Chartkick.line_chart "[
  {name: \"Series A\", data: []},
  {name: \"Series B\", data: []}
]"

Times can be a time, a timestamp, or a string (strings are parsed)

Chartkick.line_chart "{
  1368174456 => 4,
  \"2013-05-07 00:00:00 UTC\" => 7
}"

Installation

You need to set JSON encoder in your config file. This encoder is used to encode options passed to Chartkick.

# config.exs
config :chartkick, json_serializer: Jason

By default when you render a chart it will return both the HTML-element and JS that initializes the chart. This will only work if you load Chartkick in the <head> tag. You can chose to render the JS & HTML separately using the only: :html or only: :script option. Note that if you use those options you need to pass id otherwise it wont work.

line_chart data, id: "my-line-chart", only: :html
line_chart data, id: "my-line-chart", only: :script

For Google Charts, use:

<script src="//www.google.com/jsapi"></script>
<script src="path/to/chartkick.js"></script>

If you prefer Highcharts, use:

<script src="/path/to/highcharts.js"></script>
<script src="path/to/chartkick.js"></script>

Localization

To specify a language for Google Charts, add:

<script>
  var Chartkick = {"language": "de"};
</script>

before the javascript files.

No Elixir? No Problem

Check out

History

View the changelog

Chartkick follows Semantic Versioning

Contributing

Everyone is encouraged to help improve this project. Here are a few ways you can help:

More Repositories

1

awesome-sweden

A curated list of awesome things to use when coding for the Swedish market.
Shell
163
star
2

wayback_archiver

Ruby gem to send URLs to Wayback Machine
Ruby
57
star
3

git-story

Simplified git workflow.
Shell
33
star
4

awesome-sweden-datasets

A curated list of awesome datasets to use when coding for the Swedish market.
Shell
25
star
5

ghost_blazer

Standalone Blazer app ⚡
Ruby
25
star
6

honey_format

Makes working with CSVs as smooth as honey.
Ruby
14
star
7

site_mapper

Map all links on a given site
Ruby
11
star
8

arbetsformedlingen

API Client & Post job ads to the Swedish employment agency (Arbetsförmedlingen)
Ruby
7
star
9

blackcal

Create blacklist rules for calendars with ease.
Ruby
6
star
10

kolada

Kolada API client provides access to standardized key performance indicators (KPI) concerning Swedish municipalities and organizational units.
JavaScript
5
star
11

spidr_cli

CLI for the spidr gem.
Ruby
3
star
12

stockholm-api

Stockholm API client
JavaScript
3
star
13

association_count

Small gem to include association counts where they are needed.
Ruby
3
star
14

chartkick-phoenix-example

Elixir Phoenix example app for chartkick-ex
HTML
3
star
15

dot-bash

Dot files
Shell
2
star
16

jsonapi_helpers

JSONAPI Helpers
Ruby
2
star
17

enduro

Team 5 - PVG Enduro [LTH EDA260 2014]
Java
2
star
18

action_table

Render ActiveRecord objects as HTML tables with one line of Ruby.
Ruby
2
star
19

ex-wayback-archiver

Send URLs to Wayback Machine (Elixir)
Elixir
2
star
20

stupid_sms

Send bulk SMS using Twilio with ease.
Ruby
2
star
21

stupid_crawler

Stupid crawler that looks for URLs on a given site
Ruby
1
star
22

wayback_archiver_saas

Wayback Archiver - SAAS
Ruby
1
star
23

url_finder

Find URLs in various file formats - supports markdown, HTML, sitemap.xml and regular text.
Ruby
1
star
24

abh

Always be hacking slides
JavaScript
1
star
25

etsf01-project

LTH ETSF01 project
Java
1
star
26

flag-sprite-maker

Make flag sprite
Shell
1
star
27

centra

Dealing with Centra stuff, i.e reading export files and generating summaries.
Ruby
1
star
28

site_health

Crawl a site and check various health indicators
Ruby
1
star
29

mini-site

Minimalistic site with blog, inline-editing (RoR)
Ruby
1
star
30

metrojobb

Build a feed for Metrojobb with ease.
Ruby
1
star