Přizpůsobení os grafu v prezentacích pomocí Pythonu
Přehled
Tento článek vysvětluje, jak přizpůsobit osy grafu v Aspose.Slides. Ukazuje, jak získat skutečné hodnoty os, vyměnit data mezi osami, skrýt vertikální nebo horizontální osu u čárových grafů, změnit typ kategoriální osy, nastavit formát data pro hodnoty kategoriální osy, natočit název osy, nastavit pozici osy a nastavit zobrazovací jednotku hodnotové osy.
Získání maximálních hodnot na vertikální ose grafu
Aspose.Slides pro Python via Java umožňuje získat minimální a maximální hodnoty na svislé ose. Postupujte podle těchto kroků:
- Vytvořte instanci třídy Presentation.
- Získejte první snímek.
- Přidejte graf s výchozími daty.
- Získejte skutečnou maximální hodnotu na ose.
- Získejte skutečnou minimální hodnotu na ose.
- Získejte skutečnou hlavní jednotku osy.
- Získejte skutečnou menší jednotku osy.
- Získejte skutečné měřítko hlavní jednotky osy.
- Získejte skutečné měřítko menší jednotky osy.
Ukázkový kód — implementace výše uvedených kroků — vám ukazuje, jak získat požadované hodnoty v Pythonu:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ChartType, SaveFormat
presentation = Presentation()
try:
chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.Area, 100, 100, 500, 350)
chart.validateChartLayout()
max_value = chart.getAxes().getVerticalAxis().getActualMaxValue()
min_value = chart.getAxes().getVerticalAxis().getActualMinValue()
major_unit = chart.getAxes().getVerticalAxis().getActualMajorUnit()
minor_unit = chart.getAxes().getVerticalAxis().getActualMinorUnit()
major_unit_scale = chart.getAxes().getVerticalAxis().getActualMajorUnitScale()
minor_unit_scale = chart.getAxes().getVerticalAxis().getActualMinorUnitScale()
# Uloží prezentaci
presentation.save("MaxValuesVerticalAxis_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Výměna dat mezi osami
Aspose.Slides umožňuje rychle vyměnit data mezi osami — data zobrazená na vertikální ose (y-ose) se přesunou na horizontální osu (x-ose) a naopak.
Tento Python kód vám ukazuje, jak provést výměnu dat mezi osami v grafu:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ChartType, SaveFormat
presentation = Presentation()
try:
chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 100, 100, 400, 300)
# Načte výchozí data grafu do sešitu — switchRowColumn transponuje sešit, takže je třeba jej nejprve naplnit
workbook = chart.getChartData().getChartDataWorkbook()
# Přepne řádky a sloupce
chart.getChartData().switchRowColumn()
# Uloží prezentaci
presentation.save("SwitchChartRowColumns_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Zakázání vertikální osy pro čárové grafy
Tento Python kód vám ukazuje, jak skrýt vertikální osu v čárovém grafu:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ChartType, SaveFormat
presentation = Presentation()
try:
chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.Line, 100, 100, 400, 300)
chart.getAxes().getVerticalAxis().setVisible(False)
presentation.save("chart.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Zakázání horizontální osy pro čárové grafy
Tento kód vám ukazuje, jak skrýt horizontální osu v čárovém grafu:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ChartType, SaveFormat
presentation = Presentation()
try:
chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.Line, 100, 100, 400, 300)
chart.getAxes().getHorizontalAxis().setVisible(False)
presentation.save("chart.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Změna kategoriální osy
S metodou setCategoryAxisType můžete zadat preferovaný typ kategoriální osy (date nebo text). Tento Python kód demonstruje operaci:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, Chart, SaveFormat, CategoryAxisType, TimeUnitType
presentation = Presentation("ExistingChart.pptx")
try:
if presentation.getSlides().size() > 0 and presentation.getSlides().get_Item(0).getShapes().size() > 0:
chart = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
if isinstance(chart, Chart):
chart.getAxes().getHorizontalAxis().setCategoryAxisType(CategoryAxisType.Date)
chart.getAxes().getHorizontalAxis().setAutomaticMajorUnit(False)
chart.getAxes().getHorizontalAxis().setMajorUnit(1)
chart.getAxes().getHorizontalAxis().setMajorUnitScale(TimeUnitType.Months)
presentation.save("ChangeChartCategoryAxis_out.pptx", SaveFormat.Pptx)
else:
print("The first shape is not a chart.")
else:
print("The presentation has no first shape to update.")
finally:
presentation.dispose()
Nastavení formátu data pro hodnoty kategoriální osy
Aspose.Slides pro Python via Java umožňuje nastavit formát data pro hodnotu kategoriální osy. Operace je demonstrována v tomto Python kódu:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ChartType, SaveFormat, CategoryAxisType
from datetime import datetime
def convert_to_oa_date(date):
base_date = datetime(1899, 12, 30)
return (date - base_date).total_seconds() / 86400
presentation = Presentation()
try:
chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.Area, 50, 50, 450, 300)
workbook = chart.getChartData().getChartDataWorkbook()
workbook.clear(0)
chart.getChartData().getCategories().clear()
chart.getChartData().getSeries().clear()
category_date = datetime(2015, 2, 1)
category_value = convert_to_oa_date(category_date)
category_cell = workbook.getCell(0, "A2", category_value)
chart.getChartData().getCategories().add(category_cell)
category_date = datetime(2016, 2, 1)
category_value = convert_to_oa_date(category_date)
category_cell = workbook.getCell(0, "A3", category_value)
chart.getChartData().getCategories().add(category_cell)
category_date = datetime(2017, 2, 1)
category_value = convert_to_oa_date(category_date)
category_cell = workbook.getCell(0, "A4", category_value)
chart.getChartData().getCategories().add(category_cell)
category_date = datetime(2018, 2, 1)
category_value = convert_to_oa_date(category_date)
category_cell = workbook.getCell(0, "A5", category_value)
chart.getChartData().getCategories().add(category_cell)
series = chart.getChartData().getSeries().add(ChartType.Line)
value_cell = workbook.getCell(0, "B2", 1.0)
series.getDataPoints().addDataPointForLineSeries(value_cell)
value_cell = workbook.getCell(0, "B3", 2.0)
series.getDataPoints().addDataPointForLineSeries(value_cell)
value_cell = workbook.getCell(0, "B4", 3.0)
series.getDataPoints().addDataPointForLineSeries(value_cell)
value_cell = workbook.getCell(0, "B5", 4.0)
series.getDataPoints().addDataPointForLineSeries(value_cell)
chart.getAxes().getHorizontalAxis().setCategoryAxisType(CategoryAxisType.Date)
chart.getAxes().getHorizontalAxis().setNumberFormatLinkedToSource(False)
chart.getAxes().getHorizontalAxis().setNumberFormat("yyyy")
presentation.save("output.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Nastavení úhlu otočení názvu osy grafu
Aspose.Slides pro Python via Java umožňuje nastavit úhel otočení názvu osy grafu. Tento Python kód demonstruje operaci:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ChartType, SaveFormat
presentation = Presentation()
try:
chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300)
chart.getAxes().getVerticalAxis().setTitle(True)
chart.getAxes().getVerticalAxis().getTitle().getTextFormat().getTextBlockFormat().setRotationAngle(90)
presentation.save("output.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Nastavení pozice osy na kategoriální nebo hodnotové ose
Aspose.Slides pro Python via Java umožňuje nastavit pozici osy na kategoriální nebo hodnotové ose. Tento Python kód ukazuje, jak úlohu provést:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ChartType, SaveFormat
presentation = Presentation()
try:
chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300)
chart.getAxes().getHorizontalAxis().setAxisBetweenCategories(True)
presentation.save("output.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Nastavení zobrazovací jednotky na hodnotové ose grafu
Aspose.Slides pro Python via Java umožňuje nastavit zobrazovací jednotku hodnotové osy grafu. Osa pak měří své popisky značek podle této jednotky: s DisplayUnitType.Millions je osa, která jde až do 60,000,000, označena 0 až 60. Tento Python kód demonstruje operaci:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ChartType, SaveFormat, DisplayUnitType
presentation = Presentation()
try:
chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300)
chart.getAxes().getVerticalAxis().setDisplayUnit(DisplayUnitType.Millions)
presentation.save("output.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
FAQ
Jak nastavit hodnotu, při které se jedna osa protíná s druhou (průsečík osy)?
Osy poskytují nastavení průsečíku: můžete zvolit průsečík při nule, při maximální kategorii/hodnotě nebo při konkrétní číselné hodnotě. To je užitečné pro posun osy X nahoru nebo dolů či pro zdůraznění referenční čáry.
Jak mohu umístit značky měřítka relativně k ose (průsečík, vnější, vnitřní)?
Nastavte pozici značek měřítka na „cross“, „outside“ nebo „inside“. To ovlivňuje čitelnost a pomáhá šetřit místo, zejména u menších grafů.