コンテンツにスキップ
getnextpdf.com

Pro エディション

Chart — 詳細リファレンス

このページは、NextPDF Pro Chart モジュールの契約レベルのリファレンスです。サーフェスは NextPDF\Pro\Chart にある 5 つの公開クラス、すなわち BarChartLineChartPieChart の各レンダラー、ChartBox 配置矩形、そして ChartColor 値オブジェクトです。各レンダラーは描画プリミティブです。静的ファクトリーがそれを生成し、フルエントな with*() 呼び出しがそれを構成し、render(ChartBox $box): string が供給された矩形に対する PDF コンテンツストリーム演算子を返します。出力はベクターのみで決定的です。同一の入力と構成は同一のバイト列を生成します。退化した入力は例外をスローするのではなく空の文字列を返すため、チャートが周囲のページを壊すことは決してありません。タスク指向のビューはケーパビリティページにあります。

このケーパビリティは NextPDF Pronextpdf/pro)で提供され、Pro ティアのライセンスエンベロープで有効化されます。そのエンタイトルメントのないデプロイメントは、ケーパビリティのクラスをロードしません。エディションを比較してライセンスを取得

Chart レンダラーは、chart.* ケーパビリティファミリーの下でケーパビリティライセンスされます。ケーパビリティのライセンスがない場合、Chart レンダラーは利用できません。

Terminal window
composer require nextpdf/pro:^3
シンボルパラメーターデフォルトの挙動戻り値スロー/失敗条件注記
BarChart::fromData()list<string> $labels, list<int|float> $values値は float にキャストselfスローしない唯一の生成経路。コンストラクターは private
BarChart::withBarColor()ChartColor $color棒の塗り。デフォルトはパレットのエントリー 0selfスローしないフルエント。レシーバーを変更
BarChart::withAxisColor()ChartColor $color軸のストローク。デフォルト #333333selfスローしない
BarChart::withBarGap()float $gapスロット幅に対する割合としての間隔。デフォルト 0.2selfスローしない0.00.9 にクランプ。範囲外の入力は拒否ではなくクランプ
BarChart::withFontSize()float $sizeラベルのフォントサイズ(ポイント単位)。デフォルト 7.0selfスローしない
BarChart::render()ChartBox $box軸、棒、カテゴリーラベル、5 つの値目盛りstring 演算子スローしない。空データは '' を返す非正の最大値は 1.0 に対してスケーリング
LineChart::create()list<string> $labels系列のないチャートselfスローしないコンストラクターは private
LineChart::fromData()list<string> $labels, list<int|float> $values名前のない系列を 1 つ追加selfスローしない単一系列の簡便メソッド
LineChart::addSeries()string $name, list<int|float> $values, ?ChartColor $color = nullnull の色は系列インデックスによってパレットから自動割り当てselfスローしない系列名は凡例用に予約
LineChart::withAxisColor()ChartColor $color軸のストローク。デフォルト #333333selfスローしない
LineChart::withLineWidth()float $width系列のストローク幅。デフォルト 1.5selfスローしない
LineChart::withFontSize()float $sizeラベルのフォントサイズ。デフォルト 7.0selfスローしない
LineChart::withDots()bool $show, float $radius = 2.5データポイントのマーカー。デフォルトで有効selfスローしないマーカーはベジェ近似の円として描画
LineChart::withGrid()bool $show水平の四分位グリッド。デフォルトで有効selfスローしない
LineChart::render()ChartBox $boxグリッド、軸、系列ごとに 1 本の経路、ラベルstring 演算子スローしない。系列がなければ '' を返す2 点未満の系列は経路を描画しない
PieChart::fromData()list<string> $labels, list<int|float> $values値の合計から比率を計算selfスローしないコンストラクターは private
PieChart::withColors()list<ChartColor> $colorsスライスごとに 1 色、順番どおりselfスローしない欠けたエントリーはパレットにフォールバック
PieChart::withStrokeColor()ChartColor $colorスライスの輪郭。デフォルトは白selfスローしない
PieChart::withFontSize()float $sizeラベルのフォントサイズ。デフォルト 7.0selfスローしない
PieChart::withPercentages()bool $showパーセンテージラベル。デフォルトで有効selfスローしないラベルは 15 度を超えて広がるスライスにのみ描画
PieChart::withLegend()bool $show右側の凡例。デフォルトで有効selfスローしない凡例はボックス幅を 80 ポイント予約
PieChart::render()ChartBox $box扇形、オプションのラベル、オプションの凡例string 演算子スローしない。空データまたはゼロ以下の合計は '' を返す円弧は最大 90 度のベジェセグメントに分割
ChartBox::__construct()float $x, float $y, float $width, float $heightPDF の左下原点、ポイント単位スローしないfinal readonly。寸法は検証されない
ChartBox::fromUserSpace()float $x, float $y, float $width, float $height, float $pageHeight左上原点の矩形を PDF 座標に反転selfスローしない
ChartBox::right()なしx + widthfloatスローしないプロパティではなくメソッド
ChartBox::top()なしy + heightfloatスローしないプロパティではなくメソッド
ChartBox::inset()float $left, float $bottom, float $right, float $top指定のインセットで縮小したサブボックスselfスローしない過大なインセットは負の寸法を生成。検証されない
ChartColor::__construct()float $r, float $g, float $b, 各 0.01.0スローしないfinal readonly。成分はクランプされない
ChartColor::rgb()int $r, int $g, int $b, 各 0255成分を 0.01.0 にスケーリングselfスローしない
ChartColor::hex()string $hex# 接頭辞付きまたは素の 6 桁 16 進数を受け付けるselfスローしない末尾の欠けた桁はゼロとしてデコード
ChartColor::palette()int $index組み込みの 12 色パレットself負のインデックスで TypeError非負のインデックスは 12 を法として循環
ChartColor::strokeOperator()なしストローク色演算子(RG)、小数 3 桁stringスローしないプロパティではなくメソッド
ChartColor::fillOperator()なし塗り色演算子(rg)、小数 3 桁stringスローしないプロパティではなくメソッド
public static function fromData(array $labels, array $values): self
public function withBarColor(ChartColor $color): self
public function withAxisColor(ChartColor $color): self
public function withBarGap(float $gap): self
public function withFontSize(float $size): self
public function render(ChartBox $box): string
public static function create(array $labels): self
public static function fromData(array $labels, array $values): self
public function addSeries(string $name, array $values, ?ChartColor $color = null): self
public function withAxisColor(ChartColor $color): self
public function withLineWidth(float $width): self
public function withFontSize(float $size): self
public function withDots(bool $show, float $radius = 2.5): self
public function withGrid(bool $show): self
public function render(ChartBox $box): string
public static function fromData(array $labels, array $values): self
public function withColors(array $colors): self
public function withStrokeColor(ChartColor $color): self
public function withFontSize(float $size): self
public function withPercentages(bool $show): self
public function withLegend(bool $show): self
public function render(ChartBox $box): string
public function __construct(
public float $x,
public float $y,
public float $width,
public float $height,
)
public static function fromUserSpace(
float $x,
float $y,
float $width,
float $height,
float $pageHeight,
): self
public function right(): float
public function top(): float
public function inset(float $left, float $bottom, float $right, float $top): self
public static function rgb(int $r, int $g, int $b): self
public static function hex(string $hex): self
public static function palette(int $index): self
public function strokeOperator(): string
public function fillOperator(): string

3 つのレンダラーはすべて 1 つのライフサイクルに従います。静的ファクトリー、フルエントな構成、1 回の render() 呼び出しです。構成メソッドはレシーバーを変更してそれを返します。レンダラーは不変の値オブジェクトではありません。render() は構成を変更せずに読み取るため、構成済みの 1 つのレンダラーを複数のボックスにレンダリングできます。すべてのレンダリングは、その出力を save/restore のグラフィックスステートペアで包むため、チャートの状態がページに漏れることは決してありません。座標は小数 2 桁、色成分は小数 3 桁で出力され、これにより出力はバイト安定に保たれます。テキストは、構成されたサイズで /ChartFont フォントリソース名を通じてレンダリングされます。呼び出し元は、対象ページのリソース辞書にその名前でフォントを登録します。ラベル文字列は、文字列オペランドに入る前にバックスラッシュと括弧をエスケープします。レンダラーは、リフロー、クリッピング、コンテナのネゴシエーションを一切行いません。配置は呼び出し元が所有します。

棒グラフと折れ線グラフは、ボックス内に固定のプロットインセットを予約します。左 40 ポイント、下 20、右 10、上 10 です。残りのプロット領域は、系列の最大値に対して値を線形にスケーリングします。ゼロ以下の最大値は代わりに 1.0 に対してスケーリングされるため、すべてゼロのデータはゼロ除算ではなく平坦な内容で軸をレンダリングします。両者とも X 軸と Y 軸を 0.5 ポイント幅で、5 つの値目盛りを四分位位置に描画します。棒グラフは、1,000 および 1,000,000 を超える目盛り値を K および M の接尾辞で整形します。折れ線グラフはそのままの数値を表示します。

各値はプロット幅にわたって等しいスロットを占めます。棒は、構成された間隔の割合を差し引いたスロットを塗り、スロット内で中央に配置されます。カテゴリーラベルはプロット領域の 12 ポイント下に描画されます。

グリッドは、有効な場合、軸と系列の下に薄い灰色(0.85 0.85 0.85 RG)で 4 本の水平な四分位線を描画します。各系列は、その点を通る 1 本の折れ線を、プロット幅全体にわたって描画します。オプションのマーカーは、各データポイントに 4 セグメントのベジェ円として描画されます。系列の色は、挿入順に連続するパレットエントリーをデフォルトとします。

スライスはデータ順にレイアウトされ、正の X 軸から始まり反時計回りに広がります。各扇形の経路は閉じ、塗りとストロークを組み合わせて(h B)描画されます。円弧は最大 90 度のベジェセグメントに分割されます。パーセンテージラベルは整数パーセントに丸められ、15 度を超えて広がるスライスにのみ描画されます。凡例は、有効な場合、右側にボックス幅を 80 ポイント予約し、エントリーごとに 8 ポイントのスウォッチを 12 ポイントの行高で描画します。半径は、残りの幅とボックス高さのうち小さい方の半分から、10 ポイントのマージンを引いた値です。

ChartBox は、左下原点を持つ PDF ユーザー単位(ポイント)の不変の矩形です。ChartBox::fromUserSpace() は、供給されたページ高さに対して反転することで、左上原点の矩形を変換します。inset() は新しいより小さなボックスを返します。right()top() はアクセサーメソッドです。ChartColor は自己完結型で、Core の色クラスには依存しません。その 12 エントリーのパレットは、呼び出し元が色を指定しない場合に系列とスライスの色を割り当てます。

チャートタイプまたは機能が Verified を獲得するのは、pro/tests/** のフィクスチャがそれを行使する場合のみです。チャートを統べる外部標準はないため、エビデンスはユニットレベルの挙動カバレッジです。

チャートタイプ / 機能ステータスエビデンス(テストパス)確度注記
棒グラフ — レンダリング、軸、棒の矩形、間隔のクランプ、空/すべてゼロのデータ、K/M 値の整形Verifiedpro/tests/Unit/Chart/BarChartTest.php; BarChartArithmeticCoverageTest.php; BarChartBoundaryCoverageTest.phphighグラフィックスステートのラップ、軸線、棒の高さの比率、目盛り数、整形の境界を表明。
折れ線グラフ — 単一および複数系列、線の経路、軸、ドット、グリッド、単一点Verifiedpro/tests/Unit/Chart/LineChartTest.php; LineChartCoverageTest.php; LineChartArithmeticCoverageTest.php; LineChartTypeCastCoverageTest.phphigh複数系列、単一点の線なし、空系列、グリッドとドットの経路をカバー。
円グラフ — 扇形、ベジェ分割、パーセンテージ、凡例、ゼロ/負の合計Verifiedpro/tests/Unit/Chart/PieChartTest.php; PieChartArithmeticCoverageTest.php; PieChartBoundaryCoverageTest.phphigh扇形の経路、広がりごとのセグメント数、15 度のラベル閾値、凡例のジオメトリ、空文字列の挙動をカバー。
ChartBox — 座標変換(ユーザー空間から PDF へ)、ページ上端/下端、ゼロ寸法、インセットVerifiedpro/tests/Unit/Chart/ChartBoxTest.phphighページ上端、下端、ゼロ寸法の端での、左上原点から左下原点への変換。
ChartColor — RGB スケーリング、16 進数の解析、パレット、ストローク/塗り演算子Verifiedpro/tests/Unit/Chart/ChartColorTest.phphigh0–255 から 0–1 のスケーリング、# 接頭辞付きおよび素の 16 進数、大文字小文字混在、12 エントリー後のパレット循環。
レンダラー横断の回帰堅牢化Verifiedpro/tests/Unit/Chart/ChartCoverageTest.phphigh3 つのレンダラーにわたる共有の回帰スイートと、値整形の算術。
棒/折れ線/円以外のチャートタイプ(面、散布図、積み上げ、ドーナツなど)Not supportedhighレンダラーは出荷されていません。モジュールのサーフェスはちょうど棒、折れ線、円です。誠実に述べると、これは「あらゆるチャートタイプ」ではありません。

誠実なカウント:Verified 6 行、Claimed 0Not supported 1(棒、折れ線、円以外のあらゆるチャートタイプ)。

  • どのレンダラーもデータに対して例外をスローしません。退化した入力は空の文字列に縮退します。空の棒または折れ線データ、空の系列リスト、ゼロ以下の円グラフ合計はいずれも '' を返します。
  • 2 点未満の折れ線系列は、経路もマーカーも描画しません。軸とラベルは依然としてレンダリングされます。
  • 負の棒の値は拒否されません。棒の矩形は X 軸の下に伸びます。
  • ラベル数と値の数は相互検証されません。呼び出し元が一致する長さのリストを供給します。
  • ゼロまたは負の寸法を持つ ChartBox は受け付けられ、退化した出力を生成します。呼び出し元がボックスのサイズを指定する必要があります。
  • レンダラーはクリッピングを行いません。サイズが大きすぎるチャート、そのプロット下のカテゴリーラベル、または長い凡例は、意図したページ領域からあふれる可能性があります。
  • チャートフォントリソース名でフォントを欠くページは、未定義のリソースを参照するテキスト演算子を残します。その場合のビューアーの挙動は未定義です。
  • ChartColor::hex() は検証を一切行いません。6 桁未満の入力は、欠けた成分をゼロとしてデコードします。ChartColor::palette() は負のインデックスで TypeError により失敗します。PHP の負の剰余がパレットキーを解決しないためです。
  • モジュールは暗号処理を一切行いません。FIPS モードにチャート固有の挙動はありません。

Chart モジュールは PDF コンテンツストリーム演算子を出力します。その出力を統べる外部のチャート、シンボロジー、または暗号標準はないため、唯一の適合性サーフェスは出力される演算子ストリームです。

主張標準
出力されるグラフィックスはコンテンツストリーム演算子モデルに従う。出力は保存・復元されたグラフィックスステート内にネストする。ISO 32000-2§8.1
棒、線、扇形、マーカーは経路オブジェクトである。構築は m または re で始まり、経路描画演算子で終わる。ISO 32000-2§8.5.2
ラベルはテキストオブジェクトとしてレンダリングされる。位置は BT の後に確立され、グリフは Tj テキスト表示演算子で描画される。ISO 32000-2§9.2.2, §9.4.3

すべての節はパラフレーズされています。このページは規範的なテキストを一切再現しません。これらはケーパビリティの記述であり、認証ではありません。NextPDF はいかなる認証も保持せず、いかなる認証も付与しません。ストリームの正しいレンダリングは、それを包含するドキュメントが整形式であることにも依存します。これはドキュメント作成者の責任です。

  • 5 つのクラスはすべて @since 1.9.0 を持ち、nextpdf/pro 3.1.0 で最新です。
  • モジュールは自己完結型です。レンダラーは ChartBoxChartColor のみに依存し、Core との結合はありません。
  • 決定的な出力により、チャートを含むドキュメントは再現可能、diff 安定、そして署名やアーカイブに対して安全に保たれます。
  • チャートをホストするページごとに、チャートフォントリソース名でフォントを 1 回登録します。
  • 構成済みのレンダラーをボックス間で自由に再利用します。render() は状態の変更を一切行いません。
  • テストエビデンスは pro/tests/Unit/Chart/ 配下にあります。サポートマトリックスは各 Verified 行をそのスイートにアンカーします。

このページは、外部から観測可能な挙動と、サポートされる公開 API サーフェスのみを文書化します。内部の名前空間パス、ヘルパークラス、メカニズムの表、ランブックのファイル名、チケット接頭辞は対象外です。