Formátování grafů v prezentaci na Androidu

Přehled

Tento článek vysvětluje, jak formátovat grafy v prezentacích PowerPoint pomocí Aspose.Slides. Ukazuje, jak přizpůsobit klíčové prvky grafu, jako jsou osy, čáry mřížky, názvy, legendy, oblast vykreslování a výplně stěn, aby se zlepšil vzhled a čitelnost dat v grafu. Také ukazuje, jak nastavit vlastnosti písma pro text grafu, použít předdefinované a vlastní číselné formáty na data grafu a povolit zaoblené rohy pro oblast grafu. Tyto příklady dohromady ukazují, jak řídit jak vizuální styl, tak prezentaci dat v grafech v prezentaci.

Formátování entit grafu

Aspose.Slides pro Android přes Java umožňuje vývojářům přidávat vlastní grafy do snímků od nuly. Tento článek vysvětluje, jak formátovat různé entity grafu, včetně kategoriální a hodnotové osy grafu.
Aspose.Slides pro Android přes Java poskytuje jednoduché API pro správu různých entit grafu a jejich formátování pomocí vlastních hodnot:

  1. Vytvořte instanci třídy Presentation class.
  2. Získejte odkaz na snímek podle jeho indexu.
  3. Přidejte graf s výchozími daty a libovolným požadovaným typem (v tomto příkladu použijeme ChartType.LineWithMarkers).
  4. Přistupujte k hodnotové ose grafu a nastavte následující vlastnosti:
    1. Nastavení Line format pro hlavní mřížkové čáry hodnotové osy
    2. Nastavení Line format pro vedlejší mřížkové čáry hodnotové osy
    3. Nastavení Number Format pro hodnotovou osu
    4. Nastavení Min, Max, Major and Minor units pro hodnotovou osu
    5. Nastavení Text Properties pro data hodnotové osy
    6. Nastavení Title pro hodnotovou osu
    7. Nastavení Line Format pro hodnotovou osu
  5. Přistupujte k osu kategorie grafu a nastavte následující vlastnosti:
    1. Nastavení Line format pro hlavní mřížkové čáry osy kategorie
    2. Nastavení Line format pro vedlejší mřížkové čáry osy kategorie
    3. Nastavení Text Properties pro data osy kategorie
    4. Nastavení Title pro osu kategorie
    5. Nastavení Label Positioning pro osu kategorie
    6. Nastavení Rotation Angle pro popisky osy kategorie
  6. Přistupujte k legendě grafu a nastavte Text Properties pro ni
  7. Nastavte zobrazení legend grafu bez překrytí grafu
  8. Přistupujte k Secondary Value Axis grafu a nastavte následující vlastnosti:
    1. Aktivujte sekundární Value Axis
    2. Nastavení Line Format pro sekundární Value Axis
    3. Nastavení Number Format pro sekundární Value Axis
    4. Nastavení Min, Max, Major and Minor units pro sekundární Value Axis
  9. Nyní vykreslete první sérii grafu na sekundární hodnotové ose
  10. Nastavte barvu výplně zadní stěny grafu
  11. Nastavte barvu výplně oblasti vykreslování grafu
  12. Zapište upravenou prezentaci do souboru PPTX
// Vytvořte instanci třídy Presentation
Presentation pres = new Presentation();
try {
    // Přístup k prvnímu snímku
    ISlide slide = pres.getSlides().get_Item(0);

    // Přidání ukázkového grafu
    IChart chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 50, 50, 500, 400);

    // Nastavení názvu grafu
    chart.hasTitle();
    chart.getChartTitle().addTextFrameForOverriding("");
    IPortion 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(Color.GRAY);
    chartTitle.getPortionFormat().setFontHeight(20);
    chartTitle.getPortionFormat().setFontBold(NullableBool.True);
    chartTitle.getPortionFormat().setFontItalic(NullableBool.True);

    // Nastavení formátu hlavních čar mřížky pro hodnotovou osu
    chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid);
    chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.BLUE);
    chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().setWidth(5);
    chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().setDashStyle(LineDashStyle.DashDot);

    // Nastavení formátu vedlejších čar mřížky pro hodnotovou osu
    chart.getAxes().getVerticalAxis().getMinorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid);
    chart.getAxes().getVerticalAxis().getMinorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.RED);
    chart.getAxes().getVerticalAxis().getMinorGridLinesFormat().getLine().setWidth(3);

    // Nastavení číselného formátu hodnotové osy
    chart.getAxes().getVerticalAxis().isNumberFormatLinkedToSource();
    chart.getAxes().getVerticalAxis().setDisplayUnit(DisplayUnitType.Thousands);
    chart.getAxes().getVerticalAxis().setNumberFormat("0.0%");

    // Nastavení maximálních a minimálních hodnot grafu
    chart.getAxes().getVerticalAxis().isAutomaticMajorUnit();
    chart.getAxes().getVerticalAxis().isAutomaticMaxValue();
    chart.getAxes().getVerticalAxis().isAutomaticMinorUnit();
    chart.getAxes().getVerticalAxis().isAutomaticMinValue();

    chart.getAxes().getVerticalAxis().setMaxValue(15f);
    chart.getAxes().getVerticalAxis().setMinValue(-2f);
    chart.getAxes().getVerticalAxis().setMinorUnit(0.5f);
    chart.getAxes().getVerticalAxis().setMajorUnit(2.0f);

    // Nastavení vlastností textu hodnotové osy
    IChartPortionFormat 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 Color(PresetColor.DarkGreen));
    txtVal.setLatinFont(new FontData("Times New Roman"));

    // Nastavení názvu hodnotové osy
    chart.getAxes().getVerticalAxis().hasTitle();
    chart.getAxes().getVerticalAxis().getTitle().addTextFrameForOverriding("");
    IPortion 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(Color.GRAY);
    valtitle.getPortionFormat().setFontHeight(20);
    valtitle.getPortionFormat().setFontBold(NullableBool.True);
    valtitle.getPortionFormat().setFontItalic(NullableBool.True);

    // Nastavení formátu hlavních čar mřížky pro osu kategorie
    chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid);
    chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.GREEN);
    chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().setWidth(5);

    // Nastavení formátu vedlejších čar mřížky pro osu kategorie
    chart.getAxes().getHorizontalAxis().getMinorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid);
    chart.getAxes().getHorizontalAxis().getMinorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.YELLOW);
    chart.getAxes().getHorizontalAxis().getMinorGridLinesFormat().getLine().setWidth(3);

    // Nastavení vlastností textu osy kategorie
    IChartPortionFormat 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(Color.BLUE);
    txtCat.setLatinFont(new FontData("Arial"));

    // Nastavení názvu kategorie
    chart.getAxes().getHorizontalAxis().hasTitle();
    chart.getAxes().getHorizontalAxis().getTitle().addTextFrameForOverriding("");

    IPortion 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(Color.GRAY);
    catTitle.getPortionFormat().setFontHeight(20);
    catTitle.getPortionFormat().setFontBold(NullableBool.True);
    catTitle.getPortionFormat().setFontItalic(NullableBool.True);

    // Nastavení pozice popisků osy kategorie
    chart.getAxes().getHorizontalAxis().setTickLabelPosition(TickLabelPositionType.Low);

    // Nastavení úhlu otáčení popisků osy kategorie
    chart.getAxes().getHorizontalAxis().setTickLabelRotationAngle(45);

    // Nastavení vlastností textu legendy
    IChartPortionFormat 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 Color(PresetColor.DarkRed));

    // Nastavte zobrazení legend grafu bez překrytí grafu

    chart.getLegend().setOverlay(true);
    // chart.ChartData.Series[0].PlotOnSecondAxis=true;

    chart.getChartData().getSeries().get_Item(0).setPlotOnSecondAxis(true);
    // Nastavení sekundární hodnotové osy
    chart.getAxes().getSecondaryVerticalAxis().isVisible();
    chart.getAxes().getSecondaryVerticalAxis().getFormat().getLine().setStyle(LineStyle.ThickBetweenThin);
    chart.getAxes().getSecondaryVerticalAxis().getFormat().getLine().setWidth(20);

    // Nastavení číselného formátu sekundární hodnotové osy
    chart.getAxes().getSecondaryVerticalAxis().isNumberFormatLinkedToSource();
    chart.getAxes().getSecondaryVerticalAxis().setDisplayUnit(DisplayUnitType.Hundreds);
    chart.getAxes().getSecondaryVerticalAxis().setNumberFormat("0.0%");

    // Nastavení maximálních a minimálních hodnot grafu
    chart.getAxes().getSecondaryVerticalAxis().isAutomaticMajorUnit();
    chart.getAxes().getSecondaryVerticalAxis().isAutomaticMaxValue();
    chart.getAxes().getSecondaryVerticalAxis().isAutomaticMinorUnit();
    chart.getAxes().getSecondaryVerticalAxis().isAutomaticMinValue();

    chart.getAxes().getSecondaryVerticalAxis().setMaxValue(20f);
    chart.getAxes().getSecondaryVerticalAxis().setMinValue(-5f);
    chart.getAxes().getSecondaryVerticalAxis().setMinorUnit(0.5f);
    chart.getAxes().getSecondaryVerticalAxis().setMajorUnit(2.0f);

    // Nastavení barvy zadní stěny grafu
    chart.getBackWall().setThickness(1);
    chart.getBackWall().getFormat().getFill().setFillType(FillType.Solid);
    chart.getBackWall().getFormat().getFill().getSolidFillColor().setColor(Color.ORANGE);

    chart.getFloor().getFormat().getFill().setFillType(FillType.Solid);
    chart.getFloor().getFormat().getFill().getSolidFillColor().setColor(Color.RED);
    // Nastavení barvy oblasti vykreslování
    chart.getPlotArea().getFormat().getFill().setFillType(FillType.Solid);
    chart.getPlotArea().getFormat().getFill().getSolidFillColor().setColor(new Color(PresetColor.LightCyan));

    // Uložení prezentace
    pres.save("FormattedChart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Nastavení vlastností písma pro graf

Aspose.Slides pro Android přes Java poskytuje podporu pro nastavení vlastností písma souvisejících s grafem. Postupujte podle níže uvedených kroků pro nastavení vlastností písma grafu.

  • Vytvořte objekt třídy Presentation .
  • Přidejte graf na snímek.
  • Nastavte výšku písma.
  • Uložte upravenou prezentaci.

Níže je uveden ukázkový příklad.

// Vytvořte instanci třídy Presentation
Presentation pres = new Presentation();
try {
    IChart 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 (pres != null) pres.dispose();
}

Nastavení číselného formátu

Aspose.Slides pro Android přes Java poskytuje jednoduché API pro správu formátu dat grafu:

  1. Vytvořte instanci třídy Presentation .
  2. Získejte odkaz na snímek podle jeho indexu.
  3. Přidejte graf s výchozími daty a libovolným požadovaným typem (v tomto příkladu se používá ChartType.ClusteredColumn).
  4. Nastavte předdefinovaný číselný formát z možných předdefinovaných hodnot.
  5. Procházejte buňky dat grafu v každé sérii grafu a nastavte číselný formát dat grafu.
  6. Uložte prezentaci.
  7. Nastavte vlastní číselný formát.
  8. Procházejte buňky dat grafu v každé sérii grafu a nastavujte odlišný číselný formát dat grafu.
  9. Uložte prezentaci.
// Vytvořte instanci třídy Presentation
Presentation pres = new Presentation();
try {
    // Přístup k prvnímu snímku prezentace
    ISlide slide = pres.getSlides().get_Item(0);

    // Přidání výchozího seskupeného sloupcového grafu
    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 500, 400);

    // Přístup ke kolekci sérií grafu
    IChartSeriesCollection series = chart.getChartData().getSeries();
    
    // Procházení všech sérií grafu
    for (IChartSeries ser : series) 
    {
        // Procházení každé datové buňky v sérii
        for (IChartDataPoint cell : ser.getDataPoints()) 
        {
            // Nastavení číselného formátu
            cell.getValue().getAsCell().setPresetNumberFormat((byte) 10); // 0,00%
        }
    }

    // Ukládání prezentace
    pres.save("PresetNumberFormat.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Možné předdefinované hodnoty číselného formátu spolu s jejich indexem, které lze použít, jsou uvedeny níže:

0 General
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 @

Nastavení zaoblených okrajů oblasti grafu

Aspose.Slides pro Android přes Java poskytuje podporu pro nastavení oblasti grafu. Metody hasRoundedCorners a setRoundedCorners byly přidány do rozhraní IChart a třídy Chart .

  1. Vytvořte objekt třídy Presentation .
  2. Přidejte graf na snímek.
  3. Nastavte typ výplně a barvu výplně grafu
  4. Nastavte vlastnost zaoblených rohů na True.
  5. Uložte upravenou prezentaci.

Níže je uveden ukázkový příklad.

// Vytvořte instanci třídy Presentation
Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    
    IChart 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 (pres != null) pres.dispose();
}

Často kladené otázky

Mohu nastavit poloprůhledné výplně pro sloupce/oblasti a přitom zachovat okraj neprůhledný?
Ano. Průhlednost výplně a obrys jsou nastaveny samostatně. To je užitečné pro zlepšení čitelnosti mřížky a dat v hustých vizualizacích.

Jak mohu zacházet s popisky dat, když se překrývají?
Zmenšete velikost písma, deaktivujte nepodstatné komponenty popisků (například kategorie), nastavte posun/umístění popisku, zobrazte popisky pouze pro vybrané body, pokud je to nutné, nebo změňte formát na „hodnota + legenda“.

Mohu použít přechodové nebo vzorové výplně na série?
Ano. Obvykle jsou k dispozici jak jednotné, tak přechodové/vzorové výplně. V praxi používejte přechody střídmě a vyhýbejte se kombinacím, které snižují kontrast s mřížkou a textem.