LibreOffice Calc XYDiagram на BASIC: установка размера точки данных

Я хочу изменить размер точки данных в результате создания XYDiagram следующим образом.

Dim Rect As New com.sun.star.awt.Rectangle
Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress

Rect.X = 0
Rect.Y = 6666 * (x/3)

Rect.Width = 16500
Rect.Height = 6666

RangeAddress(0).Sheet = 0
RangeAddress(0).StartColumn = x+1
RangeAddress(0).StartRow = 1
RangeAddress(0).EndColumn = x+2
RangeAddress(0).EndRow = y-1

ThisComponent.Sheets(0).Charts.addNewByName(mode, Rect, RangeAddress(), False, False)
ThisComponent.Sheets(0).Charts.getByName(mode).embeddedObject.Diagram _ = ThisComponent.Sheets(0).Charts.getByName(mode).embeddedObject.createInstance("com.sun.star.chart.XYDiagram")

ThisComponent.Sheets(0).Charts.getByName(mode).embeddedObject.Diagram.HasXAxisTitle = True
ThisComponent.Sheets(0).Charts.getByName(mode).embeddedObject.Diagram.XAxisTitle.String ="Ratio"

ThisComponent.Sheets(0).Charts.getByName(mode).embeddedObject.Diagram.HasYAxisTitle = True
ThisComponent.Sheets(0).Charts.getByName(mode).embeddedObject.Diagram.YAxisTitle.String ="Cost"

ThisComponent.Sheets(0).Charts.getByName(mode).embeddedObject.Diagram.getDataRowProperties(1).lines = false

ThisComponent.Sheets(0).Charts.getByName(mode).embeddedObject.HasLegend = False

ThisComponent.Sheets(0).Charts.getByName(mode).embeddedObject.HasMainTitle = True
ThisComponent.Sheets(0).Charts.getByName(mode).embeddedObject.Title.String = mode

Этот код правильно сгенерирует диаграмму рассеяния XY, но точки слишком большие. Учитывая характер данных, которые я рисую, я хочу, чтобы код автоматически уменьшал размер точек, а не менял размер для каждого сгенерированного графика. Кто-нибудь знает, как отредактировать размер точки данных? Несколько дней я искал, как это сделать, но не нашел, похоже, не многие люди используют libreoffice calc basic.


person user3064869    schedule 02.11.2014    source источник


Ответы (1)


Похоже, у вас есть пример кода отсюда: https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Charts_in_Spreadsheets Прочтите также это: https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/UNO_Tools#Debugging_tools и получите инструмент отладки. С помощью такого инструмента вы сможете изучить полученные предметы.

Я использую инструмент XRAY и в своем примере изучаю диаграмму. Там я нашел https://www.openoffice.org/api/docs/common/ref/com/sun/star/chart/LineDiagram.html#SymbolSize и https://www.openoffice.org/api./docs/common/ref/com/sun/star/awt/Size.html.

Итак, следующий код:

 Dim Doc As Object
 Dim Charts As Object
 Dim Chart as Object
 Dim Rect As New com.sun.star.awt.Rectangle
 Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress

 Doc = ThisComponent
 Charts = Doc.Sheets(0).Charts

 Rect.X = 8000
 Rect.Y = 1000
 Rect.Width = 10000
 Rect.Height = 7000
 RangeAddress(0).Sheet = 0
 RangeAddress(0).StartColumn = 0 
 RangeAddress(0).StartRow = 0
 RangeAddress(0).EndColumn = 1
 RangeAddress(0).EndRow = 11

 with Charts
  if not .hasByName("MyChart") then .addNewByName("MyChart", Rect, RangeAddress(), True, True)
  Chart = .getByName("MyChart").embeddedObject
 end with
 Chart.Diagram = Chart.createInstance("com.sun.star.chart.XYDiagram")
 'xray Chart.Diagram

 Dim Size as new com.sun.star.awt.Size
 with Size
  .Height = 150
  .Width = 150
 end with

 Chart.Diagram.SymbolSize = Size

создаст: введите описание изображения здесь

person Axel Richter    schedule 05.11.2014