2amigos/yii2-chartjs-widget

该软件包已被弃用且不再维护。未建议替代软件包。

适用于 Yii2 的 ChartJs 小部件。

安装次数: 1,096,970

依赖项: 29

建议者: 0

安全: 0

星标: 105

关注者: 34

分支: 62

开放问题: 15

类型:yii2-extension

3.0.1 2020-02-05 12:29 UTC

This package is auto-updated.

Last update: 2023-08-24 12:11:51 UTC


README

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads StyleCI

渲染一个 ChartJs 插件 小部件

安装

安装此扩展的首选方式是通过 composer。这需要 composer-asset-plugin,它也是 yii2 的依赖项,所以如果您已安装 yii2,则您可能已经设置好了。

运行以下命令:

composer require 2amigos/yii2-chartjs-widget:~2.0

或者将以下内容添加到您的应用 composer.json 文件的 require 部分:

"2amigos/yii2-chartjs-widget" : "~2.0"

使用方法

以下类型受到支持

  • 线形图
  • 条形图
  • 雷达图
  • 极坐标图
  • 饼图
  • 环形图
  • 气泡图
  • 散点图
  • 面积图
  • 混合图

以下示例使用的是 Line 类型的图表。请查看 ChartJs 插件 文档了解插件支持的其它类型。

use dosamigos\chartjs\ChartJs;

<?= ChartJs::widget([
    'type' => 'line',
    'options' => [
        'height' => 400,
        'width' => 400
    ],
    'data' => [
        'labels' => ["January", "February", "March", "April", "May", "June", "July"],
        'datasets' => [
            [
                'label' => "My First dataset",
                'backgroundColor' => "rgba(179,181,198,0.2)",
                'borderColor' => "rgba(179,181,198,1)",
                'pointBackgroundColor' => "rgba(179,181,198,1)",
                'pointBorderColor' => "#fff",
                'pointHoverBackgroundColor' => "#fff",
                'pointHoverBorderColor' => "rgba(179,181,198,1)",
                'data' => [65, 59, 90, 81, 56, 55, 40]
            ],
            [
                'label' => "My Second dataset",
                'backgroundColor' => "rgba(255,99,132,0.2)",
                'borderColor' => "rgba(255,99,132,1)",
                'pointBackgroundColor' => "rgba(255,99,132,1)",
                'pointBorderColor' => "#fff",
                'pointHoverBackgroundColor' => "#fff",
                'pointHoverBorderColor' => "rgba(255,99,132,1)",
                'data' => [28, 48, 40, 19, 96, 27, 100]
            ]
        ]
    ]
]);
?>

插件使用示例(在饼图中显示百分比)

echo ChartJs::widget([
    'type' => 'pie',
    'id' => 'structurePie',
    'options' => [
        'height' => 200,
        'width' => 400,
    ],
    'data' => [
        'radius' =>  "90%",
        'labels' => ['Label 1', 'Label 2', 'Label 3'], // Your labels
        'datasets' => [
            [
                'data' => ['35.6', '17.5', '46.9'], // Your dataset
                'label' => '',
                'backgroundColor' => [
                        '#ADC3FF',
                        '#FF9A9A',
                    'rgba(190, 124, 145, 0.8)'
                ],
                'borderColor' =>  [
                        '#fff',
                        '#fff',
                        '#fff'
                ],
                'borderWidth' => 1,
                'hoverBorderColor'=>["#999","#999","#999"],                
            ]
        ]
    ],
    'clientOptions' => [
        'legend' => [
            'display' => false,
            'position' => 'bottom',
            'labels' => [
                'fontSize' => 14,
                'fontColor' => "#425062",
            ]
        ],
        'tooltips' => [
            'enabled' => true,
            'intersect' => true
        ],
        'hover' => [
            'mode' => false
        ],
        'maintainAspectRatio' => false,

    ],
    'plugins' =>
        new \yii\web\JsExpression('
        [{
            afterDatasetsDraw: function(chart, easing) {
                var ctx = chart.ctx;
                chart.data.datasets.forEach(function (dataset, i) {
                    var meta = chart.getDatasetMeta(i);
                    if (!meta.hidden) {
                        meta.data.forEach(function(element, index) {
                            // Draw the text in black, with the specified font
                            ctx.fillStyle = 'rgb(0, 0, 0)';

                            var fontSize = 16;
                            var fontStyle = 'normal';
                            var fontFamily = 'Helvetica';
                            ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily);

                            // Just naively convert to string for now
                            var dataString = dataset.data[index].toString()+'%';

                            // Make sure alignment settings are correct
                            ctx.textAlign = 'center';
                            ctx.textBaseline = 'middle';

                            var padding = 5;
                            var position = element.tooltipPosition();
                            ctx.fillText(dataString, position.x, position.y - (fontSize / 2) - padding);
                        });
                    }
                });
            }
        }]')
])

更多信息

ChartJs 有很多配置选项。有关更多信息,请查看 ChartJs 插件 网站。

贡献

有关详细信息,请参阅 CONTRIBUTING

致谢

许可证

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

2amigOS!
定制软件 | 网络及移动软件开发
www.2amigos.us