Съдържание

# Услуга SFDocuments.Chart

Услугата Chart предоставя набор от свойства и методи за боравене с диаграми в документи на Calc. С тази услуга е възможно:

- да се осъществява достъп до обекти диаграми в документи на Calc и да се променят свойствата им;

- да се създават и вмъкват нови диаграми в документ на Calc;

- да се експортират диаграми като файлове с изображения.

## Имена на диаграми

Диаграмите могат да имат две различни имена:

- вътрешно име, дадено от LibreOffice веднага след създаването на обекта диаграма (обикновено "Object 1", "Object 2" и т.н.)

- дефинирано от потребителя име, което може да бъде зададено чрез щракване с десния бутон върху диаграмата и избиране на Име в контекстното меню.

Услугата Chart използва за достъп до обектите диаграми предимно зададените от потребителя имена. Ако такова име не съществува, тогава се използва вътрешното.

## Извикване на услугата

Преди да използвате услугата Chart, библиотеката ScriptForge трябва да бъде заредена или импортирана:

• Макросите на Basic изискват зареждане на библиотеката ScriptForge чрез следния оператор:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Скриптовете на Python изискват импортиране от модула scriptforge:
from scriptforge import CreateScriptService

Екземпляри на услугата Chart се получават от екземпляр на услугата Calc чрез метода Charts или CreateChart.

##### В Basic

Примерът по-долу създава екземпляр на услугата Chart от съществуваща диаграма в текущия документ на Calc:

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

Следващият пример получава екземпляр на услугата Chart, като създава нов обект диаграма въз основа на данните, съдържащи се в диапазона "Sheet1.A1:C10".

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

Прочетете описанието на метода CreateChart, за да научите повече за аргументите му.

##### В Python

Примерите по-горе могат да бъдат написани на 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")

## Свойства

Име | Само за четене | Тип | Описание
--- | --- | --- | ---
ChartType | Не | String | Указва типа на диаграмата като низ, който може да приема една от следните стойности: "Pie" (кръгова), "Bar" (лентова), "Donut" (пръстеновидна), "Column" (колонна), "Area" (площна), "Line" (линейна), "XY" (точкова), "Bubble" (мехурчеста), "Net" (радиална).
Deep | Не | Boolean | Когато е True, показва, че диаграмата е триизмерна и всяка от сериите е подредена в посока z. Когато е False, сериите се разполагат само в две измерения.
Dim3D | Не | Boolean or String | Указва дали диаграмата се показва с триизмерни елементи. Ако стойността е низ, трябва да бъде "Bar" (блок), "Cylinder" (цилиндър), "Cone" (конус) или "Pyramid" (пирамида). Ако е зададена булева стойност True, диаграмата се показва с триизмерни блокове.
Exploded | Не | Numeric | Указва колко да бъдат изместени кръговите сегменти от центъра на диаграмата като процент от радиуса. Приложим е само за кръгови и пръстеновидни диаграми.
Filled | Не | Boolean | Когато е True, указва запълнена радиална диаграма. Приложим е само за радиални диаграми.
Legend | Не | Boolean | Указва дали диаграмата да има легенда.
Percent | Не | Boolean | Когато е True, сериите в диаграмата се наслагват и сумата на всяка категория е 100%. Приложим за площни, лентови, мехурчести, колонни и радиални диаграми.
Stacked | Не | Boolean | Когато е True, сериите в диаграмата се наслагват. Приложим за площни, лентови, мехурчести, колонни и радиални диаграми.
Title | Не | String | Указва основното заглавие на диаграмата.
XTitle | Не | String | Указва заглавието на оста X.
YTitle | Не | String | Указва заглавието на оста Y.
XChartObj | Да | UNO обект | Връща обекта, представящ диаграмата, който е екземпляр на класа ScChartObj.
XDiagram | Да | UNO обект | Връща обекта com.sun.star.chart.XDiagram, който представя графиката на диаграмата.
XShape | Да | UNO обект | Връща обекта com.sun.star.drawing.XShape, който представя фòрмата на диаграмата.
XTableChart | Да | UNO обект | Връща обекта com.sun.star.table.XTableChart, който представя данните, показани в диаграмата.

## Създаване на диаграма

Да кажем, че следните данни се намират в диапазона "A1:B6" на лист с име "Report".

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

Примерите по-долу на Basic и на Python показват как да създадете линейна диаграма с легенда от тези данни.

##### В Basic

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

##### В Python

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

Не е необходимо диаграмата да бъде в същия лист, в който се намират данните. Тя може да бъде създадена във всеки съществуващ лист на текущия файл, като се зададе името на листа във втория аргумент на метода CreateChart.

## Методи

Списък с методи на услугата Chart
ExportToFile | Resize

## ExportToFile

Записва диаграмата като файл с изображение в зададено местоположение. Връща True, ако файлът с изображението е успешно създаден.

### Синтаксис:

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

### Параметри:

filename: определя пътя и името на файла, в който да се запише изображението. Трябва да следва нотацията, зададена с SF_FileSystem.FileNaming.

imagetype: името на типа на създаваното изображение. Допускат се следните стойности: "gif", "jpeg", "png" (подразбира се), "svg" and "tiff".

overwrite: указва дали файлът местоназначение може да бъде презаписан (подразбира се False).

### Пример:

##### В Basic

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

##### В Python

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

## Resize

Променя позицията на диаграмата в текущия лист, както и ширината и височината ѝ. Връща True, ако преоразмеряването е било успешно.

### Синтаксис:

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

### Параметри:

xpos, ypos: указват новата позиция на диаграмата по X и Y. Ако някоя от тези стойности е пропусната или ако са подадени отрицателни стойности, съответната позиция остава непроменена.

width: указва новата ширина на диаграмата. Ако този аргумент е пропуснат или е подадена отрицателна стойност, ширината на диаграмата остава непроменена.

height: указва новата височина на диаграмата. Ако този аргумент е пропуснат или е подадена отрицателна стойност, височината на диаграмата остава непроменена.

Всички аргументи се подават като целочислени стойности в стотни от милиметъра.

### Пример:

##### В Basic

          ' Променя само позицията по X и Y.
          oChart.Rezise(1000, 3000)
          ' Променя само ширината и височината на диаграмата.
          oChart.Resize(, , 25000, 12500)
          ' Поддържат се аргументи с ключова дума.
          oChart.Resize(Width := 25000, Height := 12500)

##### В Python

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

В ScriptForge всички подпрограми или идентификатори на Basic с префикс „_“ са запазени за вътрешна употреба. Те не са предназначени за използване в макроси на Basic.

Теми, свързани с показаната

Услуга SFDocuments.Calc