Dostosowywanie osi wykresów w prezentacjach przy użyciu Pythona

Przegląd

Ten artykuł wyjaśnia, jak dostosować osie wykresów przy użyciu Aspose.Slides dla Pythona przez Java. Opisuje obliczone wartości osi, zamianę wierszy i kolumn wykresu, widoczność osi, interwały etykiet kategorii i znaczników podziałek, kategorie dat i formatowanie, obrót tytułu, pozycjonowanie osi, jednostki wyświetlania oraz skalowanie logarytmiczne.

Uzyskaj maksymalne wartości na pionowej osi wykresu

Utwórz Presentation i dodaj wykres powierzchniowy z domyślnymi danymi. Wywołaj validateChartLayout przed odczytaniem obliczonych wartości osi, aby układ wykresu był aktualny.

Odczytaj getActualMaxValue i getActualMinValue dla ograniczeń osi oraz getActualMajorUnit i getActualMinorUnit dla interwałów podziałek. getActualMajorUnitScale i getActualMinorUnitScale dostarczają skali jednostek czasu, które są istotne dla osi dat. Przykład przechowuje te wartości w zmiennych lokalnych i zapisuje wykres.

import jpype
import asposeslides

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

from asposeslides.api import Presentation, ChartType, SaveFormat

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

    chart = slide.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()

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

Zamień dane między osiami

Użyj switchRowColumn, aby wymienić role serii i kategorii w danych wykresu. Każda poprzednia kategoria staje się serią, a każda poprzednia seria staje się kategorią. Zmienia to sposób grupowania danych; nie zamienia osi poziomej i pionowej. Przykład używa setRange, aby powiązać domyślne dane z Sheet1!A1:D5, łącznie z wierszem nagłówka i kolumną kategorii, przed zamianą wierszy i kolumn. Zapisuje wykres z czterema seriami i trzema kategoriami.

import jpype
import asposeslides

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

from asposeslides.api import Presentation, ChartType, SaveFormat

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

    chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 100, 100, 400, 300)
    chart.getChartData().setRange("Sheet1!A1:D5")
    chart.getChartData().switchRowColumn()

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

Odwróć kolejność rysowania osi

Użyj setPlotOrderReversed, aby odwrócić oś kategorii lub wartości. Na przykład wykres słupkowy poziomy może wyświetlać etapy projektu od góry do dołu w takiej samej kolejności jak arkusz: Planning, Development, Testing. Odwrócenie osi zmienia kierunek rysowania; nie sortuje ani nie przestawia danych w skoroszycie. Dla porównania, switchRowColumn wymienia role serii i kategorii.

Poniższy przykład tworzy wykres słupkowy poziomy z trzema etapami i jedną serią. Zapisuje prezentację z trzema slajdami: normalna kolejność, odwrócone kategorie i odwrócone wartości. Każda kopia używa tego samego zestawu danych, a na każdej kopii odwrócona jest tylko jedna oś.

import jpype
import asposeslides

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

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

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

    chart = slide.getShapes().addChart(ChartType.ClusteredBar, 50, 40, 620, 320)
    chart.setLegend(False)

    chart.getChartData().getCategories().clear()
    chart.getChartData().getSeries().clear()

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

    series = chart.getChartData().getSeries().add(ChartType.ClusteredBar)
    stages = ["Planning", "Development", "Testing"]
    values = [10, 30, 20]
    for i, stage in enumerate(stages):
        category_cell = workbook.getCell(0, i + 1, 0, stage)
        chart.getChartData().getCategories().add(category_cell)
        value_cell = workbook.getCell(0, i + 1, 1, float(values[i]))
        series.getDataPoints().addDataPointForBarSeries(value_cell)

    # Slajd 2: wyświetl pierwszą kategorię u góry.
    category_slide = presentation.getSlides().addClone(slide)
    category_chart = category_slide.getShapes().get_Item(0)
    category_chart.getAxes().getVerticalAxis().setPlotOrderReversed(True)
    # Utrzymaj poziomą oś wartości na dole.
    category_chart.getAxes().getVerticalAxis().setCrossType(CrossesType.Maximum)

    # Slajd 3: odwróć tylko poziomą skalę numeryczną.
    value_slide = presentation.getSlides().addClone(slide)
    value_chart = value_slide.getShapes().get_Item(0)
    value_chart.getAxes().getHorizontalAxis().setPlotOrderReversed(True)

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

Odwrócenie osi może także przenieść prostopadłą oś na przeciwną stronę wykresu. setCrossType steruje, gdzie druga oś przecina konfigurowaną oś. Na slajdzie 2 wywołanie go z CrossesType.Maximum na odwróconej osi kategorii utrzymuje poziomą oś wartości na dole. Aby ustawić konkretny punkt przecięcia, użyj setCrossAt. Sprawdź ustawienia przecięcia przy zmianie kierunku, szczególnie jeśli wykres ma już własny punkt przecięcia. Wywołaj setPlotOrderReversed z False, aby przywrócić normalny kierunek rysowania; ustawienia przecięcia są osobne.

Normalna kolejność (slajd 1) Odwrócone kategorie (slajd 2) Odwrócone wartości (slajd 3)
Wykres słupkowy poziomy z normalnym porządkiem osi kategorii i wartości Wykres słupkowy poziomy z kategoriami wyświetlanymi od góry do dołu Wykres słupkowy poziomy z odwróconą osią wartości i zerem po prawej
Kategorie przebiegają od dołu do góry; wartości rosną od lewej do prawej. Planning, Development i Testing przebiegają od góry do dołu. Wartości i kolejność wierszy w skoroszycie pozostają niezmienione. Kategorie zachowują normalny porządek; wartości rosną od prawej do lewej. Oś kategorii przecina zero po prawej stronie.

Ukryj pionową oś dla wykresów liniowych

Wywołaj setVisible z False na pionowej osi, aby ją ukryć. Przykład tworzy wykres liniowy z domyślnymi danymi i zapisuje go z ukrytą pionową osią.

import jpype
import asposeslides

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

from asposeslides.api import Presentation, ChartType, SaveFormat

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

    chart = slide.getShapes().addChart(ChartType.Line, 100, 100, 400, 300)
    chart.getAxes().getVerticalAxis().setVisible(False)

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

Ukryj poziomą oś dla wykresów liniowych

Wywołaj setVisible z False na poziomej osi, aby ją ukryć. Przykład tworzy wykres liniowy z domyślnymi danymi i zapisuje go z ukrytą poziomą osią.

import jpype
import asposeslides

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

from asposeslides.api import Presentation, ChartType, SaveFormat

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

    chart = slide.getShapes().addChart(ChartType.Line, 100, 100, 400, 300)
    chart.getAxes().getHorizontalAxis().setVisible(False)

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

Zmień oś kategorii

Użyj setCategoryAxisType, aby wybrać datową lub tekstową oś kategorii. Ten przykład wymaga ExistingChart.pptx, z wykresem jako pierwszym kształtem na pierwszym slajdzie i komórkami kategorii zawierającymi numeryczne wartości dat Excel. Zmienia poziomą oś na oś datową. Wywołanie setAutomaticMajorUnit z False, setMajorUnit z 1 i setMajorUnitScale z TimeUnitType.Months ustawia główne podziały w odstępach jednego miesiąca.

import jpype
import asposeslides

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

from asposeslides.api import Presentation, SaveFormat, CategoryAxisType, TimeUnitType

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

    chart = slide.getShapes().get_Item(0)
    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)
finally:
    presentation.dispose()

Kontroluj interwały etykiet osi kategorii

Gdy wykres ma wiele kategorii, zmniejsz liczbę widocznych etykiet osi bez usuwania kategorii lub punktów danych. Wywołaj setAutomaticTickLabelSpacing z False, a następnie przekaż żądany interwał kategorii do setTickLabelSpacing. Dla tekstowych kategorii w ich normalnym porządku liczenie zaczyna się od pierwszej kategorii:

Interwał Etykiety wyświetlane w przykładzie
1 Kategoria 1, Kategoria 2, Kategoria 3, … Kategoria 24
2 Kategoria 1, Kategoria 3, Kategoria 5, … Kategoria 23
3 Kategoria 1, Kategoria 4, Kategoria 7, … Kategoria 22

Interwał 3 wyświetla co trzecią etykietę, pozostawiając dwie ukryte między wyświetlanymi. Nie usuwa to odpowiadających kolumn. Automatyczne rozmieszczenie wybiera interwał na podstawie dostępnej przestrzeni; niekoniecznie wyświetla każdą etykietę.

Znaczniki podziałek mają oddzielne sterowanie. Wywołaj setAutomaticTickMarksSpacing z False i użyj setTickMarksSpacing, aby ustawić ich interwał. Na przykład 1 utrzymuje znacznik podziałki przy każdym interwale kategorii, podczas gdy etykiety pojawiają się tylko co trzecią kategorię. Użyj setMajorTickMark z widocznym stylem, aby zobaczyć efekt. Wywołanie ponownie któregokolwiek z automatycznych setterów z True pozwala wykresowi ponownie wybrać ten interwał.

Poniższy, samodzielny przykład tworzy 24 kategorie i jedną serię, a następnie zapisuje trzy slajdy w CategoryAxisIntervals.pptx: automatyczne rozmieszczenie, ręczne rozmieszczenie etykiet z niezależnymi znacznikami podziałek oraz przywrócone automatyczne rozmieszczenie. Dwie kopie zachowują pierwotne dane wykresu. Nie wymaga wejściowej prezentacji. Poziomy tekst etykiet ułatwia dostrzeżenie różnicy w gęstości.

import jpype
import asposeslides

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

from asposeslides.api import Presentation, ChartType, SaveFormat, CategoryAxisType, TickMarkType

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

    chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 30, 40, 660, 320)

    chart.setLegend(False)
    chart.getChartData().getCategories().clear()
    chart.getChartData().getSeries().clear()

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

    series = chart.getChartData().getSeries().add(ChartType.ClusteredColumn)
    for i in range(24):
        category_cell = workbook.getCell(0, i + 1, 0, f"Category {i + 1}")
        chart.getChartData().getCategories().add(category_cell)
        value_cell = workbook.getCell(0, i + 1, 1, float(10 + i % 6 * 5))
        series.getDataPoints().addDataPointForBarSeries(value_cell)

    axis = chart.getAxes().getHorizontalAxis()
    axis.setCategoryAxisType(CategoryAxisType.Text)
    axis.getTextFormat().getTextBlockFormat().setRotationAngle(0)
    axis.getTextFormat().getPortionFormat().setFontHeight(12)
    axis.setMajorTickMark(TickMarkType.Outside)
    axis.setAutomaticTickLabelSpacing(True)
    axis.setAutomaticTickMarksSpacing(True)

    # Slajd 2: pokaż co trzecią etykietę, ale pozostaw znacznik podziałki dla każdej kategorii.
    manual_slide = presentation.getSlides().addClone(slide)
    manual_chart = manual_slide.getShapes().get_Item(0)
    manual_axis = manual_chart.getAxes().getHorizontalAxis()
    manual_axis.setAutomaticTickLabelSpacing(False)
    manual_axis.setTickLabelSpacing(3)
    manual_axis.setAutomaticTickMarksSpacing(False)
    manual_axis.setTickMarksSpacing(1)

    # Slajd 3: pozwól wykresowi ponownie wybrać oba interwały.
    restored_slide = presentation.getSlides().addClone(manual_slide)
    restored_chart = restored_slide.getShapes().get_Item(0)
    restored_chart.getAxes().getHorizontalAxis().setAutomaticTickLabelSpacing(True)
    restored_chart.getAxes().getHorizontalAxis().setAutomaticTickMarksSpacing(True)

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

Automatyczne rozmieszczenie (slajd 1): W tym renderingu każda druga etykieta kategorii jest wyświetlana i zawija się na dwie linie. Wynik automatyczny może się różnić w zależności od rozmiaru wykresu, czcionek i renderera.

Automatyczne rozmieszczenie etykiet kategorii przy wszystkich 24 widocznych kolumnach

Ręczne rozmieszczenie (slajd 2): Co trzecia etykieta jest wyświetlana w jednej linii, podczas gdy znaczniki podziałek pozostają przy każdym interwale kategorii. Wszystkie 24 kolumny, w tym te bez etykiet, pozostają widoczne z tymi samymi wartościami. Slajd 3 przywraca automatyczny wygląd pokazany powyżej.

Ręczny interwał etykiet kategorii wynoszący trzy przy wszystkich 24 widocznych kolumnach

Wybierz właściwą oś i interwał

Użyj tego interwału liczby kategorii dla tekstowej osi kategorii, takiej jak oś kategorii wykresu kolumnowego, liniowego, powierzchniowego lub słupkowego. W wykresie kolumnowym jest to oś pozioma. W wykresie słupkowym poziomym oś kategorii jest pionowa, więc zastosuj te ustawienia do osi zwróconej przez getVerticalAxis. Rozstawienie znaczników podziałek ma także zastosowanie do osi serii w wykresach, które ją posiadają.

Nie używaj rozmieszczenia etykiet kategorii do ustawiania numerycznej skali osi wartości. Na osi wartości setMajorUnit określa różnicę w wartościach: np. jednostka główna 10 tworzy podziały przy 0, 10, 20 itd., gdy oś zaczyna się od zera. Interwał etykiet kategorii 3 liczy pozycje kategorii, niezależnie od ich wartości danych. Wykresy punktowe i bąbelkowe używają osi wartości, a nie tekstowej osi kategorii. Dla osi dat używaj jednostek głównych i skal opartych na czasie, jak opisano w Zmień oś kategorii.

Ustaw format daty dla wartości osi kategorii

Przykład zastępuje domyślne dane wykresu czterema rocznymi wartościami. Daty są przechowywane jako liczby seryjne OLE Automation w pierwszym arkuszu (indeks 0), obliczane jako liczba dni od 30 grudnia 1899 dla tych dat. Użyj setCategoryAxisType z CategoryAxisType.Date, wywołaj setNumberFormatLinkedToSource z False i przekaż yyyy do setNumberFormat, aby etykiety kategorii wyświetlały czterocyfrowe lata niezależnie od formatowania komórek.

from datetime import date

import jpype
import asposeslides

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

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

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

    chart = slide.getShapes().addChart(ChartType.Line, 50, 50, 450, 300)

    chart.getChartData().getCategories().clear()
    chart.getChartData().getSeries().clear()

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

    base_date = date(1899, 12, 30)

    series = chart.getChartData().getSeries().add(ChartType.Line)
    for i in range(4):
        category_date = date(2015 + i, 1, 1)
        category_value = float((category_date - base_date).days)
        category_cell = workbook.getCell(0, i + 1, 0, category_value)
        chart.getChartData().getCategories().add(category_cell)

        value_cell = workbook.getCell(0, i + 1, 1, float(i + 1))
        series.getDataPoints().addDataPointForLineSeries(value_cell)

    chart.getAxes().getHorizontalAxis().setCategoryAxisType(CategoryAxisType.Date)
    chart.getAxes().getHorizontalAxis().setNumberFormatLinkedToSource(False)
    chart.getAxes().getHorizontalAxis().setNumberFormat("yyyy")

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

Ustaw kąt obrotu tytułu osi wykresu

Wywołaj setTitle z True na pionowej osi, podaj tekst tytułu i ustaw kąt obrotu w formatowaniu bloku tekstowego tytułu. Kąt jest mierzony w stopniach; ten przykład zapisuje wykres kolumnowy z tytułem osi wartości obróconym o 90 stopni.

import jpype
import asposeslides

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

from asposeslides.api import Presentation, ChartType, SaveFormat

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

    chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300)
    chart.getAxes().getVerticalAxis().setTitle(True)
    chart.getAxes().getVerticalAxis().getTitle().addTextFrameForOverriding("Value")
    chart.getAxes().getVerticalAxis().getTitle().getTextFormat().getTextBlockFormat().setRotationAngle(90)

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

Ustaw pozycję osi na osi kategorii lub wartości

Użyj setAxisBetweenCategories, aby kontrolować, czy oś wartości przecina oś kategorii między kategoriami czy przy znacznikach podziałek kategorii. To ustawienie dotyczy osi kategorii. Przykład ustawia je na True na poziomej osi kategorii wykresu kolumnowego i zapisuje wynik.

import jpype
import asposeslides

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

from asposeslides.api import Presentation, ChartType, SaveFormat

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

    chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300)
    chart.getAxes().getHorizontalAxis().setAxisBetweenCategories(True)

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

Ustaw jednostkę wyświetlania na osi wartości wykresu

Użyj setDisplayUnit, aby skalować etykiety na osi wartości bez zmiany danych źródłowych. Przy ustawieniu DisplayUnitType na Millions, wartość 60 000 000 jest wyświetlana jako 60. Przykład tworzy wykres kolumnowy i stosuje jednostkę wyświetlania w milionach do jego pionowej osi.

import jpype
import asposeslides

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

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

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

    chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300)
    chart.getAxes().getVerticalAxis().setDisplayUnit(DisplayUnitType.Millions)

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

Skonfiguruj logarytmiczną oś wartości

Logarytmiczna oś wartości jest przydatna, gdy dodatnie wartości rozciągają się na kilka rzędów wielkości. Na przykład usługa może otrzymywać 10, 100, 1 000, 10 000 i 100 000 żądań w pięciu okresach. Na skali liniowej mniejsze wartości są blisko siebie w pobliżu zera. Skala logarytmiczna ułatwia porównanie ich względnego wzrostu: równe odległości oznaczają równe stosunki, a nie równe różnice.

Wywołaj setLogarithmic z True na osi wartości i użyj setLogBase, aby wybrać podstawę. Zmienia to sposób wyświetlania istniejących wartości; nie zmienia danych ani nie dodaje logarytmicznej linii trendu. Linia trendu reprezentuje dopasowaną zależność w danych i jest osobną funkcją.

Wybierz oś wartości i podstawę

Dla wykresu liniowego lub kolumnowego oś wartości zwraca getVerticalAxis. Dla wykresu słupkowego poziomego zwraca getHorizontalAxis. Wykresy punktowe i bąbelkowe mają dwie osie wartości, więc wybierz oś poziomą dla wartości X, oś pionową dla wartości Y lub obie. Nie stosuj skalowania logarytmicznego do osi kategorii.

Domyślna podstawa logarytmu to 10. Dla wykresów PPTX używaj podstawy od 2 do 1000 (włącznie); obsługiwane są także podstawy ułamkowe, np. 2.5. Przy podstawie 10 kolejne potęgi, takie jak 10, 100, 1 000 i 10 000, są rozmieszczone równomiernie.

Porównaj skalowanie liniowe i logarytmiczne

Poniższy, samodzielny przykład tworzy wykres liniowy z pięcioma licznikami żądań na pierwszym slajdzie, a następnie klonuje ten slajd i włącza logarytmiczną oś wartości o podstawie 10 na drugim. Oba slajdy zachowują te same dane.

import jpype
import asposeslides

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

from asposeslides.api import Presentation, ChartType, SaveFormat

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

    chart = slide.getShapes().addChart(ChartType.Line, 30, 40, 660, 200)

    chart.setLegend(False)

    chart.getChartData().getCategories().clear()
    chart.getChartData().getSeries().clear()

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

    series = chart.getChartData().getSeries().add(ChartType.Line)
    values = [10, 100, 1000, 10000, 100000]

    for i, value in enumerate(values):
        category_cell = workbook.getCell(0, i + 1, 0, f"Period {i + 1}")
        chart.getChartData().getCategories().add(category_cell)

        value_cell = workbook.getCell(0, i + 1, 1, float(value))
        series.getDataPoints().addDataPointForLineSeries(value_cell)

    # Zachowaj pierwszy slajd liniowy i zmień tylko skalę osi wartości w kopii.
    logarithmic_slide = presentation.getSlides().addClone(slide)
    logarithmic_chart = logarithmic_slide.getShapes().get_Item(0)
    value_axis = logarithmic_chart.getAxes().getVerticalAxis()
    value_axis.setLogarithmic(True)
    value_axis.setLogBase(10)

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

Skala liniowa (slajd 1): Równe odległości pionowe reprezentują równe różnice w liczbie żądań. Największa wartość dominuje wykres, utrudniając rozróżnienie mniejszych wartości.

Wykres liniowy w PowerPoint pokazujący pięć liczników żądań na osi wartości liniowej

Skala logarytmiczna (slajd 2): Równe odległości pionowe reprezentują równe stosunki. Każdy okres ma dziesięć razy więcej żądań niż poprzedni, więc punkty tworzą prostą rosnącą linię na skali o podstawie 10. Etykiety osi nadal pokazują pierwotne liczby żądań.

Te same pięć liczników żądań w PowerPoint na logarytmicznej osi wartości o podstawie 10

Obsługa zerowych i ujemnych wartości

Skala logarytmiczna może wyświetlać wyłącznie wartości ściśle dodatnie. Sprawdź dane przed jej włączeniem. Jeśli wartości zero lub ujemne są istotne, zachowaj skalę liniową lub pokaż je osobno. Jeśli wykluczenie tych wartości jest uzasadnione w analizie, wyjaśnij pominięcie. Nie zastępuj ich cicho małymi liczbami dodatnimi, ponieważ zmienia to znaczenie danych. Każde ręcznie skonfigurowane minimum lub maksimum dla logarytmicznej osi musi być również dodatnie.

FAQ

Jak ustawić wartość, w której jedna oś przecina drugą (przecięcie osi)?

Użyj setCrossType, aby wybrać zachowanie przecięcia. Aby określić numeryczną wartość przecięcia, użyj setCrossAt. Te ustawienia pozwalają przenieść przecięcie osi do odpowiedniej linii bazowej.

Jak mogę pozycjonować etykiety podziałek względem osi?

Wywołaj setTickLabelPosition używając TickLabelPositionType: Low, High, NextTo lub None. Aby kontrolować same znaczniki podziałek, użyj setMajorTickMark lub setMinorTickMark; są one oddzielne od pozycjonowania etykiet.