以前作成した度数分布表作成ツール「PHP-FrequencyTable」をVersion 1.2.0にアップデートしました。
主な変更点は次の通りです。
▼機能面:
- 日本語サポート追加(表の表示項目)
- csv() の仕様変更
- tsv() の仕様変更
- html() の仕様変更
- parse() の仕様変更
- show()メソッド削除(markdown()で代用可)
▼構成面:
- ドキュメントの整理
- exampleコードの追加
- 内部コードの整理とPSR12対応
- 設定をNeonで対応
- 静的解析対応 (PHPStan/PHPCS/PHPMD)
- GitHub Workflow追加(PR時テスト/自動タグ付け)
インストールは以前同様、Composerでサクッとできます。(PHP8.0以降)
composer require macocci7/php-frequency-table
日本語サポート追加
以前は英語での表示しかありませんでしたが、
日本語でも度数分布表を表示できるようにしました。
英語 | 日本語 |
Class | 階級 |
Frequency | 度数 |
Relative Frequency | 相対度数 |
Cumulative Frequency | 累積度数 |
Cumulative Relative Frequency | 累積相対度数 |
Class Value | 階級値 |
言語関連のメソッドは次の通りです。
メソッド | 引数 | 戻り値 | 説明 |
langs() | (なし) | array | サポート言語のリスト [ 0 => ‘eng’, 1 => ‘ja’, ] |
lang() | (なし) | string | 設定されている言語名 (デフォルト:’eng’) |
lang() | string $lang | FrequencyTable | 言語を$langに設定する。 |
▼サンプルコード
<?php
require_once('../vendor/autoload.php');
use Macocci7\PhpFrequencyTable\FrequencyTable;
$ft = new FrequencyTable([
'data' => [ 5, 10, 12, 15, 20, 25, 30, ],
'classRange' => 10,
]);
$ft->meanOn()->setColumns2Show($ft->getValidColumns2Show());
echo $ft->lang($lang)->markdown() . "\n\n";
▼標準出力
|階級|度数|累積度数|相対度数|累積相対度数|階級値|階級値 × 度数|
|:---:|:---:|:---:|:---:|:---:|:---:|---:|
|0 ~ 10|1|1|0.14|0.14|5.0|5.0|
|10 ~ 20|3|4|0.43|0.57|15.0|45.0|
|20 ~ 30|2|6|0.29|0.86|25.0|50.0|
|30 ~ 40|1|7|0.14|1.00|35.0|35.0|
|合計|7|7|1.00|1.00|---|135.0|
|平均|---|---|---|---|---|19.3|
▼Markdownのレンダー結果例
csv() 仕様変更 / tsv() 仕様変更
csv() と tsv() の違いは区切り文字がカンマかタブかの違いだけです。
▼引数: csv() / tsv() 共通
# | 引数 | 説明 |
1 | string|null $path = null | 保存ファイルパス。デフォルトnull。 省略するとCSV/TSVの内容を文字列で返します。 |
2 | string $quotation = ‘”‘ | データ個々の括り。デフォルト:二重引用符。 |
3 | string $eol = “\n” | 行末コード。デフォルトLF。 |
仕様変更した箇所は、第二引数の型を真偽値から文字列に変更し、自由に文字列指定できるようにしました。
ダブルクオートではなくシングルクオートにもできますし、
バッククオートにもできます。
html() 仕様変更
変更点は、テーブルの見出し行の箇所で tdタグを使っていたのを、thタグに変更しただけです。
▼PHPコード例
<?php
require('../vendor/autoload.php');
use Macocci7\PhpFrequencyTable\FrequencyTable;
$ft = new FrequencyTable([
'data' => [ 0, 5, 10, 15, 20, ],
'classRange' => 10,
]);
$ft->meanOn()->html('test.html');
▼出力例
<table>
<tr><td>Class</td><td>Frequency</td><td>RelativeFrequency</td><td>ClassValue</td><td>ClassValue * Frequency</td></tr>
<tr><td>0 ~ 10</td><td>2</td><td>0.40</td><td>5.0</td><td>10.0</td></tr>
<tr><td>10 ~ 20</td><td>2</td><td>0.40</td><td>15.0</td><td>30.0</td></tr>
<tr><td>20 ~ 30</td><td>1</td><td>0.20</td><td>25.0</td><td>25.0</td></tr>
<tr><td>Total</td><td>5</td><td>1.00</td><td>---</td><td>65.0</td></tr>
<tr><td>Mean</td><td>---</td><td>---</td><td>---</td><td>13.0</td></tr>
</table>
▼適用CSS例
<style>
table {
border-collapse: separate;
border-spacing: 0;
border: 2px #666666 solid;
border-radius: 12px;
overflow: hidden;
}
table tr:nth-child(odd) td {
background-color: #eeeeee;
}
table th {
border-right: 1px #666666 solid;
background-color: #0099dd;
padding: 6px;
white-space: nowrap;
font-weight: bold;
color: #ffffff;
}
table td {
border-right: 1px #666666 solid;
background-color: #ffffff;
padding: 6px;
white-space: nowrap;
color: #333333;
text-align: center;
}
</style>
▼ブラウザ表示例
parse() 仕様変更
以前は、返り値ハッシュ配列内の
「FrequencyTable」の項目に markdown() の出力を入れていましたが、次のようにハッシュ配列に変更しました。
▼ parse() 返り値一部抜粋
[FrequencyTable] => Array
(
[tableHead] => Array
(
[0] => Class
[1] => Frequency
[2] => RelativeFrequency
[3] => ClassValue
[4] => ClassValue * Frequency
)
[classData] => Array
(
[0] => Array
(
[Class] => 0 ~ 10
[Frequency] => 2
[RelativeFrequency] => 0.40
[ClassValue] => 5.0
[ClassValue * Frequency] => 10.0
)
[1] => Array
(
[Class] => 10 ~ 20
[Frequency] => 2
[RelativeFrequency] => 0.40
[ClassValue] => 15.0
[ClassValue * Frequency] => 30.0
)
[2] => Array
(
[Class] => 20 ~ 30
[Frequency] => 1
[RelativeFrequency] => 0.20
[ClassValue] => 25.0
[ClassValue * Frequency] => 25.0
)
)
[total] => Array
(
[Class] => Total
[Frequency] => 5
[RelativeFrequency] => 1.00
[ClassValue] => ---
[ClassValue * Frequency] => 65.0
)
[mean] => Array
(
[Class] => Mean
[Frequency] => ---
[RelativeFrequency] => ---
[ClassValue] => ---
[ClassValue * Frequency] => 13.0
)
)
このようにハッシュ配列にしておいた方が扱いやすいと思います。
show() 削除 (markdown()で代用可)
show() は
echo $ft->markdown();
で代用可能なので削除しました。
以上です。
コメント