Contenuto

# Servizio SFDocuments.Chart

Il servizio Chart fornisce un insieme di proprietà e metodi per gestire i grafici nei documenti di Calc. Con questo servizio potete:

- Accedere agli oggetti di tipo grafico nei documenti di Calc e manipolare le loro proprietà.

- Creare e inserire nuovi grafici in un documento di Calc.

- Esportare i grafici in file di tipo immagine.

## Nomi del grafico

I grafici possono avere due nomi differenti:

- Un nome interno assegnato da LibreOfficeDev nel momento in cui il grafico è stato creato (di solito "Oggetto 1", "Oggetto 2" e così via).

- Un nome personalizzato, che potete definire facendo clic col pulsante destro del mouse sul grafico e selezionando Nome nel menu contestuale.

Il servizio Chart utilizza principalmente il nome personalizzato per accedere a un oggetto di tipo grafico. Se esso non esiste, usa il nome interno.

## Invocazione del servizio

Prima di usare il servizio Chart è necessario caricare o importare le librerie ScriptForge:

• Le macro in Basic richiedono il caricamento della libreria ScriptForge usando la seguente istruzione:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Gli script in Python richiedono un'importazione dal modulo scriptforge:
from scriptforge import CreateScriptService

Il servizio Chart è invocato da un'istanza del servizio Calc usando il metodo Charts o CreateChart.

##### In Basic

L'esempio sottostante crea un'istanza del servizio Chart da un grafico esistente nel documento corrente di Calc:

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

L'esempio seguente istanzia il servizio Chart creando un nuovo oggetto di tipo grafico basato sui dati contenuti nell'intervallo "Sheet1.A1:C10".

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

Leggere la descrizione del metodo CreateChart per saperne di più in merito ai suoi argomenti.

##### In Python

Gli esempi qui sopra possono essere scritti in Python come segue:

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

## Proprietà

Nome | Sola lettura | Tipo | Descrizione
--- | --- | --- | ---
ChartType | No | String | Specifica il tipo di grafico in formato stringa che può assumere uno dei seguenti valori: "Pie", "Bar", "Donut", "Column", "Area", "Line", "XY", "Bubble", "Net".
Deep | No | Boolean | Se impostato suTrue indica che il grafico è tridimensionale e ogni serie è disposta nella direzione z. Se è impostato su False le serie sono disposte considerando solamente due dimensioni.
Dim3D | No | Boolean or String | Specifica se il grafico è visualizzato con elementi 3D. Se il valore è una stringa deve essere uno tra "Bar", "Cylinder", "Cone" o "Pyramid". Se è specificato il valore logico True, il grafico sarà visualizzato usando delle barre 3D.
Exploded | No | Numeric | Specifica quante fette della torta si discostano dal centro del grafico, in formato di percentuale del raggio. È applicabile solo ai grafici di tipo a torta e ciambella.
Filled | No | Boolean | Se impostato su True, indica un grafico a rete pieno. È applicabile solo ai grafici a rete.
Legend | No | Boolean | Specifica se il grafico possiede o no una legenda.
Percent | No | Boolean | Se impostato su True, le serie del grafico sono impilate e ogni categoria viene sommata fino al massimo del 100%. È applicabile ai grafici ad area, barre, bolle, colonne e rete.
Stacked | No | Boolean | Se impostato su True, le serie del grafico sono impilate. È applicabile ai grafici ad area, barre, bolle, colonne e rete.
Title | No | String | Specifica il titolo principale del grafico.
XTitle | No | String | Specifica il titolo dell'asse X.
YTitle | No | String | Specifica il titolo dell'asse Y.
XChartObj | Sì | Oggetto UNO | Restituisce l'oggetto che rappresenta il grafico, che è un'istanza della classe ScChartObj.
XDiagram | Sì | Oggetto UNO | Restituisce l'oggetto com.sun.star.chart.XDiagram che rappresenta il diagramma del grafico.
XShape | Sì | Oggetto UNO | Restituisce l'oggetto com.sun.star.drawing.XShape che rappresenta la forma del grafico.
XTableChart | Sì | Oggetto UNO | Restituisce l'oggetto com.sun.star.table.XTableChart che rappresenta i dati visualizzati nel grafico.

## Creazione di un grafico

Ipotizzate i seguenti dati nell'intervallo "A1:B6" di un foglio denominato "Report".

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

Gli esempi sottostanti in Basic e Python illustrano come creare un grafico a linea da questi dati, con una legenda.

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

Non è necessario creare il grafico nello stesso foglio in cui si trovano i dati. Potete crearlo in qualsiasi foglio esistente nel file corrente specificando il nome del foglio nel secondo argomento del metodo CreateChart.

## Metodi

Elenco dei metodi del servizio Chart
ExportToFile | Resize

## ExportToFile

Salva il grafico in un file di immagine all'interno del percorso specificato. Restituisce True se la creazione del file con l'immagine va a buon fine.

### Sintassi:

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

### Parametri:

filename: identifica il percorso e il nome del file in cui sarà salvata l'immagine. Deve rispettare la notazione definita in SF_FileSystem.FileNaming.

imagetype: il nome del tipo di immagine da creare. Sono ammessi i seguenti valori: "gif", "jpeg", "png" (predefinito), "svg" e "tiff".

overwrite: specifica se il file di destinazione può essere sovrascritto (predefinito = False).

### Esempio:

##### 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

Cambia la posizione del grafico all'interno del foglio corrente e ne modifica larghezza e altezza. Restituisce True se il ridimensionamento va a buon fine.

### Sintassi:

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

### Parametri:

xpos, ypos: specifica le nuove posizioni delle coordinate X e Y del grafico. Se uno di questi valori viene omesso o se vengono forniti dei valori negativi, le posizioni corrispondenti rimangono immutate.

width: specifica la nuova larghezza del grafico. Se questo argomento viene omesso o se viene fornito un valore negativo, la larghezza del grafico rimane immutata.

height: specifica la nuova altezza del grafico. Se questo argomento viene omesso o se viene fornito un valore negativo, l'altezza del grafico rimane immutata.

Tutti gli argomenti sono espressi con valori interi che corrispondono a 1/100 di millimetro.

### Esempio:

##### In Basic

          ' Modifica solo le posizioni X e Y
          oChart.Rezise(1000, 3000)
          ' Modifica solo la larghezza e l'altezza del grafico
          oChart.Resize(, , 25000, 12500)
          ' Sono supportati argomenti con parole chiave
          oChart.Resize(Width := 25000, Height := 12500)

##### In Python

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

Tutte le routine e gli identificatori Basic di ScriptForge che iniziano con un carattere di sottolineatura "_" sono riservati per uso interno. Non è previsto il loro utilizzo nelle macro in Basic o negli script in Python.

Argomenti correlati

Servizio SFDocuments.Calc

Sostienici!