Obsah

# Služba SFDocuments.Chart

Služba Chart poskytuje sadu vlastností a metod pro obsluhu grafů v dokumentech Calcu. Umožňuje:

- Přistupovat k objektům s grafy v dokumentech Calcu a měnit jejich vlastnosti.

- Vytvářet nové grafy a vkládat je do dokumentu Calcu.

- Exportovat grafy jako soubory s obrázkem.

## Názvy grafu

Grafy mohou mít dva různé názvy:

- Interní název, který grafu určí LibreOffice, jakmile je objekt s grafem vytvořen (obvykle "Object 1", "Object 2" atd.).

- Uživatelem definovaný název, který lze určit po klepnutí pravým tlačítkem na graf a volbou Název v místní nabídce.

Služba Chart používá pro přístup k objektu s grafem přednostně uživatelem definovaný název. Pokud však neexistuje, použije se interní název.

## Volání služby

Před používáním služby Chart je nutné načíst či naimportovat knihovnu ScriptForge pomocí:

• V makrech Basicu je nutné načíst knihovnu ScriptForge následujícím příkazem:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Ve skriptech Pythonu je nezbytné import z modulu scriptforge:
from scriptforge import CreateScriptService

Instance služby Chart je vytvořena z instance služby Calc pomocí metodyCharts nebo CreateChart.

##### V Basicu

V příkladu níže je vytvořena instance služby Chart z existujícího grafu v aktuálním dokumentu Calcu.

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim oDoc as Object, oChart as Object
        Set oDoc = CreateScriptService("Calc")
        Set oChart = oDoc.Charts("Sheet1", "Object 1")

V následujícím příkladu je vytvořena instance služby Chart tím, že se vytvoří objekt z grafem založeným na datech z oblasti "Sheet1.A1:C10".

        Dim oDoc as Object, oChart as Object
        Set oDoc = CreateScriptService("Calc")
        Set oChart = oDoc.CreateChart("My Chart", "Sheet1", "Sheet1.A1:C10")

Podrobnosti o argumentech metody CreateChart obsahuje její popis.

##### V Pythonu

V Pythonu lze tyto příklady zapsat následovně:

        from scriptforge import CreateScriptService
        doc = CreateScriptService("Calc")
        chart = doc.Charts("Sheet1", "Object 1")

        doc = CreateScriptService("Calc")
        chart = doc.CreateChart("My Chart", "Sheet1", "Sheet1.A1:C10")

## Vlastnosti

Název | Pouze pro čtení | Typ | Popis
--- | --- | --- | ---
ChartType | ne | String | Určuje typ grafu jako řetězec, který může nabývat některé z následujících hodnot: "Pie" (výsečový), "Bar" (řádkový), "Donut" (prstencový), "Column" (sloupcový), "Area" (plošný), "Line" (čárový), "XY" (bodový), "Bubble" (bublinový) nebo "Net" (paprskový).
Deep | ne | Boolean | Je-li True, značí, že graf je trojrozměrný a že každá řada je umístěna ve směru osy Z. Je-li False, jsou řady umístěna pouze ve dvou rozměrech.
Dim3D | ne | Boolean or String | Určuje, zda je graf zobrazen s trojrozměrnými prvky. Pokud je hodnotou řetězec, musí nabývat hodnoty "Bar" (kvádr), "Cylinder" (válec), "Cone" (kužel) nebo "Pyramid" (jehlan). Je-li určena booleovská hodnota True, graf se zobrazí s kvádry.
Exploded | ne | Numeric | Určuje v procentech poloměru, jak jsou výseče posunuty od středu grafu. Týká se pouze výsečových a prstencových grafů.
Filled | ne | Boolean | Je-li True, určuje, že paprskový graf je vyplněný. Týká se pouze paprskových grafů.
Legend | ne | Boolean | Určuje, zda má graf legendu.
Percent | ne | Boolean | Je-li True, řady grafu se poskládají na sebe a součet každé kategorie bude 100 %. Týká se plošných, řádkových, bublinových, sloupcových a paprskových grafů.
Stacked | ne | Boolean | Je-li True, řady grafu se poskládají na sebe. Týká se plošných, řádkových, bublinových, sloupcových a paprskových grafů.
Title | ne | String | Určuje hlavní nadpis grafu.
XTitle | ne | String | Určuje popis osy X.
YTitle | ne | String | Určuje popis osy Y.
XChartObj | ano | Objekt UNO | Vrátí objekt představující graf, který je instancí třídy ScChartObj.
XDiagram | ano | Objekt UNO | Vrátí objekt com.sun.star.chart.XDiagram představující diagram grafu.
XShape | ano | Objekt UNO | Vrátí objekt com.sun.star.drawing.XShape představující tvar grafu.
XTableChart | ano | Objekt UNO | Vrátí objekt com.sun.star.table.XTableChart představující v grafu zobrazená data.

## Vytvoření grafu

Oblast "A1:B6" na listu pojmenovaném "Report" obsahuje následující data:

| A | B
--- | --- | ---
1 | Sample A | Sample B
2 | 36 | 40
3 | 39 | 43
4 | 45 | 40
5 | 52 | 48

Následující příklady v Basicu a Pythonu ukazují, jak z těchto dat vytvořit čárový graf s legendou.

##### V Basicu

        oDoc = CreateScriptService("Calc")
        oChart = oDoc.CreateChart("Samples", "Report", "Report.A1:B6")
        oChart.ChartType = "Line"
        oChart.Legend = True
        oChart.Resize(1000, 1000, 25000, 15000)

##### V Pythonu

        doc = CreateScriptService("Calc")
        chart = doc.CreateChart("Samples", "Report", "Report.A1:B6")
        chart.ChartType = "Line"
        chart.Legend = True
        chart.Resize(1000, 1000, 25000, 15000)

Není nutné, aby byl graf vytvořen na témže listu jako data. Na libovolném existujícím listu aktuálního souboru jej lze vytvořit tím, že uvedete název listu jako druhý argument metody CreateChart.

## Metody

Seznam metod služby Chart
ExportToFile | Resize

## ExportToFile

Uloží graf na zadané umístění jako soubor obrázku. V případě úspěšného vytvoření souboru vrátí True.

### Syntaxe:

chart.ExportToFile(filename: str, imagetype: str = "png", overwrite: bool = False): bool

### Parametry:

filename: Určuje cestu a název souboru, kam se má obrázek uložit. Musí odpovídat zápisu SF_FileSystem.FileNaming.

imagetype: Název typu obrázku, který se má vytvořit. Použít lze následující hodnoty: "gif", "jpeg", "png" (výchozí), "svg" a "tiff".

overwrite: Určuje, zda se může cílový soubor přepsat (výchozí = False).

### Příklad:

##### V Basicu

          oChart.ExportToFile("C:\Temp\myChart.svg", ImageType := "svg", Overwrite := True)

##### V Pythonu

          chart.ExportToFile(r"C:\Temp\myChart.svg", imagetype="svg", overwrite=True)

## Resize

Změní šířku a výšku grafu a jeho umístění na aktuálním listu. V případě úspěšné změny velikosti vrátí True.

### Syntaxe:

chart.Resize([xpos: int], [ypos: int], [width: int], [height: int]): bool

### Parametry:

xpos, ypos: Určuje souřadnice X a Y nového umístění grafu. Je-li některá z těchto hodnot vynechána nebo jsou-li zadány záporné hodnoty, umístění se nezmění.

width: Určuje novou šířku grafu. Je-li tento argument vynechán nebo je-li zadána záporná hodnota, šířka grafu se nezmění.

height: Určuje novou výšku grafu. Je-li tento argument vynechán nebo je-li zadána záporná hodnota, výška grafu se nezmění.

Všechny argumenty se zadávají jako celočíselné hodnoty, jednotka odpovídá 1/100 milimetru.

### Příklad:

##### V Basicu

          ' Změní pouze umístění X a Y
          oChart.Rezise(1000, 3000)
          ' Změní pouze šířku a výšku grafu
          oChart.Resize(, , 25000, 12500)
          ' Podporovány jsou názvy argumentů
          oChart.Resize(Width := 25000, Height := 12500)

##### V Pythonu

          chart.Rezise(1000, 3000)
          chart.Resize(-1, -1, 20000, 20000)
          chart.Resize(width=25000, height=12500)

Všechny procedury nebo identifikátory knihovny ScriptForge, které jsou uvozeny podtržítkem "_", jsou určeny pro interní použití. Není zamýšleno je používat v makrech Basicu nebo skriptech Pythonu.

Související témata

Služba SFDocuments.Calc