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

نظرة عامة

يخزن المخطط بياناته المرسومة في دفتر بيانات المخطط. تمثل ChartSeries مجموعة واحدة من القيم المرتبطة، وكل ChartDataPoint في السلسلة يشير إلى خلية أو أكثر في دفتر العمل. توفر كائنات ChartCategory التسميات أو قيم التجميع المشتركة بين السلاسل. وبالتالي يتم ربط اسم السلسلة والفئات وقيم النقاط بـ ChartDataCell بدلاً من تخزينها كنص عرض فقط.

بالنسبة إلى مخطط الفئة النموذجي، يستخدم دفتر العمل الافتراضي الصف 0 لأسماء السلاسل، والعمود 0 لأسماء الفئات، وتُملأ الخلايا المتبقية بقيم السلاسل. فهارس ورقة العمل والصف والعمود التي يتم تمريرها إلى ChartDataWorkbook.getCell تبدأ من الصفر. هذا التخطيط مفيد عندما تنشئ مخططًا ببيانات افتراضية، لكن لا تفترض أن كل مخطط موجود يستخدمه. بالنسبة إلى عرض تقديمي تم تحميله، تحقق من الخلايا التي تشير إليها السلاسل والفئات ونقاط البيانات قبل تعديل قيم دفتر العمل.

إعدادات المخطط لها ثلاث نطاقات مختلفة:

  • إعدادات على مستوى السلسلة، مثل ChartSeries.getFormat، توفر المظهر الافتراضي لجميع النقاط في سلسلة واحدة.
  • إعدادات نقطة البيانات، مثل ChartDataPoint.getFormat، تتجاوز مظهر السلسلة لنقطة واحدة.
  • إعدادات المجموعة تُطبق على السلاسل المتوافقة التي تنتمي إلى نفس ChartSeriesGroup. ادخل إلى المجموعة عبر ChartSeries.getParentSeriesGroup عندما تحتاج إلى تعيين خيارات مثل التداخل أو عرض الفجوة.

عند عدم تحديد تعبئة صريحة للنقطة أو السلسلة، يحدد نمط المخطط والموضوع المظهر التلقائي. عندما تكون كل من تنسيقات السلسلة والنقطة موجودة، تأخذ تنسيق النقطة الأولوية لتلك النقطة.

سلسلة المخطط PowerPoint

ضبط تداخل سلسلة المخطط

ChartSeries.getOverlap يحدد مقدار تداخل الأعمدة أو الأشرطة في مخطط ثنائي الأبعاد، من -100 إلى 100 بالمئة. إنها إسقاط للقراءة فقط لإعداد المجموعة الأصلية. استخدم ChartSeriesGroup.setOverlap لتحديث كل السلاسل المتوافقة في تلك المجموعة. ينطبق هذا الخيار على أنواع المخططات التي تعرض أشرطة أو أعمدة مجمعة؛ ولا يؤثر على مجموعات السلاسل غير المرتبطة في مخطط تجميعي.

المثال التالي يضبط التداخل للمجموعة التي تحتوي على السلسلة الأولى:

$firstSlideIndex = 0;
$firstSeriesIndex = 0;
$overlapPercent = 30;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item($firstSlideIndex);

    // المخطط الجديد يحتوي على سلاسل نموذجية، فئات، وقيم.
    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 20, 20, 500, 200);

    $series = $chart->getChartData()->getSeries()->get_Item($firstSeriesIndex);
    $series->getParentSeriesGroup()->setOverlap($overlapPercent);

    $presentation->save("series_overlap.pptx", SaveFormat::Pptx);
} finally {
    if (!java_is_null($presentation)) {
        $presentation->dispose();
    }
}

النتيجة:

تداخل السلسلة

تغيير لون تعبئة السلسلة

استخدم ChartSeries.getFormat لتعيين التعبئة الافتراضية لسلسلة كاملة. إذا كانت النقطة لديها تعبئة صريحة مسبقًا، فإن إعداد ChartDataPoint.getFormat يتجاوز تعبئة السلسلة لتلك النقطة.

المثال التالي يطبق تعبئة صلبة زرقاء على السلسلة الأولى:

$firstSlideIndex = 0;
$firstSeriesIndex = 0;
$blueColor = java("java.awt.Color")->BLUE;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item($firstSlideIndex);

    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 20, 20, 500, 200);

    $series = $chart->getChartData()->getSeries()->get_Item($firstSeriesIndex);
    $series->getFormat()->getFill()->setFillType(FillType::Solid);
    $series->getFormat()->getFill()->getSolidFillColor()->setColor($blueColor);

    $presentation->save("series_color.pptx", SaveFormat::Pptx);
} finally {
    if (!java_is_null($presentation)) {
        $presentation->dispose();
    }
}

النتيجة:

لون السلسلة

تغيير اسم السلسلة

يُخزن اسم السلسلة في دفتر بيانات المخطط ويظهر عادةً في المفتاح. في دفتر العمل الافتراضي المُنشأ لمخطط عمودي مجمع، الخلية B1 هي الصف 0، العمود 1 وتحتوي على اسم السلسلة الأولى. المتغيرات المسماة في المثال التالي تجعل هذه البنية واضحة:

$firstSlideIndex = 0;
$worksheetIndex = 0;
$seriesNameRowIndex = 0;
$firstSeriesColumnIndex = 1;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item($firstSlideIndex);

    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 20, 20, 500, 200);

    $workbook = $chart->getChartData()->getChartDataWorkbook();
    $seriesNameCell = $workbook->getCell($worksheetIndex, $seriesNameRowIndex, $firstSeriesColumnIndex);
    $seriesNameCell->setValue("Revenue");

    $presentation->save("series_name.pptx", SaveFormat::Pptx);
} finally {
    if (!java_is_null($presentation)) {
        $presentation->dispose();
    }
}

يمكنك أيضًا تحديث الخلية التي يشير إليها ChartSeries.getName. يتيح هذا النهج تجنب الافتراض بوجود صف أو عمود معين في مخطط موجود:

$firstSlideIndex = 0;
$firstSeriesIndex = 0;
$firstNameCellIndex = 0;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item($firstSlideIndex);

    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 20, 20, 500, 200);

    $series = $chart->getChartData()->getSeries()->get_Item($firstSeriesIndex);
    $seriesNameCell = $series->getName()->getAsCells()->get_Item($firstNameCellIndex);
    $seriesNameCell->setValue("Revenue");

    $presentation->save("series_name.pptx", SaveFormat::Pptx);
} finally {
    if (!java_is_null($presentation)) {
        $presentation->dispose();
    }
}

النتيجة:

اسم السلسلة

إنشاء سلسلة باسم مأخوذ من خلايا متعددة

يكون اسم السلسلة المركب مفيدًا عندما يُخزن اسم المنتج وفترة التقرير في خلايا دفتر عمل منفصلة. على سبيل المثال، يمكنك دمج Product A في B1 و 2026 في C1 في اسم سلسلة واحد مع الحفاظ على ربط كل جزء بالخلايا المصدر.

استخدم ChartDataWorkbook::getCellCollection لاسترجاع نطاق الاسم، ثم مرر ذلك التجميع إلى ChartSeriesCollection::add. يتحكم معامل skipHiddenCells فيما إذا كانت الخلايا المخفية تُضمّن: true تستثنيها، بينما false تضمّنها. يستخدم هذا المثال false لتضمين كل الخلايا في نطاق الاسم.

المثال التالي ينشئ عرض تقديمي بسلسلة واحدة ونقطتي بيانات. تُزود الخلايا B1:C1 باسم السلسلة فقط؛ وتُزود A2:A3 تسميات الفئات، وتُزود B2:B3 القيم الرقمية.

use aspose\slides\ChartType;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 620, 180);

    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    $chart->setLegend(true);

    $workbook = $chart->getChartData()->getChartDataWorkbook();
    $workbook->clear(0);

    // هذان الخليتان تزودان اسم السلسلة.
    $workbook->getCell(0, 0, 1, "Product A");
    $workbook->getCell(0, 0, 2, "2026");
    $nameCells = $workbook->getCellCollection('Sheet1!$B$1:$C$1', false);
    $series = $chart->getChartData()->getSeries()->add($nameCells, ChartType::ClusteredColumn);

    // خلايا منفصلة تزود الفئات ونقاط البيانات الرقمية.
    $northCategory = $workbook->getCell(0, 1, 0, "North");
    $southCategory = $workbook->getCell(0, 2, 0, "South");
    $chart->getChartData()->getCategories()->add($northCategory);
    $chart->getChartData()->getCategories()->add($southCategory);
    $northValue = $workbook->getCell(0, 1, 1, 120);
    $southValue = $workbook->getCell(0, 2, 1, 150);
    $series->getDataPoints()->addDataPointForBarSeries($northValue);
    $series->getDataPoints()->addDataPointForBarSeries($southValue);

    $presentation->save("composite_series_name.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

اسم السلسلة الناتج هو Product A 2026، مع مسافة بين القيمتين من الخليتين. يعرض المفتاح ذلك كقيمة واحدة لكل العمودين. الصورة أدناه توضح النتيجة:

مخطط عمودي بقيم الشمال والجنوب واسم السلسلة المركب Product A 2026 في المفتاح

الحصول على لون تعبئة السلسلة التلقائي

ChartSeries.getAutomaticSeriesColor يُعيد اللون المُحسب بناءً على فهرس السلسلة ونمط المخطط. هذا هو اللون المستخدم عندما لا تُحدد تعبئة السلسلة صراحة. استدعاء الطريقة يقرأ اللون المُحسب؛ لا يُعيّن تعبئة جديدة.

المثال التالي يطبع اللون التلقائي لكل سلسلة افتراضية:

$firstSlideIndex = 0;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item($firstSlideIndex);

    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 20, 20, 500, 200);

    $seriesCount = java_values($chart->getChartData()->getSeries()->size());
    for ($seriesIndex = 0; $seriesIndex < $seriesCount; $seriesIndex++) {
        $series = $chart->getChartData()->getSeries()->get_Item($seriesIndex);
        $automaticColor = $series->getAutomaticSeriesColor();
        $red = java_values($automaticColor->getRed());
        $green = java_values($automaticColor->getGreen());
        $blue = java_values($automaticColor->getBlue());
        echo "Series " . $seriesIndex . ": java.awt.Color[r=" . $red . ",g=" . $green . ",b=" . $blue . "]" . PHP_EOL;
    }
} finally {
    if (!java_is_null($presentation)) {
        $presentation->dispose();
    }
}

مخرجات المثال للنمط الافتراضي للمخطط:

Series 0: java.awt.Color[r=79,g=129,b=189]
Series 1: java.awt.Color[r=192,g=80,b=77]
Series 2: java.awt.Color[r=155,g=187,b=89]

الألوان الدقيقة تعتمد على نمط المخطط والموضوع.

ضبط لون تعبئة عكسي لسلسلة المخطط

بالنسبة لسلاسل الأشرطة والعمود والفقاعات، يمكن لـ ChartSeries.setInvertIfNegative عرض القيم السالبة بتعبئة مختلفة. اضبط تعبئة السلسلة العادية إلى صلبة، فعّل الانعكاس، وعين لون القيمة السالبة عبر ChartSeries.getInvertedSolidFillColor. تظل الأرقام السالبة دون تغيير في دفتر العمل؛ يتغير لون عرضها فقط.

المثال التالي يستبدل بيانات المخطط الافتراضية بسلسلة واحدة. يحتوي الصف 0 من ورقة العمل على اسم السلسلة، والعمود 0 على أسماء الفئات، والعمود 1 على القيم:

$firstSlideIndex = 0;
$worksheetIndex = 0;
$headerRowIndex = 0;
$categoryColumnIndex = 0;
$firstSeriesColumnIndex = 1;
$firstDataRowIndex = 1;

$categoryNames = ["Category 1", "Category 2", "Category 3"];
$seriesValues = [-20, 50, -30];
$redColor = java("java.awt.Color")->RED;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item($firstSlideIndex);

    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 20, 20, 500, 200);
    $chartData = $chart->getChartData();
    $workbook = $chartData->getChartDataWorkbook();

    $chartData->getSeries()->clear();
    $chartData->getCategories()->clear();

    $seriesNameCell = $workbook->getCell($worksheetIndex, $headerRowIndex, $firstSeriesColumnIndex, "Series 1");
    $chartType = $chart->getType();
    $series = $chartData->getSeries()->add($seriesNameCell, $chartType);

    $categoryCount = count($categoryNames);
    for ($categoryIndex = 0; $categoryIndex < $categoryCount; $categoryIndex++) {
        $dataRowIndex = $firstDataRowIndex + $categoryIndex;
        $categoryName = $categoryNames[$categoryIndex];
        $seriesValue = $seriesValues[$categoryIndex];

        $categoryCell = $workbook->getCell($worksheetIndex, $dataRowIndex, $categoryColumnIndex, $categoryName);
        $chartData->getCategories()->add($categoryCell);

        $valueCell = $workbook->getCell($worksheetIndex, $dataRowIndex, $firstSeriesColumnIndex, $seriesValue);
        $series->getDataPoints()->addDataPointForBarSeries($valueCell);
    }

    $automaticSeriesColor = $series->getAutomaticSeriesColor();
    $series->getFormat()->getFill()->setFillType(FillType::Solid);
    $series->getFormat()->getFill()->getSolidFillColor()->setColor($automaticSeriesColor);
    $series->setInvertIfNegative(true);
    $series->getInvertedSolidFillColor()->setColor($redColor);

    $presentation->save("inverted_solid_fill_color.pptx", SaveFormat::Pptx);
} finally {
    if (!java_is_null($presentation)) {
        $presentation->dispose();
    }
}

النتيجة:

لون تعبئة صلب معكوس

يمكنك تمكين الانعكاس لنقطة واحدة عبر ChartDataPoint.setInvertIfNegative. في المثال التالي، يُعطل الانحراف للسلسلة ويُفعّله فقط للنقطة المحددة. تُعطى النقطة أيضًا قيمة سالبة لتظهر التأثير:

$firstSlideIndex = 0;
$firstSeriesIndex = 0;
$targetDataPointIndex = 2;
$negativeValue = -30;
$redColor = java("java.awt.Color")->RED;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item($firstSlideIndex);

    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 20, 20, 500, 200);

    $series = $chart->getChartData()->getSeries()->get_Item($firstSeriesIndex);
    $automaticSeriesColor = $series->getAutomaticSeriesColor();
    $series->getFormat()->getFill()->setFillType(FillType::Solid);
    $series->getFormat()->getFill()->getSolidFillColor()->setColor($automaticSeriesColor);
    $series->getInvertedSolidFillColor()->setColor($redColor);
    $series->setInvertIfNegative(false);

    $dataPoint = $series->getDataPoints()->get_Item($targetDataPointIndex);
    $dataPoint->getValue()->getAsCell()->setValue($negativeValue);
    $dataPoint->setInvertIfNegative(true);

    $presentation->save("data_point_invert_color_if_negative.pptx", SaveFormat::Pptx);
} finally {
    if (!java_is_null($presentation)) {
        $presentation->dispose();
    }
}

مسح قيمة نقطة بيانات محددة

لجعل نقطة واحدة فارغة دون إزالة باقي النقاط، اضبط خلية دفتر العمل الداعمة لها إلى null. بالنسبة إلى مخطط عمودي، تكون القيمة المرسومة متاحة عبر ChartDataPoint.getValue. تبقى نقطة البيانات في نفس موضع الفئة، لكن المخطط يتعامل مع قيمتها كخالية وفق إعدادات القيم الفارغة للمخطط.

المثال التالي يمسح فقط النقطة الثانية في السلسلة الأولى:

$firstSlideIndex = 0;
$firstSeriesIndex = 0;
$targetDataPointIndex = 1;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item($firstSlideIndex);

    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 20, 20, 500, 200);

    $series = $chart->getChartData()->getSeries()->get_Item($firstSeriesIndex);
    $dataPoint = $series->getDataPoints()->get_Item($targetDataPointIndex);
    $dataPoint->getValue()->getAsCell()->setValue(null);

    $presentation->save("clear_data_point_value.pptx", SaveFormat::Pptx);
} finally {
    if (!java_is_null($presentation)) {
        $presentation->dispose();
    }
}

تستخدم مخططات التبعثر خلايا X وY منفصلة، وتستخدم مخططات الفقاعات أيضًا خلية حجم. امسح فقط الخلية التي تمثل القيمة التي ترغب في إزالتها. لا تستدعِ ChartDataPointCollection.clear عندما تريد الحفاظ على باقي النقاط، لأن هذه الطريقة تُزيل كل نقاط البيانات من المجموعة.

التحكم في عرض الخلايا الفارغة

الخلايا المخفية التي تحتوي على قيم هي حالة منفصلة عن الخلايا الفارغة. لتضمين أو استبعاد البيانات من الصفوف والأعمدة المخفية في ورقة العمل، راجع Include Data from Hidden Rows and Columns.

الخلية الفارغة في دفتر العمل تمثل بيانات مفقودة؛ والخلية التي تحتوي على 0 تمثل قيمة رقمية معروفة. استدعِ ChartDataCell::setValue مع null لجعل الخلية فارغة. الصفر الرقمي يظل صفرًا بغض النظر عن إعداد الخلايا الفارغة.

استخدم Chart::setDisplayBlanksAs لاختيار طريقة عرض المخطط للخلايا الفارغة. ينطبق هذا الإعداد على المخطط بالكامل. يغيّر طريقة رسم الفجوات دون ملء الخلية الفارغة بالصفر أو قيمة مق interpolation.

المثال المستقل التالي ينشئ مخطط خطي بسلسلة واحدة، يمسح القيمة لليوم 3، ويحفظ المخطط بنفسه بكل وضع. لا تحتاج إلى ملف إدخال. يستخدم ChartDataWorkbook ورقة العمل 0، العمود 0 لتسميات الفئات، والعمود 1 للقيم؛ الصف 0 يحمل اسم السلسلة. البيانات النهائية هي 10, 20, empty, 30, 40.

use aspose\slides\ChartType;
use aspose\slides\DisplayBlanksAsType;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $chart = $slide->getShapes()->addChart(ChartType::LineWithMarkers, 40, 40, 640, 400);
    $chartData = $chart->getChartData();
    $workbook = $chartData->getChartDataWorkbook();

    $chartData->getSeries()->clear();
    $chartData->getCategories()->clear();

    $seriesNameCell = $workbook->getCell(0, 0, 1, "Measurements");
    $series = $chartData->getSeries()->add($seriesNameCell, $chart->getType());
    $values = [10, 20, 25, 30, 40];

    for ($i = 0; $i < count($values); $i++) {
        $categoryCell = $workbook->getCell(0, $i + 1, 0, "Day " . ($i + 1));
        $chartData->getCategories()->add($categoryCell);
        $valueCell = $workbook->getCell(0, $i + 1, 1, $values[$i]);
        $series->getDataPoints()->addDataPointForLineSeries($valueCell);
    }

    // اترك اليوم الثالث فارغًا فعلًا مع الاحتفاظ بفئته ونقطة بياناته.
    $workbook->getCell(0, 3, 1)->setValue(null);

    $modes = [DisplayBlanksAsType::Gap, DisplayBlanksAsType::Zero, DisplayBlanksAsType::Span];
    $modeNames = ["Gap", "Zero", "Span"];
    for ($i = 0; $i < count($modes); $i++) {
        $chart->setDisplayBlanksAs($modes[$i]);
        $presentation->save("empty_cells_" . $modeNames[$i] . ".pptx", SaveFormat::Pptx);
    }
} finally {
    $presentation->dispose();
}

كل ملف ناتج يُخزّن الوضع المحدد قبل الحفظ: empty_cells_Gap.pptx، empty_cells_Zero.pptx، وempty_cells_Span.pptx. لحفظ نسخة واحدة فقط، حدد الوضع المطلوب واحفظ العرض التقديمي مرة واحدة بدلاً من التكرار على الأوضاع.

المقارنة أدناه تُظهر نفس البيانات في جميع الملفات الثلاثة. اليوم 3 فارغ في دفتر العمل في كل الحالات:

مخططات الخط مع بيانات متطابقة: الفجوة تقطع الخط في اليوم 3، والصفر يُسقط الخط إلى الصفر، والامتداد يربط اليوم 2 باليوم 4.

التأثير المرئي يعتمد على نوع المخطط. يُسهّل مخطط الخط مقارنة جميع الأوضاع الثلاثة. لا تحتوي المخططات الشريطية والعمودية على خط لتوصيل الفجوة بين الفئات المفقودة، لذا لا يمكن لـ Span إنتاج الجزء المتصل الموضح أعلاه؛ ويمكن أن يبدو العمود المفقود والعمود صفر الارتفاع متشابهين. بالمثل، لا يحتوي مخطط التبعثر بالعلامات فقط على خط توصيل. لا تتوقع ثلاث نتائج مميزة لكل نوع مخطط؛ تحقق من النتيجة للنوع الذي تستخدمه.

ضبط عرض الفجوة بين السلاسل

عرض الفجوة هو المسافة بين مجموعات الأشرطة أو الأعمدة المتقاربة، معبرًا عنها كنسبة مئوية من عرض الشريط أو العمود. مثل التداخل، هو خاص بالمجموعة الأصلية للسلسلة وليس بسلسلة واحدة. استدعِ ChartSeriesGroup.setGapWidth مرة واحدة للمجموعة. القيمة الأكبر تُنشئ مساحة أكبر بين المجموعات؛ والقيمة الأصغر تجعلها أكثر تكتًّا.

المثال التالي يغيّر عرض الفجوة ويحفظ العرض التقديمي النهائي فقط:

$firstSlideIndex = 0;
$firstSeriesIndex = 0;
$gapWidthPercent = 30;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item($firstSlideIndex);

    $chart = $slide->getShapes()->addChart(ChartType::StackedColumn, 20, 20, 500, 200);

    $series = $chart->getChartData()->getSeries()->get_Item($firstSeriesIndex);
    $series->getParentSeriesGroup()->setGapWidth($gapWidthPercent);

    $presentation->save("gap_width_30.pptx", SaveFormat::Pptx);
} finally {
    if (!java_is_null($presentation)) {
        $presentation->dispose();
    }
}

النتيجة:

عرض الفجوة

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

ما أنواع المخططات التي تدعم سلاسل البيانات؟

جميع أنواع المخططات الممثلة في تعداد ChartType تستخدم بيانات المخطط، لكن سلاسلها لا تشترك جميعًا في نفس بنية القيم أو الإعدادات. على سبيل المثال، تستخدم مخططات الفئة الفئات والقيم، وتستخدم مخططات التبعثر قيم X وY، وتضيف مخططات الفقاعات أحجام الفقاعات. استخدم طريقة إنشاء نقطة البيانات التي تتطابق مع نوع السلسلة. تنطبق خيارات مثل التداخل وعرض الفجوة فقط على مجموعات الأشرطة أو الأعمدة المتوافقة.

ما هي مجموعة سلاسل المخطط؟

ChartSeriesGroup يحتوي على سلاسل متوافقة تشترك في إعدادات التخطيط على مستوى المجموعة. يمكن لمخطط تجميعي أن يحتوي على أكثر من مجموعة، لذا قد لا يغيّر تعديل المجموعة التي تُوصل من خلال سلسلة واحدة جميع السلاسل في المخطط.

هل يحتوي المخطط الذي تم إنشاؤه حديثًا على بيانات افتراضية؟

نعم. بشكل افتراضي، تُنشئ ShapeCollection.addChart سلاسل، وفئات، وقيم تجريبية. يمكنك تعديل تلك الخلايا أو مسح مجموعات السلاسل والفئات قبل إضافة مجموعة بيانات مخصصة بالكامل. يمكن أيضًا أن يُنشئ تحميل زائد مخططًا بدون بيانات افتراضية.

كيف يتم ربط كائنات المخطط بخلايا دفتر العمل؟

تشير أسماء السلاسل، وتسميات الفئات، وقيم نقاط البيانات إلى خلايا في ChartDataWorkbook. تعديل خلية مشار إليها يحدث تحديثًا للعنصر المقابل في المخطط. عند بناء بيانات مخصصة، حافظ على محاذاة صفوف الفئات وصفوف قيم السلاسل بحيث تُرسم كل نقطة تحت الفئة المقصودة.

كيف أمسح نقطة واحدة بدلًا من سلة كاملة؟

اضبط خلية القيمة ذات الصلة إلى null لتبقى نقطة البيانات في موضع الفئة كنقطة فارغة. استخدم ChartDataPointCollection.clear فقط عندما تريد حذف كل النقاط من تلك السلسلة. إذا أزلت الفئات أيضًا، حدّث كل السلاسل بحيث تبقى قيمها محاذية مع مجموعة الفئات.

كيف تُعرض النقاط الفارغة؟

النتيجة تعتمد على نوع المخطط والقيمة المُكوَّنة عبر Chart.setDisplayBlanksAs. يمكن للمخططات المدعومة عرض الفجوات كفجوات، أو كقيم صفرية، أو بربط النقاط المتجاورة. اختر الإعداد الذي يتوافق مع معنى البيانات المفقودة في عرضك. راجع Control the Display of Empty Cells لمثال كامل ومقارنة بصريّة.

كيف يتم تنسيق القيم السالبة؟

بالنسبة للسلاسل الشريطية والعمودية والفقاعية المدعومة، استدعِ ChartSeries.setInvertIfNegative واضبط اللون العائد من ChartSeries.getInvertedSolidFillColor. يمكنك تجاوز السلوك لنقطة فردية عبر ChartDataPoint.setInvertIfNegative. هذه الطرق تؤثر على التنسيق فقط، وليس على القيم الرقمية المخزنة.

أي تنسيق ينتصر عندما يتم تنسيق كل من السلسلة والنقطة؟

يتفوق تنسيق نقطة البيانات الصريح لتلك النقطة. تستمر النقاط الأخرى في استخدام تنسيق السلسلة الصريح أو، عندما لا يُعرف تنسيق السلسلة، النمط والموضوع التلقائي للمخطط. تتحكم إعدادات المجموعة مثل التداخل وعرض الفجوة في التخطيط ولا تُعدّ تجاوزات تنسيق على مستوى النقطة.

هل هناك حد لعدد السلاسل التي يمكن للمخطط احتواؤها؟

Aspose.Slides لا يفرض حدًا ثابتًا منفصلًا لعدد السلاسل. عمليًا، تحدد قيود ملف العرض التقديمي، والذاكرة المتاحة، ووقت التقديم، وقابلية قراءة المخطط حدًا عمليًا.

ماذا ينبغي تعديل عندما تكون الأعمدة قريبة جدًا أو متباعدة جدًا؟

استدعِ ChartSeriesGroup.setGapWidth على مجموعة السلاسل الأصلية المناسبة. زد القيمة لتوسيع الفجوة بين المجموعات، أو قللها لتقريبها.