Inhoud

# SFDocuments.Chart service

De service Chart heeft een aantal eigenschappen en methodes voor het werken met diagrammen in Calc.Met deze methode is het mogelijk om:

- Diagram-objecten in Calc-documenten te benaderen en de eigenschappen ervan te wijzigen.

- Diagrammen toe te voegen in een Calc-document.

- Diagrammen als afbeelding te exporteren.

## Diagramnaam

Een diagram kan twee verschillende namen hebben:

- Een interne naam die toegekend wordt door LibreOffice bij het aanmaken van het object (meestal "Object 1", "Object 2", ...).

- Een door de gebruiker toegekende naam, met rechtsklikken op het object kan de Naam worden bepaald.

De service Chart gebruikt de door de gebruiker gedefinieerde naam. Als die er niet is, wordt de interne naam gebruikt.

## Service aanroep

Voordat de service Chart gebruikt kan worden, moet de bibliotheek ScriptForge eerst worden geladen of geïmporteerd:

• Basic macro's kunnen de bibliotheek ScriptForge laden met de instructie:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scripts kunnen de module scriptforge importeren met:
from scriptforge import CreateScriptService

Een instantie van de service Chart wordt aangemaakt met de service Calc door de methode Charts of methode CreateChart te gebruiken.

##### In BASIC

In dit voorbeeld wordt een instantie van een service Chart aangemaakt van een bestaand diagram in het huidige Calc-document:

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

Hier wordt met de service Chart een diagram-object aangemaakt gebaseerd op de gegevens "Sheet1.A1:C10" in het Calc-document.

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

Lees de beschrijving van de methode CreateChart voor een uitleg van de argumenten.

##### In Python

Dezelfde voorbeelden in Python:

        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")

## Eigenschappen

Naam | AlleenLezen | Type | Beschrijving
--- | --- | --- | ---
ChartType | Nee | String | Specificeert het diagramtype als een tekenreeks die één van de volgende waardes kan aannemen: "Pie", "Bar", "Donut", "Column", "Area", "Line", "XY", "Bubble", "Net ".
Deep | Nee | Boolean | Wanneer True aangeeft dat de grafiek driedimensionaal is en dat elke reeks in de z-richting is gerangschikt. Indien False worden reeksen gerangschikt, rekening houdend met slechts twee dimensies.
Dim3D | Nee | Boolean or String | Specificeert of de grafiek wordt weergegeven met 3D-elementen. Als de waarde een tekenreeks is, moet deze "Bar", "Cylinder", "Cone" of "Pyramid" zijn. Als de booleaanse waarde True is opgegeven, wordt de grafiek weergegeven met 3D-balken.
Exploded | Nee | Numeric | Specificeert hoeveel cirkelsegmenten worden verschoven ten opzichte van het middelpunt van de grafiek als een percentage van de straal. Alleen van toepassing op cirkel- en ringdiagrammen.
Filled | Nee | Boolean | Indien True, specificeert dit een gevuld netdiagram. Alleen van toepassing op netdiagrammen.
Legend | Nee | Boolean | Geeft aan of het diagram al dan niet een legenda heeft.
Percent | Nee | Boolean | Indien True, worden diagramreeksen gestapeld en telt elke categorie op tot 100%. Van toepassing op oppervlakte-, staaf-, bel-, kolom- en netdiagrammen.
Stacked | Nee | Boolean | Indien True, worden diagramreeksen gestapeld. Van toepassing op oppervlakte-, staaf-, bel-, kolom- en netdiagrammen.
Title | Nee | String | Specificeert de hoofdtitel van het diagram.
XTitle | Nee | String | Specificeert de titel van de X-as.
YTitle | Nee | String | Specificeert de titel van de Y-as.
XChartObj | Ja | UNO-object | Retourneert het object dat de grafiek vertegenwoordigt, wat een instantie is van de klasse ScChartObj .
XDiagram | Ja | UNO-object | Retourneert het com.sun.star.chart.XDiagram-object dat het diagram van de grafiek vertegenwoordigt.
XShape | Ja | UNO-object | Retourneert het com.sun.star.drawing.XShape-object dat het vorm van de grafiek vertegenwoordigt.
XTableChart | Ja | UNO-object | Retourneert het com.sun.star.table.XTableChart-object dat de gegevens vertegenwoordigt die in de grafiek worden weergegeven.

## Een diagram aanmaken

Overweeg de volgende gegevens in het bereik "A1:B6" van een blad met de naam "Rapport".

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

De onderstaande voorbeelden in Basic en Python laten zien hoe u een lijndiagram kunt maken van deze gegevens met legenda's.

##### In BASIC

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

##### In Python

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

Het diagram hoeft niet in hetzelfde blad te worden gemaakt als waar de gegevens zich bevinden. Het kan in elk bestaand blad in het huidige bestand worden gemaakt door de bladnaam op te geven in het tweede argument van de methode CreateChart.

## Methodes

Lijst met methodes in de Chart-service
ExportToFile | Resize

## ExportToFile

Slaat de grafiek op als een afbeeldingsbestand op een opgegeven locatie. Retourneert True als het afbeeldingsbestand met succes kon worden gemaakt.

### Syntaxis:

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

### Parameters:

filename: Identificeert het pad en de bestandsnaam waar de afbeelding wordt opgeslagen. Het moet de notatie volgen die is gedefinieerd in SF_FileSystem.FileNaming.

imagetype: De naam van het te maken afbeeldingstype. De volgende waardes worden geaccepteerd: "gif", "jpeg", "png" (standaard), "svg" en "tiff".

overwrite: Specificeert of het doelbestand kan worden overschreven (Standaard = False).

### Voorbeeld:

##### In BASIC

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

##### In Python

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

## Resize

Wijzigt de positie van het diagram in het huidige blad en wijzigt de breedte en hoogte. Retourneert True als het wijzigen van de grootte is gelukt.

### Syntaxis:

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

### Parameters:

xpos, ypos: Geef de nieuwe X- en Y-posities van de grafiek op. Als één van deze waardes wordt weggelaten of als er negatieve waardes worden opgegeven, blijven de overeenkomstige posities ongewijzigd.

width: Geef de nieuwe breedte van het diagram op. Als dit argument wordt weggelaten of als een negatieve waarde wordt opgegeven, blijft de grafiekbreedte ongewijzigd.

height: Geef de nieuwe hoogte van de grafiek op. Als dit argument wordt weggelaten of als een negatieve waarde wordt opgegeven, blijft de grafiekhoogte ongewijzigd.

Alle argumenten worden geleverd als gehele waardes die overeenkomen met 1/100 van een millimeter.

### Voorbeeld:

##### In BASIC

          ' Verandert alleen de X- en Y-positie
          oChart.Rezise(1000, 3000)
          ' Wijzigt alleen de breedte en hoogte van de grafiek
          oChart.Resize(, , 25000, 12500)
          ' Zoekwoordargumenten worden ondersteund
          oChart.Resize(Width := 25000, Height := 12500)

##### In Python

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

Alle ScriptForge Basic-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.

Verwante onderwerpen

SFDocuments.Calc service

Help ons, alstublieft!