maantje/charts

PHP 中的 SVG 图表

0.1.1 2024-09-04 22:35 UTC

This package is auto-updated.

Last update: 2024-09-06 17:54:34 UTC


README

警告

此库处于积极开发中。API 不稳定,可能随时更改。请自行承担风险使用。

Charts - SVG 图表渲染

Charts 是一个零依赖的 PHP 库,用于生成 SVG 图表。它允许直接从 PHP 创建基于 SVG 的图表,无需任何其他依赖。

特性

  • 简单的、直观的图表创建 API
  • 轻量级,无外部依赖
  • 支持各种图表类型:折线图、条形图、堆叠图和混合图
  • 完全可定制和扩展
  • 输出纯 SVG,允许
    • 嵌入 PDF 中(理想用于报告)

安装

要开始使用,请通过 composer 安装此包

composer require maantje/charts

使用示例

以下是一些使用此库可以创建的图表类型的示例。点击链接查看每个示例的源代码。

简单的折线图

alt text 查看源代码

简单的条形图

alt text 查看源代码

简单的堆叠图

alt text 查看源代码

高级折线图

alt text View source

高级条形图

alt text View source

混合图表

alt text View source

使用

创建图表

您可以使用提供的类创建不同类型的图表。下面是创建简单条形图和折线图的示例。

简单条形图

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(y: 0, x: 0),
                        new Point(y: 4, x: 100),
                        new Point(y: 12, x: 200),
                        new Point(y: 8, x: 300),
                    ],
                ),
            ],
        ),
    ],
);

echo $chart->render();

注释

您可以为图表添加注释,以获得更好的可视化效果。

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'),
        ],
    ),
    // ...
);

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件