Správa datových sérií grafu v prezentacích v Javě

Přehled

Graf ukládá svá vykreslená data do pracovního sešitu s daty grafu. IChartSeries představuje jednu sadu souvisejících hodnot a každý IChartDataPoint v sérii odkazuje na jednu nebo více buněk pracovního listu. Objekt IChartCategory poskytuje štítky nebo hodnoty seskupení sdílené sérií. Název série, kategorie a hodnoty bodů jsou proto propojeny s objekty IChartDataCell, místo aby byly uloženy jen jako zobrazovaný text.

Pro typický kategoriový graf výchozí pracovní list používá řádek 0 pro názvy sérií, sloupec 0 pro názvy kategorií a zbývající buňky pro hodnoty sérií. Indexy listu, řádku a sloupce předávané metodě IChartDataWorkbook.getCell jsou nulově založené. Toto rozložení je užitečné, když vytváříte graf s výchozími daty, ale nepředpokládejte, že ho používá každý existující graf. Pro načtenou prezentaci si před změnou hodnot pracovního listu prohlédněte buňky, na které odkazují série, kategorie a datové body.

Nastavení grafu mají tři různá rozsahy:

  • Nastavení na úrovni série, například IChartSeries.getFormat, poskytuje výchozí vzhled pro všechny body v jedné sérii.
  • Nastavení datového bodu, například IChartDataPoint.getFormat, přepíše vzhled série pro jeden bod.
  • Skupinová nastavení se vztahují na kompatibilní série, které patří do stejné IChartSeriesGroup. Přístup ke skupině získáte přes IChartSeries.getParentSeriesGroup ve chvíli, kdy potřebujete nastavit možnosti jako překrytí nebo šířku mezery.

Když není explicitně nastavena výplň bodu nebo série, automatický vzhled určuje styl a motiv grafu. Když jsou přítomna formátování série i bodu, formátování bodu má přednost pro daný bod.

graf-série-powerpoint

Nastavení překrytí sérií v grafu

IChartSeries.getOverlap udává, jak moc se překrývají pruhy nebo sloupce ve 2D grafu, v rozmezí od ‑100 do 100 procent. Jedná se o jen‑čtení projekci nastavení v nadřazené skupině sérií. Použijte IChartSeriesGroup.setOverlap k aktualizaci všech kompatibilních sérií v této skupině. Tato volba platí pro typy grafů, které zobrazují seskupené pruhy nebo sloupce; neovlivní nesouvisející skupiny sérií v kombinovaném grafu.

Následující příklad nastavuje překrytí pro skupinu, která obsahuje první sérii:

import com.aspose.slides.*;

final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
final byte overlapPercent = 30;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);

    // Nový graf obsahuje ukázkové série, kategorie a hodnoty.
    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
    series.getParentSeriesGroup().setOverlap(overlapPercent);

    presentation.save("series_overlap.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Výsledek:

Překrytí sérií

Změna barvy výplně série

Použijte IChartSeries.getFormat k nastavení výchozí výplně pro celou sérii. Pokud má bod již explicitně nastavenou výplň, jeho nastavení IChartDataPoint.getFormat přepíše výplň série pro tento bod.

Následující příklad aplikuje plnou modrou výplň na první sérii:

import com.aspose.slides.*;
import java.awt.Color;

final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
    series.getFormat().getFill().setFillType(FillType.Solid);
    series.getFormat().getFill().getSolidFillColor().setColor(Color.BLUE);

    presentation.save("series_color.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Výsledek:

Barva série

Změna názvu série

Název série je uložen v pracovním sešitu grafu a normálně se zobrazuje v legendě. Ve výchozím pracovním sešitu vytvořeném pro sloupcový graf s seskupením je buňka B1 na řádku 0, sloupci 1 a obsahuje název první série. pojmenované konstanty v následujícím příkladu tuto strukturu zpřehledňují:

import com.aspose.slides.*;

final int firstSlideIndex = 0;
final int worksheetIndex = 0;
final int seriesNameRowIndex = 0;
final int firstSeriesColumnIndex = 1;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
    IChartDataCell seriesNameCell = workbook.getCell(worksheetIndex, seriesNameRowIndex, firstSeriesColumnIndex);
    seriesNameCell.setValue("Revenue");

    presentation.save("series_name.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Můžete také aktualizovat buňku, na kterou již odkazuje IChartSeries.getName. Tento přístup zabraňuje předpokladu konkrétního řádku a sloupce v existujícím grafu:

import com.aspose.slides.*;

final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
final int firstNameCellIndex = 0;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
    IChartDataCell seriesNameCell = series.getName().getAsCells().get_Item(firstNameCellIndex);
    seriesNameCell.setValue("Revenue");

    presentation.save("series_name.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Výsledek:

Název série

Vytvoření série s názvem z více buněk

Kompozitní název série je užitečný, když jsou název produktu a období zprávy uloženy v oddělených buňkách pracovního listu. Například můžete zkombinovat Product A v B1 a 2026 v C1 do jediného názvu série a přitom zachovat oba části propojené s jejich zdrojovými buňkami.

Použijte IChartDataWorkbook.getCellCollection k získání rozsahu názvů a pak tuto kolekci předávejte metodě IChartSeriesCollection.add. Argument skipHiddenCells určuje, zda jsou zahrnuty skryté buňky: true je vyloučí, false zahrne. Tento příklad používá false, aby zahrnul každou buňku v rozsahu názvu.

Následující příklad vytváří prezentaci s jednou sérií a dvěma datovými body. Buňky B1:C1 obsahují jen název série; A2:A3 obsahují štítky kategorií a B2:B3 číselné hodnoty.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 620, 180);

    chart.getChartData().getSeries().clear();
    chart.getChartData().getCategories().clear();
    chart.setLegend(true);

    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
    workbook.clear(0);

    // Tyto dvě buňky poskytují název série.
    workbook.getCell(0, 0, 1, "Product A");
    workbook.getCell(0, 0, 2, "2026");
    IChartCellCollection nameCells = workbook.getCellCollection("Sheet1!$B$1:$C$1", false);
    IChartSeries series = chart.getChartData().getSeries().add(nameCells, ChartType.ClusteredColumn);

    // Oddělené buňky poskytují kategorie a číselné datové body.
    IChartDataCell northCategory = workbook.getCell(0, 1, 0, "North");
    IChartDataCell southCategory = workbook.getCell(0, 2, 0, "South");
    chart.getChartData().getCategories().add(northCategory);
    chart.getChartData().getCategories().add(southCategory);
    IChartDataCell northValue = workbook.getCell(0, 1, 1, 120);
    IChartDataCell 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();
}

Výsledný název série je Product A 2026 s mezerou mezi oběma hodnotami buněk. Legenda to zobrazuje jako jeden záznam pro oba sloupce. Obrázek níže ilustruje výsledek:

Sloupcový graf s hodnotami Sever a Jih a kompozitním názvem série Product A 2026 v legendě

Získání automatické barvy výplně série

IChartSeries.getAutomaticSeriesColor vrací barvu vypočítanou z indexu série a stylu grafu. Jedná se o barvu použitou, když výplň série není explicitně definována. Volání metody načte vypočítanou barvu; nepřiřadí novou výplň.

Následující příklad vypíše automatickou barvu každé výchozí série:

import com.aspose.slides.*;
import java.awt.Color;

final int firstSlideIndex = 0;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    int seriesCount = chart.getChartData().getSeries().size();
    for (int seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {
        IChartSeries series = chart.getChartData().getSeries().get_Item(seriesIndex);
        Color automaticColor = series.getAutomaticSeriesColor();
        System.out.println("Series " + seriesIndex + ": " + automaticColor);
    }
} finally {
    presentation.dispose();
}

Ukázkový výstup pro výchozí styl grafu:

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]

Přesné barvy závisí na stylu a motivu grafu.

Nastavení inverzní barvy výplně pro sérii grafu

Pro pruhové, sloupcové a bublinové série může IChartSeries.setInvertIfNegative zobrazit záporné hodnoty jinou výplní. Nastavte běžnou výplň série na plnou, povolte inverzi a přiřaďte barvu záporné hodnoty přes IChartSeries.getInvertedSolidFillColor. Záporná čísla zůstávají v pracovním listu beze změny; mění se jen jejich barva při zobrazení.

Následující příklad nahrazuje výchozí data grafu jednou sérií. Řádek 0 listu obsahuje název série, sloupec 0 obsahuje názvy kategorií a sloupec 1 obsahuje hodnoty:

import com.aspose.slides.*;
import java.awt.Color;

final int firstSlideIndex = 0;
final int worksheetIndex = 0;
final int headerRowIndex = 0;
final int categoryColumnIndex = 0;
final int firstSeriesColumnIndex = 1;
final int firstDataRowIndex = 1;

String[] categoryNames = { "Category 1", "Category 2", "Category 3" };
int[] seriesValues = { -20, 50, -30 };

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);
    IChartData chartData = chart.getChartData();
    IChartDataWorkbook workbook = chartData.getChartDataWorkbook();

    chartData.getSeries().clear();
    chartData.getCategories().clear();

    IChartDataCell seriesNameCell = workbook.getCell(worksheetIndex, headerRowIndex, firstSeriesColumnIndex, "Series 1");
    int chartType = chart.getType();
    IChartSeries series = chartData.getSeries().add(seriesNameCell, chartType);

    for (int categoryIndex = 0; categoryIndex < categoryNames.length; categoryIndex++) {
        int dataRowIndex = firstDataRowIndex + categoryIndex;
        String categoryName = categoryNames[categoryIndex];
        int seriesValue = seriesValues[categoryIndex];

        IChartDataCell categoryCell = workbook.getCell(worksheetIndex, dataRowIndex, categoryColumnIndex, categoryName);
        chartData.getCategories().add(categoryCell);

        IChartDataCell valueCell = workbook.getCell(worksheetIndex, dataRowIndex, firstSeriesColumnIndex, seriesValue);
        series.getDataPoints().addDataPointForBarSeries(valueCell);
    }

    Color automaticSeriesColor = series.getAutomaticSeriesColor();
    series.getFormat().getFill().setFillType(FillType.Solid);
    series.getFormat().getFill().getSolidFillColor().setColor(automaticSeriesColor);
    series.setInvertIfNegative(true);
    series.getInvertedSolidFillColor().setColor(Color.RED);

    presentation.save("inverted_solid_fill_color.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Výsledek:

Inverzní plná výplň

Inverzi můžete povolit pro jeden bod pomocí IChartDataPoint.setInvertIfNegative. V následujícím příkladu je inverze vypnuta pro sérii a povolena jen pro vybraný bod. Bod je také nastaven na zápornou hodnotu, aby byl efekt viditelný:

import com.aspose.slides.*;
import java.awt.Color;

final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
final int targetDataPointIndex = 2;
final int negativeValue = -30;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
    Color automaticSeriesColor = series.getAutomaticSeriesColor();
    series.getFormat().getFill().setFillType(FillType.Solid);
    series.getFormat().getFill().getSolidFillColor().setColor(automaticSeriesColor);
    series.getInvertedSolidFillColor().setColor(Color.RED);
    series.setInvertIfNegative(false);

    IChartDataPoint 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 {
    presentation.dispose();
}

Vymazání konkrétní hodnoty datového bodu

Aby byl bod prázdný, aniž byste odstranili ostatní body, nastavte jeho odpovídající buňku pracovního listu na null. U sloupcového grafu je vykreslená hodnota dostupná přes IChartDataPoint.getValue. Datový bod zůstává na stejné pozici kategorie, ale graf jej podle nastavení prázdných hodnot považuje za prázdný.

Následující příklad vymaže pouze druhý bod v první sérii:

import com.aspose.slides.*;

final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
final int targetDataPointIndex = 1;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
    IChartDataPoint dataPoint = series.getDataPoints().get_Item(targetDataPointIndex);
    dataPoint.getValue().getAsCell().setValue(null);

    presentation.save("clear_data_point_value.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Bodové grafy používají samostatné buňky X a Y a bublinové grafy také používají buňku velikosti. Vymažte jen buňku, která představuje hodnotu, kterou chcete odstranit. Nepoužívejte IChartDataPointCollection.clear pokud chcete zachovat ostatní body, protože tato metoda odstraní všechny datové body ze sbírky.

Řízení zobrazení prázdných buněk

Skryté buňky s hodnotami jsou odlišný případ od prázdných buněk. Pro zahrnutí nebo vyloučení dat ze skrytých řádků a sloupců listu viz Include Data from Hidden Rows and Columns.

Prázdná buňka pracovního listu představuje chybějící data; buňka obsahující 0 představuje známou číselnou hodnotu. Zavolejte IChartDataCell.setValue s null, aby buňka byla prázdná. Číselná nula zůstává nulou bez ohledu na nastavení prázdných buněk.

Použijte IChart.setDisplayBlanksAs k výběru, jak graf zobrazí prázdné buňky. Toto nastavení platí pro celý graf. Mění způsob vykreslení prázdných míst, aniž by prázdnou buňku zaplnilo nulou nebo interpolovanou hodnotou.

Následující samostatný příklad vytváří čárový graf s jednou sérií, vymaže hodnotu pro Den 3 a uloží stejný graf ve všech režimech. Vstupní soubor není potřeba. IChartDataWorkbook používá list 0, sloupec 0 pro štítky kategorií a sloupec 1 pro hodnoty; řádek 0 obsahuje název série. Konečná data jsou 10, 20, empty, 30, 40.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 40, 40, 640, 400);
    IChartData chartData = chart.getChartData();
    IChartDataWorkbook workbook = chartData.getChartDataWorkbook();

    chartData.getSeries().clear();
    chartData.getCategories().clear();

    IChartDataCell seriesNameCell = workbook.getCell(0, 0, 1, "Measurements");
    IChartSeries series = chartData.getSeries().add(seriesNameCell, chart.getType());
    int[] values = { 10, 20, 25, 30, 40 };

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

    // Nechte den 3 skutečně prázdný, přičemž zachováte jeho kategorii a datový bod.
    workbook.getCell(0, 3, 1).setValue(null);

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

Každý výstupní soubor ukládá režim, který byl nastaven před uložením: empty_cells_Gap.pptx, empty_cells_Zero.pptx a empty_cells_Span.pptx. Pro uložení jen jedné verze nastavte požadovaný režim a uložte prezentaci jednou místo iterace přes režimy.

Srovnání níže ukazuje stejná data ve všech třech souborech. Den 3 je v pracovním listu prázdný ve všech případech:

Čárové grafy se stejnými daty: Gap přeruší čáru v Den 3, Zero sníží čáru na nulu a Span spojí Den 2 s Den 4.

Viditelný efekt závisí na typu grafu. Čárový graf usnadňuje porovnání všech tří režimů. Pruhové a sloupcové grafy nemají čáru, kterou by spojila chybějící kategorii, takže Span nedokáže vytvořit spojovací segment zobrazený výše; prázdný sloupec a sloupec s nulovou výškou mohou vypadat podobně. Podobně scatter graf s pouze značkami nemá spojovací čáru. Neočekávejte tři odlišné výsledky u každého typu grafu; zkontrolujte výstup pro typ, který používáte.

Nastavení šířky mezery mezi sériemi

Šířka mezery je prostor mezi sousedními shluky pruhů nebo sloupců, vyjádřený jako procento šířky pruhu nebo sloupce. Stejně jako překrytí patří k nadřazené skupině sérií, nikoli k jedné sérii. Zavolejte IChartSeriesGroup.setGapWidth jednou pro skupinu. Větší hodnota vytvoří větší prostor mezi shluky; menší hodnota je učiní hustšími.

Následující příklad mění šířku mezery a uloží jen konečnou prezentaci:

import com.aspose.slides.*;

final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
final int gapWidthPercent = 30;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);

    IChart chart = slide.getShapes().addChart(ChartType.StackedColumn, 20, 20, 500, 200);

    IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
    series.getParentSeriesGroup().setGapWidth(gapWidthPercent);

    presentation.save("gap_width_30.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Výsledek:

Šířka mezery

Často kladené otázky

Které typy grafů podporují datové série?

Všechny typy grafů reprezentované výčtem ChartType používají data grafu, ale jejich série nemají vždy stejnou strukturu hodnot nebo nastavení. Například kategoriové grafy používají kategorie a hodnoty, scatter grafy používají hodnoty X a Y a bublinové grafy přidávají velikosti bublin. Používejte metodu tvorby datových bodů, která odpovídá typu série. Volby jako překrytí a šířka mezery platí jen pro kompatibilní skupiny pruhů nebo sloupců.

Co je skupina sérií grafu?

IChartSeriesGroup obsahuje kompatibilní série, které sdílejí nastavení úrovně skupiny. Kombinovaný graf může obsahovat více než jednu skupinu, takže změna skupiny získaná přes jednu sérii nemusí nutně změnit všechny série v grafu.

Obsahuje nově vytvořený graf výchozí data?

Ano. Ve výchozím nastavení IShapeCollection.addChart vytvoří ukázkové série, kategorie a hodnoty. Můžete upravit tyto buňky nebo vymazat jak série, tak kolekci kategorií před přidáním zcela vlastního datového souboru. Přetížená metoda může také vytvořit graf bez výchozích dat.

Jak jsou objekty grafu propojeny s buňkami pracovního listu?

Názvy sérií, štítky kategorií a hodnoty datových bodů odkazují na buňky v IChartDataWorkbook. Změna odkazované buňky aktualizuje odpovídající prvek grafu. Při vytváření vlastních dat udržujte řádky kategorií a řádky hodnot sérií zarovnané, aby každý bod byl vykreslen pod správnou kategorií.

Jak vymazat jeden bod místo celé série?

Nastavte příslušnou buňku hodnoty na null, aby bod zůstal na své pozici kategorie jako prázdný bod. Použijte IChartDataPointCollection.clear pouze, když chcete odstranit všechny body ze série. Pokud odstraňujete i kategorie, aktualizujte všechny série, aby jejich hodnoty zůstaly zarovnány s kolekcí kategorií.

Jak jsou prázdné body zobrazovány?

Výsledek závisí na typu grafu a na hodnotě nastavené pomocí IChart.setDisplayBlanksAs. Podporované grafy mohou zobrazovat prázdná místa jako mezery, jako nulové hodnoty nebo spojením sousedních bodů. Vyberte nastavení, které odpovídá významu chybějících dat ve vaší prezentaci. Viz Řízení zobrazení prázdných buněk pro kompletní příklad a vizuální srovnání.

Jak jsou formátovány záporné hodnoty?

U podporovaných pruhových, sloupcových a bublinových sérií zavolejte IChartSeries.setInvertIfNegative a nastavte barvu vrácenou metodou IChartSeries.getInvertedSolidFillColor. Chování můžete přepsat pro jednotlivý bod pomocí IChartDataPoint.setInvertIfNegative. Tyto metody ovlivňují formátování, nikoli uložené číselné hodnoty.

Které formátování má přednost, když je série i bod formátován?

Explicitní formátování datového bodu má přednost pro daný bod. Ostatní body nadále používají explicitní formátování série nebo, pokud není definováno, automatický styl a motiv grafu. Skupinová nastavení jako překrytí a šířka mezery řídí rozvržení a nejsou přepsáním formátování na úrovni bodu.

Existuje limit počtu sérií, které může graf obsahovat?

Aspose.Slides neudává samostatný pevný limit počtu sérií. V praxi určují omezení souboru prezentace, dostupná paměť, čas vykreslování a čitelnost grafu praktické limity.

Co změnit, když jsou sloupce příliš blízko nebo příliš daleko od sebe?

Zavolejte IChartSeriesGroup.setGapWidth na příslušnou nadřazenou skupinu sérií. Zvýšením hodnoty rozšíříte prostor mezi shluky, snížením jej přiblížíte.