A PHP client for the quickchart.io chart image API.
Use the QuickChart.php
library in this project, or install from packagist.
composer require ianw/quickchart
This library provides a QuickChart
class. Import and instantiate it. Then set properties on it and specify a Chart.js config:
$chart = new QuickChart(array(
'width' => 500,
'height' => 300
));
$chart->setConfig('{
type: "bar",
data: {
labels: ["Hello world", "Test"],
datasets: [{
label: "Foo",
data: [1, 2]
}]
}
}');
Use getUrl()
on your QuickChart object to get the encoded URL that renders your chart:
echo $chart->getUrl();
// https://quickchart.io/chart?c=%7B%22type%22%3A%22bar%22%2C%22data%22%3A%7B%22labels%22%3A%5B%22Hello+world%22%2C%22Test%22%5D%2C%22datasets%22%3A%5B%7B%22label%22%3A%22Foo%22%2C%22data%22%3A%5B1%2C2%5D%7D%5D%7D%7D&w=500&h=300
If you have a long or complicated chart, use getShortUrl()
to get a fixed-length URL using the quickchart.io web service (note that these URLs only persist for a short time unless you have a subscription):
echo $chart->getShortUrl();
// https://quickchart.io/chart/render/f-a1d3e804-dfea-442c-88b0-9801b9808401
The URLs will render an image of a chart:
The QuickChart
class constructor accepts an array containing the following keys. All are optional and can be set after object creation:
The actual Chart.js chart configuration.
Width of the chart image in pixels. Defaults to 500
Height of the chart image in pixels. Defaults to 300
Format of the chart. Defaults to png.
The background color of the chart. Any valid HTML color works. Defaults to #ffffff (white). Also takes rgb, rgba, and hsl values.
The device pixel ratio of the chart. This will multiply the number of pixels by the value. This is usually used for retina displays. Defaults to 1.0.
The Chart.js version to use. See documentation for supported versions.
Your QuickChart API key, if you have one.
Each option above has an associated function call that you can invoke on your QuickChart
object:
setConfig($config)
setWidth($width)
setHeight($height)
setFormat($format)
setBackgroundColor($backgroundColor)
setDevicePixelRatio($devicePixelRatio)
setVersion($version)
setApiKey($apiKey)
There are two ways to get a URL for your chart object.
Returns a URL that will display the chart image when loaded.
Uses the quickchart.io web service to create a fixed-length chart URL that displays the chart image. Returns a URL such as https://quickchart.io/chart/render/f-a1d3e804-dfea-442c-88b0-9801b9808401
.
Note that short URLs expire after a few days for users of the free service. You can subscribe to keep them around longer.
Returns a binary string representing the chart image
Write the image to a file
For example:
$chart->toFile('/tmp/myfile.png')
Checkout the examples
directory to see other usage.
PHP5 users: This package requires curl and json modules.
sslv3 handshake alert failure: You are using an outdated version of curl
. Please upgrade curl on your machine.