Hantera diagramseriedata i presentationer i Python

Översikt

Ett diagram kan lagra sina plottade värden i arbetsboksceller eller direkt som numeriska litteraler. En ChartSeries representerar en uppsättning relaterade värden, och varje ChartDataPoint representerar en punkt i den serien. ChartCategory-objekt tillhandahåller etiketter eller grupperingsvärden som delas av serierna. I diagram som skapats med standarddata används serienamn, kategorier och punktvärden från ChartDataCell‑objekt i diagrammets arbetsbok.

För ett typiskt kategoridiagram använder standardarbetsboken rad 0 för serienamn, kolumn 0 för kategorinamn och de återstående cellerna för serievärden. Arbetsblad, rad‑ och kolumnindex som skickas till ChartDataWorkbook.getCell är nollbaserade. Denna layout är användbar när du skapar ett diagram med standarddata, men anta inte att varje befintligt diagram använder den. För en laddad presentation, inspektera cellerna som refereras av serierna, kategorierna och datapunkterna innan du ändrar arbetsboksvärden.

Diagraminställningar har tre olika scopar:

När ingen explicit punkt‑ eller seriefyllning har angetts bestämmer diagramstilen och temat det automatiska utseendet. När både serie‑ och punktformatering finns, har punktformateringen företräde för den punkten.

chart-series-powerpoint

Ange serievärden med numeriska litteraler

Använd numeriska litteraler när serievärden kommer från programdata eller beräkningar och inte behöver referenser till arbetsblads­celler. Anropa setDataSourceTypeForValues med DataSourceType.DoubleLiterals innan du tilldelar varje punkts getValue-resultat via setAsLiteralDouble.

Samlingsinställningen styr källtypen för alla punktvärden i den serien. Varje punkts getDataSourceType-metod rapporterar den valda typen; ändra den via samlingsinställningen. Med Worksheet använd getAsCell för att komma åt den refererade cellen. Med DoubleLiterals använd getAsLiteralDouble eller setAsLiteralDouble för att läsa eller skriva talet direkt.

Följande exempel skapar ett stapeldiagram med standardserier och -kategorier och tilldelar sedan beräknade värden 10, 20 osv. till de befintliga punkterna i dess första serie. Det sparar presentationen, öppnar den igen och skriver ut de lagrade värdena.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, DataSourceType, Presentation, SaveFormat

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)

    chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 300)
    series = chart.getChartData().getSeries().get_Item(0)

    series.getDataPoints().setDataSourceTypeForValues(DataSourceType.DoubleLiterals)
    for i in range(series.getDataPoints().size()):
        series.getDataPoints().get_Item(i).getValue().setAsLiteralDouble((i + 1) * 10)

    presentation.save("numeric_literals.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

reopened_presentation = Presentation("numeric_literals.pptx")
try:
    reopened_slide = reopened_presentation.getSlides().get_Item(0)
    reopened_chart = reopened_slide.getShapes().get_Item(0)
    reopened_series = reopened_chart.getChartData().getSeries().get_Item(0)
    for point in reopened_series.getDataPoints():
        print(point.getValue().getAsLiteralDouble())
finally:
    reopened_presentation.dispose()

Punktvärdens källtyp är separat från ChartData.getDataSourceType, som identifierar diagrammets interna eller externa arbetsbokskonfiguration. Att använda numeriska litteraler tar inte i sig bort den inbäddade arbetsboken. I detta exempel förblir arbetsboken tillgänglig för kategorietiketter, serienamn och de andra serierna. Se Chart Workbook för hantering av arbetsböcker.

För spridnings‑ och bubbeldiagram, använd setDataSourceTypeForXValues och setDataSourceTypeForYValues för att välja källorna för getXValue och getYValue. Bubbeldiagram använder även setDataSourceTypeForBubbleSizes för getBubbleSize. Sätt varje tillämplig källa till DoubleLiterals innan du tilldelar tal via den värdets setAsLiteralDouble‑metod.

Ange diagramseriens överlappning

ChartSeries.getOverlap rapporterar hur mycket staplar eller kolumner överlappar i ett 2D‑diagram, från -100 till 100 procent. Det är en skrivskyddad projektion av inställningen på den överordnade serieggruppen. Använd ChartSeriesGroup.setOverlap för att uppdatera alla kompatibla serier i den gruppen. Detta alternativ gäller diagramtyper som visar grupperade staplar eller kolumner; det påverkar inte orelaterade serieggrupper i ett kombinationsdiagram.

Följande exempel sätter överlappningen för gruppen som innehåller den första serien:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpase.startJVM()

from asposeslides.api import ChartType, Presentation, SaveFormat

first_slide_index = 0
first_series_index = 0
overlap_percent = 30

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(first_slide_index)

    # Det nya diagrammet innehåller exempelserier, kategorier och värden.
    chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200)

    series = chart.getChartData().getSeries().get_Item(first_series_index)
    series.getParentSeriesGroup().setOverlap(overlap_percent)

    presentation.save("series_overlap.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Resultatet:

The series overlap

Ändra seriefärgens fyllning

Använd ChartSeries.getFormat för att ange standardfyllning för en hel serie. Om en punkt redan har en explicit fyllning, åsidosätter dess ChartDataPoint.getFormat-inställning serie­fyllningen för den punkten.

Följande exempel applicerar en solid blå fyllning på den första serien:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, FillType, Presentation, SaveFormat

Color = jpype.JClass("java.awt.Color")

first_slide_index = 0
first_series_index = 0

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(first_slide_index)

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

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

    presentation.save("series_color.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Resultatet:

The color of the series

Ändra seriens namn

Ett serienamn lagras i diagrammets arbetsboksdata och visas normalt i förklaringen. I standardarbetsboken som skapas för ett grupperat stapeldiagram ligger cell B1 i rad 0, kolumn 1 och innehåller namnet på den första serien. De namngivna variablerna i följande exempel gör den strukturen explicit:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, Presentation, SaveFormat

first_slide_index = 0
worksheet_index = 0
series_name_row_index = 0
first_series_column_index = 1

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(first_slide_index)

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

    workbook = chart.getChartData().getChartDataWorkbook()
    series_name_cell = workbook.getCell(worksheet_index, series_name_row_index, first_series_column_index)
    series_name_cell.setValue("Revenue")

    presentation.save("series_name.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Du kan också uppdatera cellen som redan refereras av ChartSeries.getName. Detta tillvägagångssätt undviker att anta en viss rad och kolumn i ett befintligt diagram:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, Presentation, SaveFormat

first_slide_index = 0
first_series_index = 0
first_name_cell_index = 0

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(first_slide_index)

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

    series = chart.getChartData().getSeries().get_Item(first_series_index)
    series_name_cell = series.getName().getAsCells().get_Item(first_name_cell_index)
    series_name_cell.setValue("Revenue")

    presentation.save("series_name.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Resultatet:

The series name

Skapa en serie med namn från flera celler

Ett sammansatt serienamn är användbart när ett produktnamn och en rapporteringsperiod lagras i separata arbetsboksceller. Till exempel kan du kombinera Product A i B1 och 2026 i C1 till ett enda serienamn samtidigt som båda delarna länkas till sina källceller.

Använd ChartDataWorkbook.getCellCollection för att hämta namnintervallet och skicka sedan den samlingen till ChartSeriesCollection.add. Argumentet skipHiddenCells styr om dolda celler inkluderas: True exkluderar dem, False inkluderar dem. Detta exempel använder False för att inkludera varje cell i namnintervallet.

Följande exempel skapar en presentation med en serie och två datapunkter. Cellerna B1:C1 levererar endast serienamnet; A2:A3 levererar kategorietiketter, och B2:B3 levererar numeriska värden.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, Presentation, SaveFormat

presentation = 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)

    # Dessa två celler levererar serienamnet.
    workbook.getCell(0, 0, 1, "Product A")
    workbook.getCell(0, 0, 2, "2026")
    name_cells = workbook.getCellCollection("Sheet1!$B$1:$C$1", False)
    series = chart.getChartData().getSeries().add(name_cells, ChartType.ClusteredColumn)

    # Separata celler levererar kategorierna och numeriska datapunkter.
    north_category = workbook.getCell(0, 1, 0, "North")
    south_category = workbook.getCell(0, 2, 0, "South")
    chart.getChartData().getCategories().add(north_category)
    chart.getChartData().getCategories().add(south_category)
    north_value = workbook.getCell(0, 1, 1, jpype.JInt(120))
    south_value = workbook.getCell(0, 2, 1, jpype.JInt(150))
    series.getDataPoints().addDataPointForBarSeries(north_value)
    series.getDataPoints().addDataPointForBarSeries(south_value)

    presentation.save("composite_series_name.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Det resulterande serienamnet blir Product A 2026, med ett mellanslag mellan de två cellvärdena. Förklaringen visar detta som ett enda objekt för båda kolumnerna. Bilden nedan illustrerar resultatet:

Column chart with North and South values and the composite series name Product A 2026 in the legend

Hämta den automatiska seriefärgens fyllning

ChartSeries.getAutomaticSeriesColor returnerar den färg som beräknas utifrån serie‑indexet och diagramstilen. Detta är färgen som används när serie­fyllningen inte har definierats explicit. Att anropa metoden läser den beräknade färgen; den tilldelar ingen ny fyllning.

Följande exempel skriver ut den automatiska färgen för varje standardserie:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, Presentation

first_slide_index = 0

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(first_slide_index)

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

    series_count = chart.getChartData().getSeries().size()
    for series_index in range(series_count):
        series = chart.getChartData().getSeries().get_Item(series_index)
        automatic_color = series.getAutomaticSeriesColor()
        print(f"Series {series_index}: {automatic_color}")
finally:
    presentation.dispose()

Exempelsutdata för standarddiagramstilen:

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]

De exakta färgerna beror på diagramstil och tema.

Ställ in inverterad fyllningsfärg för en diagramserie

För stapel‑, kolumn‑ och bubbelseerier kan ChartSeries.setInvertIfNegative visa negativa värden med en annan fyllning. Ställ in den vanliga serie­fyllningen som solid, aktivera inversion och tilldela den negativa färgen via ChartSeries.getInvertedSolidFillColor. Negativa tal förblir oförändrade i arbetsboken; endast deras visningsfärg ändras.

Följande exempel ersätter standarddiagramdata med en serie. Arbetsbladets rad 0 innehåller serienamnet, kolumn 0 innehåller kategorinamn, och kolumn 1 innehåller värdena:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, FillType, Presentation, SaveFormat

Color = jpype.JClass("java.awt.Color")

first_slide_index = 0
worksheet_index = 0
header_row_index = 0
category_column_index = 0
first_series_column_index = 1
first_data_row_index = 1

category_names = ["Category 1", "Category 2", "Category 3"]
series_values = [-20, 50, -30]

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(first_slide_index)

    chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200)
    chart_data = chart.getChartData()
    workbook = chart_data.getChartDataWorkbook()

    chart_data.getSeries().clear()
    chart_data.getCategories().clear()

    series_name_cell = workbook.getCell(worksheet_index, header_row_index, first_series_column_index, "Series 1")
    chart_type = chart.getType()
    series = chart_data.getSeries().add(series_name_cell, chart_type)

    for category_index in range(len(category_names)):
        data_row_index = first_data_row_index + category_index
        category_name = category_names[category_index]
        series_value = series_values[category_index]

        category_cell = workbook.getCell(worksheet_index, data_row_index, category_column_index, category_name)
        chart_data.getCategories().add(category_cell)

        value_cell = workbook.getCell(worksheet_index, data_row_index, first_series_column_index, series_value)
        series.getDataPoints().addDataPointForBarSeries(value_cell)

    automatic_series_color = series.getAutomaticSeriesColor()
    series.getFormat().getFill().setFillType(FillType.Solid)
    series.getFormat().getFill().getSolidFillColor().setColor(automatic_series_color)
    series.setInvertIfNegative(True)
    series.getInvertedSolidFillColor().setColor(Color.RED)

    presentation.save("inverted_solid_fill_color.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Resultatet:

The inverted solid fill color

Du kan aktivera inversion för en punkt via ChartDataPoint.setInvertIfNegative. I följande exempel är inversion inaktiverad för serien och endast aktiverad för den valda punkten. Punkten får också ett negativt värde så att effekten syns:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, FillType, Presentation, SaveFormat

Color = jpype.JClass("java.awt.Color")

first_slide_index = 0
first_series_index = 0
target_data_point_index = 2
negative_value = -30

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(first_slide_index)

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

    series = chart.getChartData().getSeries().get_Item(first_series_index)
    automatic_series_color = series.getAutomaticSeriesColor()
    series.getFormat().getFill().setFillType(FillType.Solid)
    series.getFormat().getFill().getSolidFillColor().setColor(automatic_series_color)
    series.getInvertedSolidFillColor().setColor(Color.RED)
    series.setInvertIfNegative(False)

    data_point = series.getDataPoints().get_Item(target_data_point_index)
    data_point.getValue().getAsCell().setValue(negative_value)
    data_point.setInvertIfNegative(True)

    presentation.save("data_point_invert_color_if_negative.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Rensa ett specifikt datapunktvärde

För att göra en punkt tom utan att ta bort de andra punkterna, sätt dess underliggande arbetsbokscell till None. För ett stapeldiagram är det plottade värdet tillgängligt via ChartDataPoint.getValue. Datapunkten förblir på samma kategoriplats, men diagrammet behandlar dess värde som tomt enligt diagrammets inställningar för tomma värden.

Följande exempel rensar endast den andra punkten i den första serien:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, Presentation, SaveFormat

first_slide_index = 0
first_series_index = 0
target_data_point_index = 1

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(first_slide_index)

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

    series = chart.getChartData().getSeries().get_Item(first_series_index)
    data_point = series.getDataPoints().get_Item(target_data_point_index)
    data_point.getValue().getAsCell().setValue(None)

    presentation.save("clear_data_point_value.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Spridningsdiagram använder separata X‑ och Y‑celler, och bubbeldiagram använder dessutom en storleeks­cell. Rensa endast den cell som representerar det värde du vill ta bort. Anropa inte ChartDataPointCollection.clear när du vill behålla de andra punkterna, eftersom den metoden tar bort alla datapunkter i samlingen.

Styr visning av tomma celler

Dolda celler som innehåller värden är ett separat fall från tomma celler. För att inkludera eller exkludera data från dolda rader och kolumner i arbetsbladet, se Include Data from Hidden Rows and Columns.

En tom arbetsbokscell representerar saknad data; en cell som innehåller 0 representerar ett känt numeriskt värde. Anropa ChartDataCell.setValue med None för att göra en cell tom. En numerisk nolla förblir en nolla oavsett inställning för tomma celler.

Använd Chart.setDisplayBlanksAs för att välja hur diagrammet visar tomma celler. Denna inställning gäller för hela diagrammet. Den ändrar hur tomma värden plottas, utan att fylla den tomma arbetsbokscellen med noll eller ett interpolerat värde.

Följande självständiga exempel skapar ett linjediagram med en serie, rensar värdet för dag 3 och sparar samma diagram med varje läge. Ingen indatafil krävs. ChartDataWorkbook använder arbetsblad 0, kolumn 0 för kategorietiketter och kolumn 1 för värden; rad 0 innehåller serienamnet. De slutgiltiga data är 10, 20, empty, 30, 40.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, DisplayBlanksAsType, Presentation, SaveFormat

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)

    chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 40, 40, 640, 400)
    chart_data = chart.getChartData()
    workbook = chart_data.getChartDataWorkbook()

    chart_data.getSeries().clear()
    chart_data.getCategories().clear()

    series_name_cell = workbook.getCell(0, 0, 1, "Measurements")
    series = chart_data.getSeries().add(series_name_cell, chart.getType())
    values = [10, 20, 25, 30, 40]

    for i, value in enumerate(values):
        category_cell = workbook.getCell(0, i + 1, 0, f"Day {i + 1}")
        chart_data.getCategories().add(category_cell)
        value_cell = workbook.getCell(0, i + 1, 1, jpype.JInt(value))
        series.getDataPoints().addDataPointForLineSeries(value_cell)

    # Lämna dag 3 verkligen tom, samtidigt som du behåller dess kategori och datapunkt.
    workbook.getCell(0, 3, 1).setValue(None)

    modes = [DisplayBlanksAsType.Gap, DisplayBlanksAsType.Zero, DisplayBlanksAsType.Span]
    mode_names = ["Gap", "Zero", "Span"]
    for mode, mode_name in zip(modes, mode_names):
        chart.setDisplayBlanksAs(mode)
        presentation.save(f"empty_cells_{mode_name}.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Varje utdatafil lagrar det läge som tilldelades innan sparning: empty_cells_Gap.pptx, empty_cells_Zero.pptx och empty_cells_Span.pptx. För att spara endast en version, ange önskat läge och spara presentationen en gång istället för att iterera över lägena.

Jämförelsen nedan visar samma data i alla tre filer. Dag 3 är tom i arbetsboken i alla fall:

Line charts with identical data: Gap breaks the line at Day 3, Zero drops the line to zero, and Span connects Day 2 to Day 4.

Den synliga effekten beror på diagramtypen. Ett linjediagram gör alla tre lägen enkla att jämföra. Stapel‑ och kolumndiagram har ingen linje att förena över en saknad kategori, så Span kan inte skapa det anslutna segmentet som visas ovan; en saknad kolumn och en nollhöjdskolumn kan också se lika ut. På liknande sätt har ett spridningsdiagram med endast markörer ingen anslutande linje. Räkna inte med tre tydliga resultat för varje diagramtyp; kontrollera utdata för den typ du använder.

Ställ in seriens glappbredd

Glappbredd är avståndet mellan intilliggande stapel‑ eller kolumnkluster, uttryckt i procent av stapel‑ eller kolumnbredden. Liksom överlappning tillhör den den överordnade serieggruppen snarare än en enskild serie. Anropa ChartSeriesGroup.setGapWidth en gång för gruppen. Ett högre värde skapar mer utrymme mellan klustren; ett lägre värde gör dem tätare.

Följande exempel ändrar glappbredden och sparar endast den slutgiltiga presentationen:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, Presentation, SaveFormat

first_slide_index = 0
first_series_index = 0
gap_width_percent = 30

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(first_slide_index)

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

    series = chart.getChartData().getSeries().get_Item(first_series_index)
    series.getParentSeriesGroup().setGapWidth(gap_width_percent)

    presentation.save("gap_width_30.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Resultatet:

The gap width

FAQ

Vilka diagramtyper stödjer dataserier?

Alla diagramtyper som representeras av ChartType-uppräkningen använder diagramdata, men deras serier har inte alla samma värdestruktur eller inställningar. Till exempel använder kategoridiagram kategorier och värden, spridningsdiagram X‑ och Y‑värden, och bubbeldiagram lägger till bubbelstorlekar. Använd datapunkt‑skapandemetoden som motsvarar serietypen. Alternativ som överlappning och glappbredd gäller endast kompatibla stapel‑ eller kolumngrupper.

Vad är en diagramserieggrupp?

En ChartSeriesGroup innehåller kompatibla serier som delar gruppnivåinställningar för plottning. Ett kombinationsdiagram kan innehålla mer än en grupp, så att ändra gruppen som nås via en serie påverkar inte nödvändigtvis alla serier i diagrammet.

Innehåller ett nyss skapat diagram standarddata?

Ja. Som standard skapar ShapeCollection.addChart exempelserier, -kategorier och -värden. Du kan redigera dessa celler eller rensa både serie‑ och kategorisamlingarna innan du lägger till en helt egen datamängd. En overload kan också skapa ett diagram utan standarddata.

Hur är diagramobjekt kopplade till arbetsboksceller?

Serienamn, kategorietiketter och datapunktvärden refererar celler i en ChartDataWorkbook. Att ändra en refererad cell uppdaterar motsvarande diagramdel. När du bygger anpassade data, håll kategorirader och serie‑värderader i linje så att varje punkt plottas under avsedd kategori.

Hur rensar jag en punkt utan att ta bort hela serien?

Sätt den relevanta värdecellen till None för att behålla punktens kategoriplats som en tom punkt. Använd ChartDataPointCollection.clear endast när du avser att ta bort alla punkter i den serien. Om du också tar bort kategorier, uppdatera varje serie så att deras värden förblir i linje med kategorisamlingen.

Hur visas tomma punkter?

Resultatet beror på diagramtypen och värdet som konfigurerats via Chart.setDisplayBlanksAs. Stödda diagram kan visa tomrum som glapp, som nollvärden eller genom att ansluta grannpunkter. Välj den inställning som motsvarar innebörden av saknad data i din presentation. Se Control the Display of Empty Cells för ett komplett exempel och visuell jämförelse.

Hur formateras negativa värden?

För stödda stapel‑, kolumn‑ och bubbelseerier, anropa ChartSeries.setInvertIfNegative och ange färgen som returneras av ChartSeries.getInvertedSolidFillColor. Du kan åsidosätta beteendet för en enskild punkt med ChartDataPoint.setInvertIfNegative. Dessa metoder påverkar formatering, inte de lagrade numeriska värdena.

Vilken formatering har företräde när både en serie och en punkt är formaterade?

Explicit datapunkt‑formatering har företräde för den punkten. Övriga punkter fortsätter att använda den explicita seriefärgen eller, om seriefärgen inte är definierad, den automatiska diagramstilen och temat. Gruppinställningar såsom överlappning och glappbredd styr layout och är inte formateringsåsidosättningar på punkt‑nivå.

Finns det en gräns för hur många serier ett diagram kan innehålla?

Aspose.Slides påför ingen separat fast gräns för serier. I praktiken bestäms en användbar gräns av presentationsfilens begränsningar, tillgängligt minne, renderingtid och diagrammets läsbarhet.

Vad ska jag ändra när kolumner är för nära varandra eller för långt ifrån varandra?

Anropa ChartSeriesGroup.setGapWidth på den lämpliga föräldraserieggruppen. Öka värdet för att bredda avståndet mellan klustren, eller minska det för att föra klustren närmare varandra.