تنسيق مخططات العرض التقديمي في PHP

تنسيق كيانات المخطط

Aspose.Slides for PHP عبر Java تمكّن المطورين من إضافة مخططات مخصصة إلى الشرائح من الصفر. توضح هذه المقالة كيفية تنسيق كيانات المخطط المختلفة بما في ذلك فئة المخطط ومحور القيم.

توفر Aspose.Slides for PHP عبر Java واجهة برمجة تطبيقات بسيطة لإدارة كيانات المخطط المختلفة وتنسيقها باستخدام قيم مخصصة:

  1. إنشاء مثيل من فئة Presentation class.
  2. الحصول على مرجع الشريحة حسب فهرسها.
  3. إضافة مخطط ببيانات افتراضية مع أي نوع مرغوب (في هذا المثال سنستخدم ChartType::LineWithMarkers).
  4. الوصول إلى محور قيم المخطط وضبط الخصائص التالية:
    1. ضبط Line format لخطوط الشبكة الرئيسية لمحور القيم
    2. ضبط Line format لخطوط الشبكة الفرعية لمحور القيم
    3. ضبط Number Format لمحور القيم
    4. ضبط Min, Max, Major and Minor units لمحور القيم
    5. ضبط Text Properties لبيانات محور القيم
    6. ضبط Title لمحور القيم
    7. ضبط Line Format لمحور القيم
  5. الوصول إلى محور الفئة للمخطط وضبط الخصائص التالية:
    1. ضبط Line format لخطوط الشبكة الرئيسية لمحور الفئة
    2. ضبط Line format لخطوط الشبكة الفرعية لمحور الفئة
    3. ضبط Text Properties لبيانات محور الفئة
    4. ضبط Title لمحور الفئة
    5. ضبط Label Positioning لمحور الفئة
    6. ضبط Rotation Angle لتسميات محور الفئة
  6. الوصول إلى وسيلة إيضاح المخطط وضبط Text Properties لها
  7. تعيين عرض وسيلة إيضاح المخطط دون تداخل المخطط
  8. الوصول إلى Secondary Value Axis للمخطط وضبط الخصائص التالية:
    1. تمكين Value Axis الثانوي
    2. ضبط Line Format لSecondary Value Axis
    3. ضبط Number Format لSecondary Value Axis
    4. ضبط Min, Max, Major and Minor units لSecondary Value Axis
  9. الآن قم برسم السلسلة الأولى للمخطط على Secondary Value Axis
  10. تعيين لون تعبئة الجدار الخلفي للمخطط
  11. تعيين لون تعبئة منطقة رسم المخطط
  12. كتابة العرض المعدل إلى ملف PPTX
  # إنشاء مثيل من فئة Presentation class
  $pres = new Presentation();
  try {
    # الوصول إلى الشريحة الأولى
    $slide = $pres->getSlides()->get_Item(0);
    # إضافة المخطط التجريبي
    $chart = $slide->getShapes()->addChart(ChartType::LineWithMarkers, 50, 50, 500, 400);
    # ضبط عنوان المخطط
    $chart->hasTitle();
    $chart->getChartTitle()->addTextFrameForOverriding("");
    $chartTitle = $chart->getChartTitle()->getTextFrameForOverriding()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
    $chartTitle->setText("Sample Chart");
    $chartTitle->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
    $chartTitle->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GRAY);
    $chartTitle->getPortionFormat()->setFontHeight(20);
    $chartTitle->getPortionFormat()->setFontBold(NullableBool::True);
    $chartTitle->getPortionFormat()->setFontItalic(NullableBool::True);
    # ضبط تنسيق خطوط الشبكة الرئيسية لمحور القيم
    $chart->getAxes()->getVerticalAxis()->getMajorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $chart->getAxes()->getVerticalAxis()->getMajorGridLinesFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $chart->getAxes()->getVerticalAxis()->getMajorGridLinesFormat()->getLine()->setWidth(5);
    $chart->getAxes()->getVerticalAxis()->getMajorGridLinesFormat()->getLine()->setDashStyle(LineDashStyle->DashDot);
    # ضبط تنسيق خطوط الشبكة الثانوية لمحور القيم
    $chart->getAxes()->getVerticalAxis()->getMinorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $chart->getAxes()->getVerticalAxis()->getMinorGridLinesFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    $chart->getAxes()->getVerticalAxis()->getMinorGridLinesFormat()->getLine()->setWidth(3);
    # ضبط تنسيق الأرقام لمحور القيم
    $chart->getAxes()->getVerticalAxis()->isNumberFormatLinkedToSource();
    $chart->getAxes()->getVerticalAxis()->setDisplayUnit(DisplayUnitType::Thousands);
    $chart->getAxes()->getVerticalAxis()->setNumberFormat("0.0%");
    # ضبط القيم القصوى والحد الدنيا للمخطط
    $chart->getAxes()->getVerticalAxis()->isAutomaticMajorUnit();
    $chart->getAxes()->getVerticalAxis()->isAutomaticMaxValue();
    $chart->getAxes()->getVerticalAxis()->isAutomaticMinorUnit();
    $chart->getAxes()->getVerticalAxis()->isAutomaticMinValue();
    $chart->getAxes()->getVerticalAxis()->setMaxValue(15.0);
    $chart->getAxes()->getVerticalAxis()->setMinValue(-2.0);
    $chart->getAxes()->getVerticalAxis()->setMinorUnit(0.5);
    $chart->getAxes()->getVerticalAxis()->setMajorUnit(2.0);
    # ضبط خصائص نص محور القيم
    $txtVal = $chart->getAxes()->getVerticalAxis()->getTextFormat()->getPortionFormat();
    $txtVal->setFontBold(NullableBool::True);
    $txtVal->setFontHeight(16);
    $txtVal->setFontItalic(NullableBool::True);
    $txtVal->getFillFormat()->setFillType(FillType::Solid);
    $txtVal->getFillFormat()->getSolidFillColor()->setColor(new java("java.awt.Color", PresetColor->DarkGreen));
    $txtVal->setLatinFont(new FontData("Times New Roman"));
    # ضبط عنوان محور القيم
    $chart->getAxes()->getVerticalAxis()->hasTitle();
    $chart->getAxes()->getVerticalAxis()->getTitle()->addTextFrameForOverriding("");
    $valtitle = $chart->getAxes()->getVerticalAxis()->getTitle()->getTextFrameForOverriding()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
    $valtitle->setText("Primary Axis");
    $valtitle->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
    $valtitle->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GRAY);
    $valtitle->getPortionFormat()->setFontHeight(20);
    $valtitle->getPortionFormat()->setFontBold(NullableBool::True);
    $valtitle->getPortionFormat()->setFontItalic(NullableBool::True);
    # ضبط تنسيق خطوط الشبكة الرئيسية لمحور الفئة
    $chart->getAxes()->getHorizontalAxis()->getMajorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $chart->getAxes()->getHorizontalAxis()->getMajorGridLinesFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GREEN);
    $chart->getAxes()->getHorizontalAxis()->getMajorGridLinesFormat()->getLine()->setWidth(5);
    # ضبط تنسيق خطوط الشبكة الثانوية لمحور الفئة
    $chart->getAxes()->getHorizontalAxis()->getMinorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $chart->getAxes()->getHorizontalAxis()->getMinorGridLinesFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->YELLOW);
    $chart->getAxes()->getHorizontalAxis()->getMinorGridLinesFormat()->getLine()->setWidth(3);
    # ضبط خصائص نص محور الفئة
    $txtCat = $chart->getAxes()->getHorizontalAxis()->getTextFormat()->getPortionFormat();
    $txtCat->setFontBold(NullableBool::True);
    $txtCat->setFontHeight(16);
    $txtCat->setFontItalic(NullableBool::True);
    $txtCat->getFillFormat()->setFillType(FillType::Solid);
    $txtCat->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $txtCat->setLatinFont(new FontData("Arial"));
    # ضبط عنوان الفئة
    $chart->getAxes()->getHorizontalAxis()->hasTitle();
    $chart->getAxes()->getHorizontalAxis()->getTitle()->addTextFrameForOverriding("");
    $catTitle = $chart->getAxes()->getHorizontalAxis()->getTitle()->getTextFrameForOverriding()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
    $catTitle->setText("Sample Category");
    $catTitle->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
    $catTitle->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GRAY);
    $catTitle->getPortionFormat()->setFontHeight(20);
    $catTitle->getPortionFormat()->setFontBold(NullableBool::True);
    $catTitle->getPortionFormat()->setFontItalic(NullableBool::True);
    # ضبط موضع تسميات محور الفئة
    $chart->getAxes()->getHorizontalAxis()->setTickLabelPosition(TickLabelPositionType::Low);
    # ضبط زاوية دوران تسميات محور الفئة
    $chart->getAxes()->getHorizontalAxis()->setTickLabelRotationAngle(45);
    # ضبط خصائص نص وسيلة الإيضاح
    $txtleg = $chart->getLegend()->getTextFormat()->getPortionFormat();
    $txtleg->setFontBold(NullableBool::True);
    $txtleg->setFontHeight(16);
    $txtleg->setFontItalic(NullableBool::True);
    $txtleg->getFillFormat()->setFillType(FillType::Solid);
    $txtleg->getFillFormat()->getSolidFillColor()->setColor(new java("java.awt.Color", PresetColor->DarkRed));
    # إظهار وسيلة إيضاح المخطط دون تداخلها مع المخطط
    $chart->getLegend()->setOverlay(true);
    # chart.ChartData.Series[0].PlotOnSecondAxis=true;
    $chart->getChartData()->getSeries()->get_Item(0)->setPlotOnSecondAxis(true);
    # ضبط المحور القيمي الثانوي
    $chart->getAxes()->getSecondaryVerticalAxis()->isVisible();
    $chart->getAxes()->getSecondaryVerticalAxis()->getFormat()->getLine()->setStyle(LineStyle->ThickBetweenThin);
    $chart->getAxes()->getSecondaryVerticalAxis()->getFormat()->getLine()->setWidth(20);
    # ضبط تنسيق أرقام المحور القيمي الثانوي
    $chart->getAxes()->getSecondaryVerticalAxis()->isNumberFormatLinkedToSource();
    $chart->getAxes()->getSecondaryVerticalAxis()->setDisplayUnit(DisplayUnitType::Hundreds);
    $chart->getAxes()->getSecondaryVerticalAxis()->setNumberFormat("0.0%");
    # ضبط القيم القصوى والحد الدنيا للمخطط
    $chart->getAxes()->getSecondaryVerticalAxis()->isAutomaticMajorUnit();
    $chart->getAxes()->getSecondaryVerticalAxis()->isAutomaticMaxValue();
    $chart->getAxes()->getSecondaryVerticalAxis()->isAutomaticMinorUnit();
    $chart->getAxes()->getSecondaryVerticalAxis()->isAutomaticMinValue();
    $chart->getAxes()->getSecondaryVerticalAxis()->setMaxValue(20.0);
    $chart->getAxes()->getSecondaryVerticalAxis()->setMinValue(-5.0);
    $chart->getAxes()->getSecondaryVerticalAxis()->setMinorUnit(0.5);
    $chart->getAxes()->getSecondaryVerticalAxis()->setMajorUnit(2.0);
    # ضبط لون الجدار الخلفي للمخطط
    $chart->getBackWall()->setThickness(1);
    $chart->getBackWall()->getFormat()->getFill()->setFillType(FillType::Solid);
    $chart->getBackWall()->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->ORANGE);
    $chart->getFloor()->getFormat()->getFill()->setFillType(FillType::Solid);
    $chart->getFloor()->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    # ضبط لون منطقة الرسم
    $chart->getPlotArea()->getFormat()->getFill()->setFillType(FillType::Solid);
    $chart->getPlotArea()->getFormat()->getFill()->getSolidFillColor()->setColor(new java("java.awt.Color", PresetColor->LightCyan));
    # حفظ العرض التقديمي
    $pres->save("FormattedChart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تعيين خصائص الخط للمخطط

توفر Aspose.Slides for PHP عبر Java دعمًا لتعيين الخصائص المتعلقة بالخط للمخطط. يرجى اتباع الخطوات أدناه لتعيين خصائص الخط للمخطط.

  • إنشاء كائن من فئة Presentation .
  • إضافة مخطط إلى الشريحة.
  • تعيين ارتفاع الخط.
  • حفظ العرض المعدل.

مثال عينة مرفق أدناه.

  # إنشاء مثيل من فئة Presentation
  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 100, 100, 500, 400);
    $chart->getTextFormat()->getPortionFormat()->setFontHeight(20);
    $chart->getChartData()->getSeries()->get_Item(0)->getLabels()->getDefaultDataLabelFormat()->setShowValue(true);
    $pres->save("FontPropertiesForChart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تعيين تنسيق الأرقام

توفر Aspose.Slides for PHP عبر Java واجهة برمجة تطبيقات بسيطة لإدارة تنسيق بيانات المخطط:

  1. إنشاء مثيل من الفئة Presentation .
  2. الحصول على مرجع الشريحة حسب فهرسها.
  3. إضافة مخطط ببيانات افتراضية مع أي نوع مرغوب (في هذا المثال يستخدم ChartType::ClusteredColumn).
  4. تعيين تنسيق الأرقام المسبق من القيم المسبقة المتاحة.
  5. المرور عبر خلية بيانات المخطط في كل سلسلة مخطط وتعيين تنسيق رقم بيانات المخطط.
  6. حفظ العرض.
  7. تعيين تنسيق الأرقام المخصص.
  8. المرور عبر خلية بيانات المخطط داخل كل سلسلة مخطط وتعيين تنسيق رقم بيانات مختلف.
  9. حفظ العرض.
  # إنشاء مثيل من فئة Presentation class
  $pres = new Presentation();
  try {
    # الوصول إلى أول شريحة عرض تقديمي
    $slide = $pres->getSlides()->get_Item(0);
    # إضافة مخطط عمودي عنقودي افتراضي
    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 500, 400);
    # الوصول إلى مجموعة سلاسل المخطط
    $series = $chart->getChartData()->getSeries();
    # المرور عبر كل سلسلة مخطط
    foreach($series as $ser) {
      # المرور عبر كل خلية بيانات في السلسلة
      foreach($ser->getDataPoints() as $cell) {
        # ضبط تنسيق الرقم
        $cell->getValue()->getAsCell()->setPresetNumberFormat(10);// 0.00%

      }
    }
    # حفظ العرض التقديمي
    $pres->save("PresetNumberFormat.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

القيم المسبقة الممكنة لتنسيق الأرقام مع فهرسها المسبق والتي يمكن استخدامها موضحة أدناه:

0 عام
1 0
2 0.00
3 #,##0
4 #,##0.00
5 $#,##0;$-#,##0
6 $#,##0;Red$-#,##0
7 $#,##0.00;$-#,##0.00
8 $#,##0.00;Red$-#,##0.00
9 0%
10 0.00%
11 0.00E+00
12 # ?/?
13 # /
14 m/d/yy
15 d-mmm-yy
16 d-mmm
17 mmm-yy
18 h:mm AM/PM
19 h:mm:ss AM/PM
20 h:mm
21 h:mm:ss
22 m/d/yy h:mm
37 #,##0;-#,##0
38 #,##0;Red-#,##0
39 #,##0.00;-#,##0.00
40 #,##0.00;Red-#,##0.00
41 _ * #,##0_ ;_ * “_ ;_ @_
42 _ $* #,##0_ ;_ $* “_ ;_ @_
43 _ * #,##0.00_ ;_ * “??_ ;_ @_
44 _ $* #,##0.00_ ;_ $* “??_ ;_ @_
45 mm:ss
46 h:mm:ss
47 mm:ss.0
48 ##0.0E+00
49 @

تعيين حدود مستديرة لمنطقة المخطط

توفر Aspose.Slides for PHP عبر Java دعمًا لتعيين منطقة المخطط. تم إضافة الطريقتين hasRoundedCorners و setRoundedCorners إلى فئة Chart.

  1. إنشاء كائن من فئة Presentation .
  2. إضافة مخطط إلى الشريحة.
  3. تعيين نوع التعبئة ولون التعبئة للمخطط
  4. تعيين خاصية الزوايا المستديرة إلى True.
  5. حفظ العرض المعدل.

مثال عينة مرفق أدناه.

  # إنشاء مثيل من فئة Presentation class
  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 20, 100, 600, 400);
    $chart->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
    $chart->getLineFormat()->setStyle(LineStyle->Single);
    $chart->setRoundedCorners(true);
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

الأسئلة المتكررة

هل يمكنني تعيين تعبئة شبه شفافة للأعمدة/المناطق مع الحفاظ على الحدود غير شفافة؟

نعم. يتم ضبط شفافية التعبئة والحدود بشكل منفصل. هذا مفيد لتحسين وضوح الشبكة والبيانات في التصورات الكثيفة.

كيف يمكنني التعامل مع تسميات البيانات عندما تتداخل؟

قلل حجم الخط، عطل المكونات غير الضرورية للتسمية (مثل الفئات)، اضبط إزاحة/موضع التسمية، اعرض التسميات فقط للنقاط المختارة إذا لزم الأمر، أو غيّر الصيغة إلى “القيمة + المفتاح”.

هل يمكنني تطبيق تعبئة تدرجية أو نقشية للسلاسل؟

نعم. عادةً ما تكون كل من التعبئات الصلبة والتدرجات/النقوش متاحة. في الممارسة، استخدم التدرجات باعتدال وتجنب التركيبات التي تقلل التباين مع الشبكة والنص.