From bb2945ba81fa1794314cf1f24bbd6732573a0500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Fri, 9 Sep 2016 00:23:11 +0800 Subject: [PATCH] Added charts to correlation and paired T-test. --- 1CorRel.vb | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 2PTTest.vb | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 3ITTest.vb | 2 +- 4ANOVA.vb | 2 +- 5Chi2GoF.vb | 2 +- 5 files changed, 123 insertions(+), 5 deletions(-) diff --git a/1CorRel.vb b/1CorRel.vb index 6138e9f..8ce4529 100644 --- a/1CorRel.vb +++ b/1CorRel.vb @@ -55,12 +55,71 @@ Sub subRunCorrelation As Object ' Reports the paired T-test. subReportCorrelation (ThisComponent, mRanges (0), mRanges (1)) + oSheet = oSheets.getByName (sSheetName & "_correl") + + ' Adds an X-Y diagram. + subAddChart (oSheet, mRanges (0), mRanges (1)) ' Makes the report sheet active. - oSheet = oSheets.getByName (sSheetName & "_correl") ThisComponent.getCurrentController.setActiveSheet (oSheet) End Sub +' subAddChart: Adds a chart for the data +Sub subAddChart (oSheet As Object, oDataXRange As Object, oDataYRange As Object) + Dim oCharts As Object, oChart As Object + Dim oChartDoc As Object, oDiagram As Object + Dim aPos As New com.sun.star.awt.Rectangle + Dim mAddrs (1) As New com.sun.star.table.CellRangeAddress + Dim sTitle As String + Dim oProvider As Object, oData As Object + Dim sRange As String, mData () As Object + + ' Adds the chart + With aPos + .X = 0 + .Y = 3510 + .Width = 10000 + .Height = 10000 + End With + mAddrs (0) = oDataXRange.getRangeAddress + mAddrs (1) = oDataYRange.getRangeAddress + oCharts = oSheet.getCharts + oCharts.addNewByName (oSheet.getName, aPos, mAddrs, True, False) + oChart = oCharts.getByName (oSheet.getName) + oChartDoc = oChart.getEmbeddedObject + + BasicLibraries.loadLibrary "XrayTool" + oDiagram = oChartDoc.createInstance ( _ + "com.sun.star.chart.XYDiagram") + oDiagram.setPropertyValue ("Lines", False) + oDiagram.setPropertyValue ("HasXAxisGrid", False) + oDiagram.setPropertyValue ("HasYAxisGrid", False) + sTitle = oDataXRange.getCellByPosition (0, 0).getString + oDiagram.getXAxisTitle.setPropertyValue ("String", sTitle) + sTitle = oDataYRange.getCellByPosition (0, 0).getString + oDiagram.getYAxisTitle.setPropertyValue ("String", sTitle) + oChartDoc.setDiagram (oDiagram) + + oProvider = oChartDoc.getDataProvider + mData = oChartDoc.getDataSequences + sRange = oDataXRange.getCellByPosition(0, 0).getPropertyValue ("AbsoluteName") + oData = oProvider.createDataSequenceByRangeRepresentation (sRange) + mData (0).setLabel (oData) + sRange = oDataXRange.getCellRangeByPosition(0, 1, 0, oDataXRange.getRows.getCount - 1).getPropertyValue ("AbsoluteName") + oData = oProvider.createDataSequenceByRangeRepresentation (sRange) + oData.Role = "values-x" + mData (0).setValues (oData) + sRange = oDataYRange.getCellByPosition(0, 0).getPropertyValue ("AbsoluteName") + oData = oProvider.createDataSequenceByRangeRepresentation (sRange) + mData (1).setLabel (oData) + sRange = oDataYRange.getCellRangeByPosition(0, 1, 0, oDataYRange.getRows.getCount - 1).getPropertyValue ("AbsoluteName") + oData = oProvider.createDataSequenceByRangeRepresentation (sRange) + oData.Role = "values-y" + mData (1).setValues (oData) + + oChartDoc.setPropertyValue ("HasLegend", False) +End Sub + ' subReportCorrelation: Reports the Pearson’s correlation coefficient Sub subReportCorrelation (oDoc As Object, oDataXRange As Object, oDataYRange As Object) Dim oSheets As Object, sSheetName As String diff --git a/2PTTest.vb b/2PTTest.vb index b1a0ac4..6f60403 100644 --- a/2PTTest.vb +++ b/2PTTest.vb @@ -55,12 +55,71 @@ Sub subRunPairedTTest As Object ' Reports the paired T-test. subReportPairedTTest (ThisComponent, mRanges (0), mRanges (1)) + oSheet = oSheets.getByName (sSheetName & "_ttest") + + ' Adds an X-Y diagram. + subAddChart (oSheet, mRanges (0), mRanges (1)) ' Makes the report sheet active. - oSheet = oSheets.getByName (sSheetName & "_ttest") ThisComponent.getCurrentController.setActiveSheet (oSheet) End Sub +' subAddChart: Adds a chart for the data +Sub subAddChart (oSheet As Object, oDataXRange As Object, oDataYRange As Object) + Dim oCharts As Object, oChart As Object + Dim oChartDoc As Object, oDiagram As Object + Dim aPos As New com.sun.star.awt.Rectangle + Dim mAddrs (1) As New com.sun.star.table.CellRangeAddress + Dim sTitle As String + Dim oProvider As Object, oData As Object + Dim sRange As String, mData () As Object + + ' Adds the chart + With aPos + .X = 0 + .Y = 10000 + .Width = 10000 + .Height = 10000 + End With + mAddrs (0) = oDataXRange.getRangeAddress + mAddrs (1) = oDataYRange.getRangeAddress + oCharts = oSheet.getCharts + oCharts.addNewByName (oSheet.getName, aPos, mAddrs, True, False) + oChart = oCharts.getByName (oSheet.getName) + oChartDoc = oChart.getEmbeddedObject + + BasicLibraries.loadLibrary "XrayTool" + oDiagram = oChartDoc.createInstance ( _ + "com.sun.star.chart.XYDiagram") + oDiagram.setPropertyValue ("Lines", False) + oDiagram.setPropertyValue ("HasXAxisGrid", False) + oDiagram.setPropertyValue ("HasYAxisGrid", False) + sTitle = oDataXRange.getCellByPosition (0, 0).getString + oDiagram.getXAxisTitle.setPropertyValue ("String", sTitle) + sTitle = oDataYRange.getCellByPosition (0, 0).getString + oDiagram.getYAxisTitle.setPropertyValue ("String", sTitle) + oChartDoc.setDiagram (oDiagram) + + oProvider = oChartDoc.getDataProvider + mData = oChartDoc.getDataSequences + sRange = oDataXRange.getCellByPosition(0, 0).getPropertyValue ("AbsoluteName") + oData = oProvider.createDataSequenceByRangeRepresentation (sRange) + mData (0).setLabel (oData) + sRange = oDataXRange.getCellRangeByPosition(0, 1, 0, oDataXRange.getRows.getCount - 1).getPropertyValue ("AbsoluteName") + oData = oProvider.createDataSequenceByRangeRepresentation (sRange) + oData.Role = "values-x" + mData (0).setValues (oData) + sRange = oDataYRange.getCellByPosition(0, 0).getPropertyValue ("AbsoluteName") + oData = oProvider.createDataSequenceByRangeRepresentation (sRange) + mData (1).setLabel (oData) + sRange = oDataYRange.getCellRangeByPosition(0, 1, 0, oDataYRange.getRows.getCount - 1).getPropertyValue ("AbsoluteName") + oData = oProvider.createDataSequenceByRangeRepresentation (sRange) + oData.Role = "values-y" + mData (1).setValues (oData) + + oChartDoc.setPropertyValue ("HasLegend", False) +End Sub + ' subReportPairedTTest: Reports the paired T-test Sub subReportPairedTTest (oDoc As Object, oDataXRange As Object, oDataYRange As Object) Dim oSheets As Object, sSheetName As String diff --git a/3ITTest.vb b/3ITTest.vb index b51a726..8ce16e6 100644 --- a/3ITTest.vb +++ b/3ITTest.vb @@ -72,9 +72,9 @@ Sub subRunIndependentTTest As Object ' Reports the independent T-test. subReportIndependentTTest (ThisComponent, mRanges (0), mRanges (1)) + oSheet = oSheets.getByName (sSheetName & "_ttest") ' Makes the report sheet active. - oSheet = oSheets.getByName (sSheetName & "_ttest") ThisComponent.getCurrentController.setActiveSheet (oSheet) End Sub diff --git a/4ANOVA.vb b/4ANOVA.vb index 7c3b744..11738de 100644 --- a/4ANOVA.vb +++ b/4ANOVA.vb @@ -72,9 +72,9 @@ Sub subRunANOVA As Object ' Reports the ANOVA (Analyze of Variances) subReportANOVA (ThisComponent, mRanges (0), mRanges (1)) + oSheet = oSheets.getByName (sSheetName & "_anova") ' Makes the report sheet active. - oSheet = oSheets.getByName (sSheetName & "_anova") ThisComponent.getCurrentController.setActiveSheet (oSheet) End Sub diff --git a/5Chi2GoF.vb b/5Chi2GoF.vb index 9004a6f..c2816c1 100644 --- a/5Chi2GoF.vb +++ b/5Chi2GoF.vb @@ -55,9 +55,9 @@ Sub subRunChi2GoodnessOfFit As Object ' Reports the chi-square goodness of fit subReportChi2GoodnessOfFit (ThisComponent, mRanges (0), mRanges (1)) + oSheet = oSheets.getByName (sSheetName & "_chi2") ' Makes the report sheet active. - oSheet = oSheets.getByName (sSheetName & "_chi2") ThisComponent.getCurrentController.setActiveSheet (oSheet) End Sub