Διαχείριση Σειρών Δεδομένων Διαγράμματος σε Παρουσιάσεις με PHP

Επισκόπηση

Αυτό το άρθρο περιγράφει τον ρόλο του ChartSeries στο Aspose.Slides, εστιάζοντας στο πώς τα δεδομένα δομούνται και απεικονίζονται μέσα σε παρουσιάσεις. Αυτά τα αντικείμενα παρέχουν τα θεμέλια στοιχεία που ορίζουν μεμονωμένα σύνολα σημείων δεδομένων, κατηγορίες και παραμέτρους εμφάνισης σε ένα γράφημα. Εργαζόμενοι με το ChartSeries, οι προγραμματιστές μπορούν να ενσωματώσουν άψογα τις υποκείμενες πηγές δεδομένων και να διατηρήσουν πλήρη έλεγχο πάνω στον τρόπο που εμφανίζονται οι πληροφορίες, δημιουργώντας δυναμικές, δεδομενοκεντρικές παρουσιάσεις που μεταδίδουν σαφώς γνώσεις και αναλύσεις.

Μια σειρά είναι μια γραμμή ή στήλη αριθμών που σχεδιάζονται σε ένα διάγραμμα.

chart-series-powerpoint

Ορισμός επικάλυψης σειράς διαγράμματος

Με τη μέθοδο getParentSeriesGroup μπορείτε να ορίσετε πόσο πρέπει να επικαλύπτονται οι ράβδοι και οι στήλες σε ένα 2D διάγραμμα (εύρος: -100 έως 100). Αυτή η ιδιότητα εφαρμόζεται σε όλες τις σειρές της γονικής ομάδας σειρών: πρόκειται για μια προβολή της αντίστοιχης ιδιότητας ομάδας. Συνεπώς, αυτή η ιδιότητα είναι μόνο για ανάγνωση.

Χρησιμοποιήστε τη μέθοδο ChartSeriesGroup::setOverlap για να ορίσετε την προτιμώμενη τιμή για το Overlap.

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation.
  2. Προσθέστε ένα συγκεντρωτικό γράφημα στηλών σε μια διαφάνεια.
  3. Προσπελάστε την πρώτη σειρά διαγράμματος.
  4. Προσπελάστε το ParentSeriesGroup της σειράς διαγράμματος και ορίστε την προτιμώμενη τιμή επικάλυψης για τη σειρά.
  5. Γράψτε την τροποποιημένη παρουσίαση σε ένα αρχείο PPTX.
  $pres = new Presentation();
  try {
    # Προσθέτει γράφημα
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 600, 400, true);
    $series = $chart->getChartData()->getSeries();
    if (java_values($series->get_Item(0)->getOverlap()) == 0) {
      # Ορίζει την επικάλυψη σειράς
      $series->get_Item(0)->getParentSeriesGroup()->setOverlap(-30);
    }
    # Γράφει το αρχείο παρουσίασης στο δίσκο
    $pres->save("SetChartSeriesOverlap_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Αλλαγή χρώματος σειράς

Το Aspose.Slides for PHP μέσω Java σας επιτρέπει να αλλάξετε το χρώμα μιας σειράς με αυτόν τον τρόπο:

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation.
  2. Προσθέστε γράφημα στη διαφάνεια.
  3. Προσπελάστε τη σειρά της οποίας το χρώμα θέλετε να αλλάξετε.
  4. Ορίστε τον προτιμώμενο τύπο γεμίσματος και το χρώμα γεμίσματος.
  5. Αποθηκεύστε την τροποποιημένη παρουσίαση.
  $pres = new Presentation("test.pptx");
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Pie, 50, 50, 600, 400);
    $point = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints()->get_Item(1);
    $point->setExplosion(30);
    $point->getFormat()->getFill()->setFillType(FillType::Solid);
    $point->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Αλλαγή χρώματος κατηγορίας σειράς

Το Aspose.Slides for PHP μέσω Java σας επιτρέπει να αλλάξετε το χρώμα μιας κατηγορίας σειράς με αυτόν τον τρόπο:

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation.
  2. Προσθέστε γράφημα στη διαφάνεια.
  3. Προσπελάστε την κατηγορία σειράς της οποίας το χρώμα θέλετε να αλλάξετε.
  4. Ορίστε τον προτιμώμενο τύπο γεμίσματος και το χρώμα γεμίσματος.
  5. Αποθηκεύστε την τροποποιημένη παρουσίαση.
  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 600, 400);
    $point = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints()->get_Item(0);
    $point->getFormat()->getFill()->setFillType(FillType::Solid);
    $point->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Αλλαγή ονόματος σειράς

Από προεπιλογή, τα ονόματα του υπομνήματος για ένα γράφημα είναι τα περιεχόμενα των κελιών πάνω από κάθε στήλη ή γραμμή δεδομένων.

Στο παράδειγμά μας (εικόνα δείγματος),

  • οι στήλες είναι Series 1, Series 2, και Series 3·
  • οι γραμμές είναι Category 1, Category 2, Category 3, και Category 4·

Το Aspose.Slides for PHP μέσω Java σας επιτρέπει να ενημερώσετε ή να αλλάξετε το όνομα μιας σειράς στα δεδομένα του γραφήματος και στο υπόμνημα.

Αυτός ο κώδικας PHP δείχνει πώς να αλλάξετε το όνομα μιας σειράς στα δεδομένα γραφήματος ChartDataWorkbook:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Column3D, 50, 50, 600, 400, true);
    $seriesCell = $chart->getChartData()->getChartDataWorkbook()->getCell(0, 0, 1);
    $seriesCell->setValue("New name");
    $pres->save("pres.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Αυτός ο κώδικας PHP δείχνει πώς να αλλάξετε το όνομα μιας σειράς στο υπόμνημα μέσω του Series:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Column3D, 50, 50, 600, 400, true);
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    $name = $series->getName();
    $name->getAsCells()->get_Item(0)->setValue("New name");
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Ορισμός χρώματος γεμίσματος σειράς διαγράμματος

Το Aspose.Slides for PHP μέσω Java σας επιτρέπει να ορίσετε το αυτόματο χρώμα γεμίσματος για σειρές διαγράμματος μέσα στην περιοχή σχεδίασης με αυτόν τον τρόπο:

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation.
  2. Αποκτήστε την αναφορά μιας διαφάνειας βάσει του δείκτη της.
  3. Προσθέστε ένα γράφημα με προεπιλεγμένα δεδομένα βάσει του προτιμώμενου τύπου (στο παρακάτω παράδειγμα χρησιμοποιήσαμε το ChartType::ClusteredColumn).
  4. Προσπελάστε τη σειρά διαγράμματος και ορίστε το χρώμα γεμίσματος σε Automatic.
  5. Αποθηκεύστε την παρουσίαση σε αρχείο PPTX.
  $pres = new Presentation();
  try {
    # Δημιουργεί συγκεντρωτικό γράφημα στηλών
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 100, 50, 600, 400);
    # Ορίζει τη μορφή γεμίσματος σειράς σε αυτόματο
    for($i = 0; $i < java_values($chart->getChartData()->getSeries()->size()) ; $i++) {
      $chart->getChartData()->getSeries()->get_Item($i)->getAutomaticSeriesColor();
    }
    # Γράφει το αρχείο παρουσίασης στο δίσκο
    $pres->save("AutoFillSeries_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Ορισμός αντιστροφής χρώματος γεμίσματος για σειρά διαγράμματος

Το Aspose.Slides σας επιτρέπει να ορίσετε την αντιστροφή του χρώματος γεμίσματος για σειρές διαγράμματος μέσα στην περιοχή σχεδίασης με αυτόν τον τρόπο:

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation.
  2. Αποκτήστε την αναφορά μιας διαφάνειας βάσει του δείκτη της.
  3. Προσθέστε ένα γράφημα με προεπιλεγμένα δεδομένα βάσει του προτιμώμενου τύπου (στο παρακάτω παράδειγμα χρησιμοποιήσαμε το ChartType::ClusteredColumn).
  4. Προσπελάστε τη σειρά διαγράμματος και ορίστε το χρώμα γεμίσματος σε invert.
  5. Αποθηκεύστε την παρουσίαση σε αρχείο PPTX.
  $inverColor = java("java.awt.Color")->RED;
  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 100, 100, 400, 300);
    $workBook = $chart->getChartData()->getChartDataWorkbook();
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    # Προσθέτει νέες σειρές και κατηγορίες
    $chart->getChartData()->getSeries()->add($workBook->getCell(0, 0, 1, "Series 1"), $chart->getType());
    $chart->getChartData()->getCategories()->add($workBook->getCell(0, 1, 0, "Category 1"));
    $chart->getChartData()->getCategories()->add($workBook->getCell(0, 2, 0, "Category 2"));
    $chart->getChartData()->getCategories()->add($workBook->getCell(0, 3, 0, "Category 3"));
    # Παίρνει την πρώτη σειρά γραφήματος και γεμίζει τα δεδομένα της σειράς.
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    $series->getDataPoints()->addDataPointForBarSeries($workBook->getCell(0, 1, 1, -20));
    $series->getDataPoints()->addDataPointForBarSeries($workBook->getCell(0, 2, 1, 50));
    $series->getDataPoints()->addDataPointForBarSeries($workBook->getCell(0, 3, 1, -30));
    $seriesColor = $series->getAutomaticSeriesColor();
    $series->setInvertIfNegative(true);
    $series->getFormat()->getFill()->setFillType(FillType::Solid);
    $series->getFormat()->getFill()->getSolidFillColor()->setColor($seriesColor);
    $series->getInvertedSolidFillColor()->setColor($inverColor);
    $pres->save("SetInvertFillColorChart_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Ορισμός αντιστροφής σειράς όταν η τιμή είναι αρνητική

Το Aspose.Slides σας επιτρέπει να ορίσετε αντιστροφές μέσω των ιδιοτήτων IChartDataPoint.InvertIfNegative και ChartDataPoint.InvertIfNegative. Όταν μια αντιστροφή οριστεί με αυτές τις ιδιότητες, το σημείο δεδομένων αντιστρέφει τα χρώματά του όταν λαμβάνει μια αρνητική τιμή.

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 600, 400, true);
    $series = $chart->getChartData()->getSeries();
    $chart->getChartData()->getSeries()->clear();
    $chartSeries = $series->add($chart->getChartData()->getChartDataWorkbook()->getCell(0, "B1"), $chart->getType());
    $chartSeries->getDataPoints()->addDataPointForBarSeries($chart->getChartData()->getChartDataWorkbook()->getCell(0, "B2", -5));
    $chartSeries->getDataPoints()->addDataPointForBarSeries($chart->getChartData()->getChartDataWorkbook()->getCell(0, "B3", 3));
    $chartSeries->getDataPoints()->addDataPointForBarSeries($chart->getChartData()->getChartDataWorkbook()->getCell(0, "B4", -2));
    $chartSeries->getDataPoints()->addDataPointForBarSeries($chart->getChartData()->getChartDataWorkbook()->getCell(0, "B5", 1));
    $chartSeries->setInvertIfNegative(false);
    $chartSeries->getDataPoints()->get_Item(2)->setInvertIfNegative(true);
    $pres->save("out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Καθαρισμός δεδομένων συγκεκριμένου σημείου

Το Aspose.Slides for PHP μέσω Java σας επιτρέπει να καθαρίσετε τα δεδομένα DataPoints για μια συγκεκριμένη σειρά διαγράμματος με αυτόν τον τρόπο:

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation.
  2. Αποκτήστε την αναφορά μιας διαφάνειας μέσω του δείκτη της.
  3. Αποκτήστε την αναφορά ενός διαγράμματος μέσω του δείκτη του.
  4. Επανάλαβε όλα τα DataPoints του διαγράμματος και ορίστε τα XValue και YValue σε null.
  5. Καθαρίστε όλα τα DataPoints για συγκεκριμένη σειρά διαγράμματος.
  6. Γράψτε την τροποποιημένη παρουσίαση σε αρχείο PPTX.
  $pres = new Presentation("TestChart.pptx");
  try {
    $sl = $pres->getSlides()->get_Item(0);
    $chart = $sl->getShapes()->get_Item(0);
    foreach($chart->getChartData()->getSeries()->get_Item(0)->getDataPoints() as $dataPoint) {
      $dataPoint->getXValue()->getAsCell()->setValue(null);
      $dataPoint->getYValue()->getAsCell()->setValue(null);
    }
    $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints()->clear();
    $pres->save("ClearSpecificChartSeriesDataPointsData.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Ορισμός πλάτους κενών (Gap Width) σειράς

Το Aspose.Slides for PHP μέσω Java σας επιτρέπει να ορίσετε το πλάτος κενών μιας σειράς μέσω της ιδιότητας GapWidth με αυτόν τον τρόπο:

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation.
  2. Προσπελάστε την πρώτη διαφάνεια.
  3. Προσθέστε γράφημα με προεπιλεγμένα δεδομένα.
  4. Προσπελάστε οποιαδήποτε σειρά διαγράμματος.
  5. Ορίστε την ιδιότητα GapWidth.
  6. Γράψτε την τροποποιημένη παρουσίαση σε αρχείο PPTX.
  # Δημιουργεί κενή παρουσίαση
  $pres = new Presentation();
  try {
    # Προσπελάζει την πρώτη διαφάνεια της παρουσίασης
    $slide = $pres->getSlides()->get_Item(0);
    # Προσθέτει γράφημα με προεπιλεγμένα δεδομένα
    $chart = $slide->getShapes()->addChart(ChartType::StackedColumn, 0, 0, 500, 500);
    # Ορίζει το δείκτη του φύλλου δεδομένων του γραφήματος
    $defaultWorksheetIndex = 0;
    # Λαμβάνει το φύλλο εργασίας δεδομένων του γραφήματος
    $fact = $chart->getChartData()->getChartDataWorkbook();
    # Προσθέτει σειρές
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 1, "Series 1"), $chart->getType());
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 2, "Series 2"), $chart->getType());
    # Προσθέτει Κατηγορίες
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 3, 0, "Caetegoty 3"));
    # Παίρνει τη δεύτερη σειρά γραφήματος
    $series = $chart->getChartData()->getSeries()->get_Item(1);
    # Γεμίζει τα δεδομένα της σειράς
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 1, 20));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 50));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 30));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 2, 30));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 2, 10));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 2, 60));
    # Ορίζει την τιμή GapWidth
    $series->getParentSeriesGroup()->setGapWidth(50);
    # Αποθηκεύει την παρουσίαση στο δίσκο
    $pres->save("GapWidth_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Συχνές ερωτήσεις

Υπάρχει κάποιο όριο στον αριθμό σειρών που μπορεί να περιέχει ένα μόνο γράφημα;

Το Aspose.Slides δεν επιβάλλει κανένα σταθερό όριο στον αριθμό των σειρών που προσθέτετε. Το πρακτικό ανώτατο όριο καθορίζεται από την αναγνωσιμότητα του διαγράμματος και από τη μνήμη που είναι διαθέσιμη στην εφαρμογή σας.

Τι γίνεται αν οι στήλες μέσα σε ένα σύνολο είναι πολύ κοντά ή πολύ μακριά η μία από την άλλη;

Ρυθμίστε την ιδιότητα GapWidth για εκείνη τη σειρά (ή την γονική της ομάδα σειρών). Η αύξηση της τιμής αυξάνει το κενό μεταξύ των στηλών, ενώ η μείωση της τιμής τις φέρνει πιο κοντά.