ข้ามไปยังเนื้อหา
getnextpdf.com

Pro รุ่น

Chart — การอ้างอิงเชิงลึก

หน้านี้เป็นการอ้างอิงระดับสัญญาสำหรับโมดูล NextPDF Pro Chart พื้นผิวคือคลาสสาธารณะห้าคลาสใน NextPDF\Pro\Chart ได้แก่ ตัวเรนเดอร์ BarChart, LineChart และ PieChart, สี่เหลี่ยมการวางตำแหน่ง ChartBox และ value object ChartColor ตัวเรนเดอร์แต่ละตัวเป็น drawing primitive โรงงานแบบ static สร้างมันขึ้นมา การเรียก with*() แบบ fluent กำหนดค่ามัน และ render(ChartBox $box): string คืน operator content-stream ของ PDF สำหรับสี่เหลี่ยมที่จัดหามา เอาต์พุตเป็นแบบเวกเตอร์ล้วนและกำหนดผลแน่นอน คืออินพุตและการกำหนดค่าที่เหมือนกันให้ผลไบต์ที่เหมือนกัน อินพุตที่ degenerate คืนค่าสตริงว่างแทนที่จะ throw แผนภูมิจึงไม่เคยทำลายหน้าที่อยู่รอบ ๆ มุมมองเชิงงานอยู่ที่หน้าความสามารถ

ความสามารถนี้มาพร้อมใน NextPDF Pro (nextpdf/pro) และเปิดใช้งานด้วย license envelope ระดับ Pro การดีพลอยที่ไม่มีสิทธิ์ดังกล่าวจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอรับสิทธิ์ใช้งาน

ตัวเรนเดอร์ Chart ได้รับสิทธิ์ใช้งานระดับความสามารถภายใต้ตระกูลความสามารถ chart.* เมื่อความสามารถไม่มีสิทธิ์ใช้งาน ตัวเรนเดอร์ chart จะไม่พร้อมใช้งาน

Terminal window
composer require nextpdf/pro:^3
สัญลักษณ์พารามิเตอร์พฤติกรรมเริ่มต้นคืนค่าโยนหรือล้มเหลวด้วยหมายเหตุ
BarChart::fromData()list<string> $labels, list<int|float> $valuesค่าถูกแคสต์เป็น floatselfไม่โยนเส้นทางการสร้างเดียว constructor เป็น private
BarChart::withBarColor()ChartColor $colorสีเติมแท่ง ค่าเริ่มต้นคือ palette entry 0selfไม่โยนfluent เปลี่ยนแปลง receiver
BarChart::withAxisColor()ChartColor $colorสีเส้นแกน ค่าเริ่มต้น #333333selfไม่โยน
BarChart::withBarGap()float $gapช่องว่างเป็นเศษส่วนของความกว้าง slot ค่าเริ่มต้น 0.2selfไม่โยนถูก clamp ไว้ที่ 0.00.9 อินพุตนอกช่วงถูก clamp ไม่ถูกปฏิเสธ
BarChart::withFontSize()float $sizeขนาดฟอนต์ป้ายกำกับเป็นจุด ค่าเริ่มต้น 7.0selfไม่โยน
BarChart::render()ChartBox $boxแกน แท่ง ป้ายหมวดหมู่ ขีดค่าห้าขีดoperator stringไม่โยน ข้อมูลว่างคืน ''ค่าสูงสุดที่ไม่เป็นบวกจะปรับสเกลเทียบกับ 1.0
LineChart::create()list<string> $labelsแผนภูมิที่ไม่มีชุดข้อมูลselfไม่โยนconstructor เป็น private
LineChart::fromData()list<string> $labels, list<int|float> $valuesเพิ่มชุดข้อมูลหนึ่งชุดที่ไม่มีชื่อselfไม่โยนความสะดวกสำหรับชุดข้อมูลเดียว
LineChart::addSeries()string $name, list<int|float> $values, ?ChartColor $color = nullสี null จะกำหนดอัตโนมัติจาก palette ตามดัชนีชุดข้อมูลselfไม่โยนชื่อชุดข้อมูลสงวนไว้สำหรับใช้ใน legend
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ไม่โยนเครื่องหมายวาดเป็นวงกลมที่ประมาณด้วย Bezier
LineChart::withGrid()bool $showเส้นกริดแนวนอนแบบควอไทล์ เปิดใช้งานโดยค่าเริ่มต้นselfไม่โยน
LineChart::render()ChartBox $boxกริด แกน หนึ่งเส้นทางต่อชุดข้อมูล ป้ายกำกับoperator stringไม่โยน ไม่มีชุดข้อมูลคืน ''ชุดข้อมูลที่สั้นกว่าสองจุดจะไม่วาดเส้นทาง
PieChart::fromData()list<string> $labels, list<int|float> $valuesสัดส่วนคำนวณจากผลรวมของค่าselfไม่โยนconstructor เป็น private
PieChart::withColors()list<ChartColor> $colorsหนึ่งสีต่อหนึ่งชิ้น ตามลำดับselfไม่โยนรายการที่ขาดหายจะย้อนกลับไปใช้ palette
PieChart::withStrokeColor()ChartColor $colorเส้นขอบชิ้น ค่าเริ่มต้นสีขาวselfไม่โยน
PieChart::withFontSize()float $sizeขนาดฟอนต์ป้ายกำกับ ค่าเริ่มต้น 7.0selfไม่โยน
PieChart::withPercentages()bool $showป้ายเปอร์เซ็นต์ เปิดใช้งานโดยค่าเริ่มต้นselfไม่โยนป้ายกำกับเรนเดอร์เฉพาะบนชิ้นที่กวาดเกิน 15 องศา
PieChart::withLegend()bool $showlegend ด้านขวา เปิดใช้งานโดยค่าเริ่มต้นselfไม่โยนlegend จองความกว้างกล่อง 80 จุด
PieChart::render()ChartBox $boxเซกเตอร์ ป้ายกำกับที่เลือกได้ legend ที่เลือกได้operator stringไม่โยน ข้อมูลว่างหรือผลรวมที่เท่ากับหรือต่ำกว่าศูนย์คืน ''ส่วนโค้งถูกแบ่งเป็นเซกเมนต์ Bezier ไม่เกิน 90 องศา
ChartBox::__construct()float $x, float $y, float $width, float $heightจุดกำเนิดมุมล่างซ้ายของ PDF เป็นจุดไม่โยนfinal readonly มิติไม่ถูกตรวจสอบ
ChartBox::fromUserSpace()float $x, float $y, float $width, float $height, float $pageHeightพลิกสี่เหลี่ยมที่มีจุดกำเนิดมุมบนซ้ายเป็นพิกัด PDFselfไม่โยน
ChartBox::right()ไม่มีx + widthfloatไม่โยนเป็นเมท็อด ไม่ใช่พร็อพเพอร์ตี
ChartBox::top()ไม่มีy + heightfloatไม่โยนเป็นเมท็อด ไม่ใช่พร็อพเพอร์ตี
ChartBox::inset()float $left, float $bottom, float $right, float $topกล่องย่อยที่หดด้วย inset ที่กำหนดselfไม่โยนinset ที่ใหญ่เกินไปให้มิติเป็นลบ ไม่ถูกตรวจสอบ
ChartColor::__construct()float $r, float $g, float $b แต่ละค่า 0.01.0ไม่โยนfinal readonly องค์ประกอบไม่ถูก clamp
ChartColor::rgb()int $r, int $g, int $b แต่ละค่า 0255ปรับสเกลองค์ประกอบเป็น 0.01.0selfไม่โยน
ChartColor::hex()string $hexรับเลขฐานสิบหกหกหลักแบบมี # นำหน้าหรือแบบเปล่าselfไม่โยนหลักท้ายที่ขาดหายถอดรหัสเป็นศูนย์
ChartColor::palette()int $indexpalette 12 สีในตัวselfTypeError เมื่อดัชนีเป็นลบดัชนีที่ไม่เป็นลบวนรอบด้วย modulo 12
ChartColor::strokeOperator()ไม่มีoperator สีเส้น (RG) สามทศนิยมstringไม่โยนเป็นเมท็อด ไม่ใช่พร็อพเพอร์ตี
ChartColor::fillOperator()ไม่มีoperator สีเติม (rg) สามทศนิยม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

ตัวเรนเดอร์ทั้งสามตัวปฏิบัติตามวงจรชีวิตเดียวกัน คือ โรงงานแบบ static, การกำหนดค่าแบบ fluent, การเรียก render() หนึ่งครั้ง เมท็อดการกำหนดค่าเปลี่ยนแปลง receiver และคืนค่ามัน ตัวเรนเดอร์ไม่ใช่ value object ที่ไม่เปลี่ยนแปลง render() อ่านการกำหนดค่าโดยไม่เปลี่ยนแปลงมัน ตัวเรนเดอร์ที่กำหนดค่าแล้วหนึ่งตัวจึงเรนเดอร์ลงหลายกล่องได้ ทุกการเรนเดอร์ห่อเอาต์พุตไว้ในคู่ save/restore ของ graphics-state สถานะแผนภูมิจึงไม่เคยรั่วไหลลงหน้า พิกัดส่งออกที่สองทศนิยมและองค์ประกอบสีที่สามทศนิยม ซึ่งทำให้เอาต์พุตเสถียรระดับไบต์ ข้อความเรนเดอร์ผ่านชื่อทรัพยากรฟอนต์ /ChartFont ที่ขนาดที่กำหนด ผู้เรียกใช้ลงทะเบียนฟอนต์ภายใต้ชื่อนั้นใน resource dictionary ของหน้าเป้าหมาย สตริงป้ายกำกับ escape แบ็กสแลชและวงเล็บก่อนเข้าสู่ operand ของสตริง ตัวเรนเดอร์ไม่ทำการ reflow ไม่ทำการ clip และไม่เจรจาคอนเทนเนอร์ ผู้เรียกใช้เป็นเจ้าของการวางตำแหน่ง

แผนภูมิแท่งและเส้นสงวน plot inset แบบคงที่ภายในกล่อง คือ ซ้าย 40 จุด ล่าง 20 จุด ขวา 10 จุด บน 10 จุด พื้นที่ plot ที่เหลือปรับสเกลค่าแบบเชิงเส้นเทียบกับค่าสูงสุดของชุดข้อมูล ค่าสูงสุดที่เป็นศูนย์หรือต่ำกว่าจะปรับสเกลเทียบกับ 1.0 แทน ข้อมูลที่เป็นศูนย์ทั้งหมดจึงเรนเดอร์แกนด้วยเนื้อหาแบนราบแทนที่จะหารด้วยศูนย์ ทั้งสองวาดแกน X และ Y ที่ความกว้าง 0.5 จุด และขีดค่าห้าขีดที่ตำแหน่งควอไทล์ แผนภูมิแท่งจัดรูปแบบค่าขีดด้วยส่วนต่อท้าย K และ M เหนือหนึ่งพันและหนึ่งล้าน แผนภูมิเส้นพิมพ์ตัวเลขธรรมดา

แต่ละค่าครอบครอง slot ที่เท่ากันตลอดความกว้าง plot แท่งเติม slot ลบด้วยเศษส่วนช่องว่างที่กำหนด และจัดกึ่งกลางใน slot ป้ายหมวดหมู่วาดต่ำกว่าพื้นที่ plot 12 จุด

เมื่อเปิดใช้งาน กริดวาดเส้นควอไทล์แนวนอนสี่เส้นด้วยสีเทาอ่อน (0.85 0.85 0.85 RG) ใต้แกนและชุดข้อมูล แต่ละชุดข้อมูลวาดเส้นหลายส่วนหนึ่งเส้นผ่านจุดของมัน ครอบคลุมความกว้าง plot เต็ม เครื่องหมายที่เลือกได้วาดเป็นวงกลม Bezier สี่เซกเมนต์ที่จุดข้อมูลแต่ละจุด สีชุดข้อมูลใช้ค่าเริ่มต้นเป็น palette entry ที่ต่อเนื่องกันตามลำดับการเพิ่ม

ชิ้นส่วนจัดวางตามลำดับข้อมูล เริ่มที่แกน X ด้านบวกและกวาดทวนเข็มนาฬิกา เส้นทางเซกเตอร์แต่ละอันปิดและระบายด้วยการเติมและเส้นรวมกัน (h B) ส่วนโค้งแบ่งเป็นเซกเมนต์ Bezier ไม่เกิน 90 องศา ป้ายเปอร์เซ็นต์ปัดเป็นเปอร์เซ็นต์เต็มและเรนเดอร์เฉพาะบนชิ้นที่กวาดเกิน 15 องศา เมื่อเปิดใช้งาน legend จองความกว้างกล่อง 80 จุดทางด้านขวาและเรนเดอร์ swatch 8 จุดต่อรายการที่ความสูงบรรทัด 12 จุด รัศมีคือครึ่งหนึ่งของค่าที่น้อยกว่าระหว่างความกว้างที่เหลือกับความสูงกล่อง ลบด้วยขอบ 10 จุด

ChartBox คือสี่เหลี่ยมที่ไม่เปลี่ยนแปลงในหน่วยผู้ใช้ PDF (จุด) โดยมีจุดกำเนิดมุมล่างซ้าย ChartBox::fromUserSpace() แปลงสี่เหลี่ยมที่มีจุดกำเนิดมุมบนซ้ายโดยพลิกเทียบกับความสูงหน้าที่จัดหามา inset() คืนกล่องใหม่ที่เล็กกว่า right() และ top() เป็นเมท็อด accessor ChartColor เป็นแบบสมบูรณ์ในตัวและไม่ขึ้นกับคลาสสีของ Core palette 12 รายการของมันกำหนดสีชุดข้อมูลและชิ้นเมื่อผู้เรียกใช้ไม่จัดหาสีมา

ชนิดแผนภูมิหรือฟีเจอร์ได้สถานะ Verified เฉพาะเมื่อ fixture pro/tests/** ใช้งานมัน ไม่มีมาตรฐานภายนอกควบคุมแผนภูมิ หลักฐานจึงเป็นความครอบคลุมเชิงพฤติกรรมระดับหน่วย

ชนิดแผนภูมิ / ฟีเจอร์สถานะหลักฐาน (เส้นทางทดสอบ)ความเชื่อมั่นหมายเหตุ
Bar chart — render, แกน, สี่เหลี่ยมแท่ง, การ clamp ช่องว่าง, ข้อมูลว่าง/ศูนย์ทั้งหมด, การจัดรูปแบบค่า K/MVerifiedpro/tests/Unit/Chart/BarChartTest.php; BarChartArithmeticCoverageTest.php; BarChartBoundaryCoverageTest.phphighการห่อ graphics-state เส้นแกน สัดส่วนความสูงแท่ง จำนวนขีด และขอบเขตการจัดรูปแบบถูกยืนยัน
Line chart — ชุดข้อมูลเดียวและหลายชุด, เส้นทางเส้น, แกน, จุด, กริด, จุดเดียวVerifiedpro/tests/Unit/Chart/LineChartTest.php; LineChartCoverageTest.php; LineChartArithmeticCoverageTest.php; LineChartTypeCastCoverageTest.phphighหลายชุดข้อมูล จุดเดียวไม่มีเส้น ชุดข้อมูลว่าง เส้นทางกริดและจุดถูกครอบคลุม
Pie chart — เซกเตอร์, การแบ่งเซกเมนต์ Bezier, เปอร์เซ็นต์, legend, ผลรวมศูนย์/ลบVerifiedpro/tests/Unit/Chart/PieChartTest.php; PieChartArithmeticCoverageTest.php; PieChartBoundaryCoverageTest.phphighเส้นทางเซกเตอร์ จำนวนเซกเมนต์ต่อการกวาด เกณฑ์ป้าย 15 องศา เรขาคณิต legend และพฤติกรรมสตริงว่างถูกครอบคลุม
ChartBox — การแปลงพิกัด (user space เป็น PDF), บน/ล่างของหน้า, มิติศูนย์, insetVerifiedpro/tests/Unit/Chart/ChartBoxTest.phphighการแปลงจุดกำเนิดมุมบนซ้ายเป็นมุมล่างซ้ายที่ขอบบน ล่าง และมิติศูนย์ของหน้า
ChartColor — การปรับสเกล RGB, การแยกวิเคราะห์ hex, palette, operator เส้น/เติมVerifiedpro/tests/Unit/Chart/ChartColorTest.phphighการปรับสเกล 0–255 เป็น 0–1 เลขฐานสิบหกแบบมี # นำหน้าและแบบเปล่า ตัวพิมพ์ผสม การวนรอบ palette หลัง 12 รายการ
การเสริมความแข็งแกร่ง regression ข้ามตัวเรนเดอร์Verifiedpro/tests/Unit/Chart/ChartCoverageTest.phphighชุด regression ที่ใช้ร่วมกันข้ามตัวเรนเดอร์ทั้งสามตัว บวกกับเลขคณิตการจัดรูปแบบค่า
ชนิดแผนภูมินอกเหนือจาก bar/line/pie (area, scatter, stacked, donut ฯลฯ)Not supportedhighไม่มีตัวเรนเดอร์มาพร้อม พื้นผิวโมดูลคือ bar, line, pie พอดี ระบุอย่างซื่อตรง นี่ไม่ใช่ “แผนภูมิทุกชนิด”

นับอย่างซื่อตรง แถว Verified 6, Claimed 0, Not supported 1 (ชนิดแผนภูมิใด ๆ นอกเหนือจาก bar, line, pie)

  • ไม่มีตัวเรนเดอร์ที่โยนเมื่อรับข้อมูล อินพุตที่ degenerate ลดระดับเป็นสตริงว่าง คือ ข้อมูลแท่งหรือเส้นที่ว่าง รายการชุดข้อมูลว่าง และผลรวม pie ที่เท่ากับหรือต่ำกว่าศูนย์ ล้วนคืน ''
  • ชุดข้อมูลเส้นที่มีน้อยกว่าสองจุดจะไม่วาดเส้นทางและไม่มีเครื่องหมาย แกนและป้ายกำกับยังคงเรนเดอร์
  • ค่าแท่งที่เป็นลบไม่ถูกปฏิเสธ สี่เหลี่ยมแท่งยื่นลงต่ำกว่าแกน X
  • จำนวนป้ายกำกับและค่าไม่ถูกตรวจสอบไขว้ ผู้เรียกใช้จัดหารายการที่มีความยาวตรงกัน
  • ChartBox ที่มีมิติเป็นศูนย์หรือลบจะถูกยอมรับและสร้างเอาต์พุตที่ degenerate ผู้เรียกใช้ต้องกำหนดขนาดกล่อง
  • ตัวเรนเดอร์ไม่ทำการ clip แผนภูมิที่ใหญ่เกินไป ป้ายหมวดหมู่ใต้ plot หรือ legend ที่ยาว สามารถล้นภูมิภาคของหน้าที่ตั้งใจไว้
  • หน้าที่ขาดฟอนต์ภายใต้ชื่อทรัพยากรฟอนต์แผนภูมิจะทิ้ง operator ข้อความที่อ้างอิงทรัพยากรที่ไม่ได้นิยาม พฤติกรรมของโปรแกรมดูจึงไม่ถูกกำหนด
  • ChartColor::hex() ไม่ทำการตรวจสอบ อินพุตที่สั้นกว่าหกหลักถอดรหัสองค์ประกอบที่ขาดหายเป็นศูนย์ ChartColor::palette() ล้มเหลวด้วย TypeError เมื่อดัชนีเป็นลบ เพราะ modulo ค่าลบของ PHP ไม่ระบุคีย์ palette ใด
  • โมดูลไม่ดำเนินการเข้ารหัสลับ โหมด FIPS ไม่มีพฤติกรรมเฉพาะแผนภูมิ

โมดูล Chart ปล่อย operator content-stream ของ PDF ไม่มีมาตรฐานแผนภูมิ ระบบสัญลักษณ์ หรือการเข้ารหัสลับภายนอกควบคุมเอาต์พุตของมัน พื้นผิวความสอดคล้องเพียงอย่างเดียวจึงเป็นสตรีม operator ที่ปล่อยออกมา

ข้อกล่าวอ้างมาตรฐานข้อ
กราฟิกที่ปล่อยออกมาปฏิบัติตามโมเดล operator content-stream เอาต์พุตซ้อนอยู่ภายใน graphics state ที่บันทึกและกู้คืนISO 32000-2§8.1
แท่ง เส้น เซกเตอร์ และเครื่องหมายเป็น path object การสร้างเริ่มด้วย m หรือ re และจบด้วย operator การระบายเส้นทางISO 32000-2§8.5.2
ป้ายกำกับเรนเดอร์เป็น text object ตำแหน่งถูกกำหนดหลัง BT และ glyph ระบายด้วย operator แสดงข้อความ TjISO 32000-2§9.2.2, §9.4.3

ข้อทั้งหมดถูกถอดความ หน้านี้ไม่นำข้อความเชิงบรรทัดฐานมาแสดงซ้ำ ข้อความเหล่านี้เป็นการระบุความสามารถ ไม่ใช่การรับรอง NextPDF ไม่ถือการรับรองใดและไม่ให้การรับรองใด การเรนเดอร์สตรีมอย่างถูกต้องยังขึ้นกับเอกสารที่ห่อหุ้มว่ามีรูปแบบที่ถูกต้อง ซึ่งเป็นความรับผิดชอบของผู้เขียนเอกสาร

  • คลาสทั้งห้าถือ @since 1.9.0 และเป็นปัจจุบันใน nextpdf/pro 3.1.0
  • โมดูลเป็นแบบสมบูรณ์ในตัว ตัวเรนเดอร์ขึ้นกับ ChartBox และ ChartColor เท่านั้น ไม่มีการผูกกับ Core
  • เอาต์พุตแบบกำหนดผลแน่นอนทำให้เอกสารที่มีแผนภูมิสร้างซ้ำได้ เสถียรต่อ diff และปลอดภัยที่จะเซ็นหรือเก็บถาวร
  • ลงทะเบียนฟอนต์ภายใต้ชื่อทรัพยากรฟอนต์แผนภูมิหนึ่งครั้งต่อหน้าที่มีแผนภูมิ
  • ใช้ตัวเรนเดอร์ที่กำหนดค่าแล้วซ้ำข้ามกล่องได้อย่างอิสระ render() ไม่ทำการเปลี่ยนแปลงสถานะ
  • หลักฐานการทดสอบอยู่ภายใต้ pro/tests/Unit/Chart/ เมทริกซ์การรองรับยึดแต่ละแถว Verified กับชุดทดสอบของมัน

หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว public API ที่รองรับเท่านั้น พาธ namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้า ticket อยู่นอกขอบเขต