Charts is a zero-dependency PHP library for generating SVG charts. It enables easy creation of SVG-based charts directly from PHP, with no additional dependencies required.
- Simple, intuitive API for chart creation
- Lightweight, with no external dependencies
- Supports various chart types: line charts, bar charts, stacked charts, and mixed charts
- Fully customizable and extendable
- Outputs pure SVG, allowing for:
- Embedding in PDFs, view example PDF report
To get started, install the package via composer:
composer require maantje/charts
Below are some examples of the types of charts you can create using this library. Click on the links to view the source code for each example.
- Example Usage With mPDF
- Simple Line Chart
- Curved Line Chart
- Step Line Chart
- Area Line Chart
- Bar Chart
- Stacked Bar Chart
- Grouped Bar Chart
- Advanced Line Chart
- Advanced Bar Chart
- Mixed Chart
- Pie Chart
📄 View PDF document
View source
You can create different types of charts using the provided classes. Below are examples of how to create a simple bar chart and a line chart.
use Maantje\Charts\Bar\Bar;
use Maantje\Charts\Bar\Bars;
use Maantje\Charts\Chart;
$chart = new Chart(
series: [
new Bars(
bars: [
new Bar(name: 'Jan', value: 222301),
new Bar(name: 'Feb', value: 189242),
new Bar(name: 'Mar', value: 144922),
],
),
],
);
echo $chart->render();
use Maantje\Charts\Chart;
use Maantje\Charts\Line\Line;
use Maantje\Charts\Line\Lines;
use Maantje\Charts\Line\Point;
$chart = new Chart(
series: [
new Lines(
lines: [
new Line(
points: [
new Point(x: 0, y: 0),
new Point(x: 100, y: 4),
new Point(x: 200, y: 12),
new Point(x: 300, y: 8),
],
),
new Line(
points: [
[0, 0],
[100, 4],
[200, 12],
[300, 8],
],
),
],
),
],
);
echo $chart->render();
You can add annotations to your charts for better visualization.
use Maantje\Charts\Annotations\PointAnnotation;
use Maantje\Charts\YAxis;
$chart = new Chart(
yAxis: new YAxis(
annotations: [
new PointAnnotation(x: 200, y: 120, label: 'Important Point'),
],
),
// ...
);
The MIT License (MIT). Please see License File for more information.