macocci7/php-lorenz-curve

一个用于绘制洛伦兹曲线的PHP库。

0.0.4 2024-08-14 05:38 UTC

This package is auto-updated.

Last update: 2024-09-14 05:54:29 UTC


README

一个用于绘制洛伦兹曲线的PHP库。

1. 功能

PHP-LorenzCurve 可以绘制洛伦兹曲线并计算基尼系数。

2. 内容

3. 要求

  • PHP 8.1或更高版本
  • Imagick PHP扩展
  • Composer

4. 安装

composer require macocci7-lorenz-curve

5. 使用

5.1. 基本使用

要绘制洛伦兹曲线,首先创建一个LorenzCurve类的实例。

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use Macocci7\PhpLorenzCurve\LorenzCurve;

$lc = new LorenzCurve();

接下来,设置数据、类范围并将图像保存到文件中。

$lc
    ->setData([1, 5, 10, 15, 20])
    ->setClassRange(5)
    ->create('img/BasicUsage.png');

这将产生下面的图像。

5.2. 调整外观

5.2.1. 绘制网格线

您可以使用指定宽度和颜色的grid()方法绘制网格线。

注意:指定null作为颜色代码会导致透明。

$lc
    ->setData([1, 5, 10, 15, 20])
    ->setClassRange(5)
    ->grid(1, '#ffcccc')    // width: 1 pix, color: '#ffcccc'
    ->create('img/DrawGrid.png');

这将产生下面的图像。

5.2.2. 绘制向上凸曲线

您可以通过使用reverseClasses()方法按降序排列类的列表来创建向上凸的洛伦兹曲线。

$lc
    ->setData([1, 5, 10, 15, 20])
    ->setClassRange(5)
    ->reverseClasses()
    ->grid(1, '#ffcccc')
    ->create('img/UpwardConvexCurve.png');

这将产生下面的图像。

5.2.3. 设置图像大小

PHP-LorenzCurve默认生成宽度为400像素,高度为300像素的图像。

您可以使用resize()方法更改图像大小。

  • 格式:resize(int $width, int $height)
$lc
    ->setData([1, 5, 10, 15, 20])
    ->setClassRange(5)
    ->grid(1, '#ffcccc')
    ->resize(450, 400)
    ->create('img/ResizeImage.png');

此代码的结果如下

5.2.4. 设置绘图区域属性

默认情况下,PHP-LorenzCurve设置Plotarea的属性

  • offsetX:图像宽度的10%
  • offsetY:图像高度的10%
  • width:图像宽度的80%
  • height:图像高度的70%
  • backgroundColornull(透明)

您可以使用plotarea()方法更改它们。

  • 格式
    plotarea(
        array $offset = [], // [int $width, int $height]
        int $width = 0,
        int $height = 0,
        string|null $backgroundColor = null,
    )

示例代码

$lc
    ->setData([1, 5, 10, 15, 20])
    ->setClassRange(5)
    ->grid(1, '#ffcccc')
    ->plotarea(
        offset: [80, 50],
        width: 280,
        height: 200,
        backgroundColor: '#eeeeee',
    )
    ->create('img/SetPlotareaAttrs.png');

此代码的结果如下

5.2.5. 设置标题和标签

您可以使用caption()labelX()labelY()方法设置标题标签

  • 格式

    caption(
        string $caption,
        int $offsetX = 0,
        int $offsetY = 0,
    )
    labelX(
        string $label,
        int $offsetX = 0,
        int $offsetY = 0,
    )
    labelY(
        string $label,
        int $offsetX = 0,
        int $offsetY = 0,
    )

示例代码

$lc
    ->setData([1, 5, 10, 15, 20])
    ->setClassRange(5)
    ->grid(1, '#ffcccc')
    ->plotarea(offset: [60, 40])
    ->caption('CAPTION')
    ->labelX('Cumulative Relative Frequency', offsetX: 0, offsetY: 10)
    ->labelY('Cumulative Relative Subtotal')
    ->create('img/CaptionLabels.png');

此代码的结果如下

5.2.6. 使用数组设置属性

您可以使用传递数组作为参数的config()方法设置属性。

$lc
    ->setData([1, 5, 10, 15, 20])
    ->setClassRange(5)
    ->config([
        'canvasBackgroundColor' => '#3333cc',
        'showGrid' => true,
        'gridWidth' => 1,
        'gridColor' => '#0066ff',
        'axisWidth' => 3,
        'axisColor' => '#ffffff',
        'scaleWidth' => 2,
        'scaleLength' => 6,
        'scaleColor' => '#ffffff',
        'scaleFontSize' => 14,
        'scaleFontColor' => '#ffffff',
        'lorenzCurveWidth' => 1,
        'lorenzCurveColor' => '#ffff00',
        'lorenzCurveBackgroundColor' => null, // transparent
        'completeEqualityLineWidth' => 3,
        'completeEqualityLineColor' => '#ffffff',
        'completeEqualityLineDash' => [8, 8],
        'fontColor' => '#ffffff',
        'caption' => 'Config From Array',
    ])
    ->create('img/ConfigFromArray.png');

此代码的结果如下

更多信息:[可定制属性](#user-content-528-customisable-attributes)

5.2.7. 使用霓虹文件设置属性

您可以使用传递霓虹文件路径作为参数的config()方法设置属性。

首先,创建一个霓虹文件。

canvasBackgroundColor: '#3333cc'
showGrid: true
gridWidth: 1
gridColor: '#0066ff'
axisWidth: 3
axisColor: '#ffffff'
scaleWidth: 2
scaleLength: 6
scaleColor: '#ffffff'
scaleFontSize: 14
scaleFontColor: '#ffffff'
lorenzCurveWidth: 1
lorenzCurveColor: '#ffff00'
lorenzCurveBackgroundColor:
completeEqualityLineWidth: 3
completeEqualityLineColor: '#ffffff'
completeEqualityLineDash: [8, 8]
fontColor: '#ffffff'
caption: 'Config From File'

其次,指定霓虹文件的路径作为config()方法的参数。

$lc
    ->setData([1, 5, 10, 15, 20])
    ->setClassRange(5)
    ->config('ConfigFromFile.neon')
    ->create('img/ConfigFromFile.png');

此代码的结果如下

更多信息:[可定制属性](#user-content-528-customisable-attributes)

5.2.8. 可定制属性

5.3. 基尼系数

您可以使用getGinisCoefficient()方法获取基尼系数,而无需生成图像。

var_dump(
    $lc
    ->setData([1, 5, 10, 15, 20])
    ->setClassRange(5)
    ->getGinisCoefficient()
);

结果如下。

double(0.37647058823529)

6. 示例

7. LICENSE

麻省理工学院

版权所有 2024 macocci7