BoxPlot Charting with Visual Studio 2008 (.net 3.5 pltfrm)

nefertitian

New member
Joined
Apr 3, 2009
Messages
2
Programming Experience
Beginner
Hi,

I come primarily from a unix background and relatively new to windows platform. I have been trying to write a simple box chart program in VB.Net but does not seem to work...any help is greatly appreciated...

Here is the code so far:
Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

InitializeComponent()

Dim DataSeries As New Series
Dim BoxPlotSeries As New Series
Dim yValues As Double() = {55.62, 45.54, 73.45, 9.73, 88.42, 45.9, 63.6, 85.1, 67.2, 23.6}
Dim ChartArea2 As New ChartArea

Chart1.ChartAreas.Add(ChartArea2)

DataSeries.Name = "FirstDataSeries"
BoxPlotSeries.Name = "BoxPlotSeries"
BoxPlotSeries.ChartType = SeriesChartType.BoxPlot
BoxPlotSeries.IsValueShownAsLabel = True
BoxPlotSeries.IsVisibleInLegend = True

DataSeries.Points.DataBindY(yValues)
Chart1.Series.Add("DataSeries")
Chart1.Series.Add("BoxPlotSeries")

' Add data to Box Plot Source series.
Chart1.Series("DataSeries").Points.DataBindY(yValues)
' Specify data series name for the Box Plot.
Chart1.Series("BoxPlotSeries")("BoxPlotSeries") = "DataSeries"
' Set whiskers 15th percentile.
Chart1.Series("BoxPlotSeries")("BoxPlotWhiskerPercentile") = "15"
' Show/Hide Average line.
Chart1.Series("BoxPlotSeries")("BoxPlotShowAverage") = "true"
' Show/Hide Median line.
Chart1.Series("BoxPlotSeries")("BoxPlotShowMedian") = "true"
' Show/Hide Unusual points.
Chart1.Series("BoxPlotSeries")("BoxPlotShowUnusualValues") = "true"
Chart1.Series("BoxPlotSeries")("PointWidth") = "2"

'Chart1.Series.Add("boxplotseries")
'MsgBox(Chart1.Series.ToString)

Me.ReportViewer1.RefreshReport()
End Sub


Private Sub Form1BindingSource_CurrentChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub
End Class
 
Re:

I think I finally got it working.....I guess it breaks down to defining a chart, adding two chart areas to it (one to show the data points, and another one to show the box and whiskers plot), defining multiple data points (where each data point is actually a series for a box plot), adding the series to the chart, and adding the datapoints to the box plot chart area. Or something like that.

Still need to figure out how to do the labelings on the box plots...

Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim DataSeries As New Series
Dim DataSeries2 As New Series
Dim DataSeries3 As New Series
Dim BoxPlotSeries As New Series
Dim yValues As Double() = {55.62, 45.54, 73.45, 9.73, 88.42, 45.9, 63.6, 85.1, 67.2, 23.6}
Dim yValues2 As Double() = {51.62, 42.54, 33.45, 7.73, 78.42, 55.9, 23.6, 25.1, 67.2, 23.6}
Dim yValues3 As Double() = {28.2, 28.4, 28.83, 22.73, 82.11, 11.23, 22.12, 77.77, 66.66, 23.28}
Dim ChartArea2 As New ChartArea
Dim ChartArea3 As New ChartArea

'Add the charting areas to the chart
Chart1.ChartAreas.Add(ChartArea2)
Chart1.ChartAreas.Add(ChartArea3)
ChartArea2.Name = "Data Chart Area"
ChartArea3.Name = "Box Plot Area"
'ChartArea3.AlignWithChartArea = "Data Chart Area"
ChartArea2.Position.X = 0
ChartArea2.Position.Y = 0
ChartArea3.Position.X = 70
ChartArea3.Position.Y = 0
ChartArea2.Position.Height = 82.0F
ChartArea3.Position.Height = 82.0F
ChartArea2.Position.Width = 60.0F
ChartArea3.Position.Width = 39.0F

DataSeries.Name = "DataSeries"
DataSeries2.Name = "DataSeries2"
DataSeries.ChartType = SeriesChartType.Point
DataSeries.ChartArea = "Data Chart Area"
DataSeries2.ChartArea = "Data Chart Area"
DataSeries2.ChartType = SeriesChartType.Point
DataSeries3.Name = "DataSeries3"
DataSeries3.ChartArea = "Data Chart Area"
DataSeries3.ChartType = SeriesChartType.Point

BoxPlotSeries.Name = "BoxPlotSeries"
BoxPlotSeries.ChartType = SeriesChartType.BoxPlot
BoxPlotSeries.ChartArea = "Box Plot Area"
BoxPlotSeries.IsValueShownAsLabel = True
BoxPlotSeries.IsVisibleInLegend = True


Chart1.Series.Add(BoxPlotSeries)
Chart1.Series.Add(DataSeries)
Chart1.Series.Add(DataSeries2)
Chart1.Series.Add(DataSeries3)

' Add data to Box Plot Source series.
Chart1.Series("DataSeries").Points.DataBindY(yValues)
Chart1.Series("DataSeries2").Points.DataBindY(yValues2)
Chart1.Series("DataSeries3").Points.DataBindY(yValues3)
' Specify data series name for the Box Plot.
Chart1.Series("BoxPlotSeries")("BoxPlotSeries") = "DataSeries;DataSeries2;DataSeries3"
' Set whiskers 15th percentile.
Chart1.Series("BoxPlotSeries")("BoxPlotWhiskerPercentile") = "15"
' Show/Hide Average line.
Chart1.Series("BoxPlotSeries")("BoxPlotShowAverage") = "true"
' Show/Hide Median line.
Chart1.Series("BoxPlotSeries")("BoxPlotShowMedian") = "true"
' Show/Hide Unusual points.
Chart1.Series("BoxPlotSeries")("BoxPlotShowUnusualValues") = "true"
Chart1.Series("BoxPlotSeries")("PointWidth") = "0.25"

Chart1.Location = New System.Drawing.Point(16, 48)
Chart1.Size = New System.Drawing.Size(460, 360)

Me.ReportViewer1.RefreshReport()
End Sub


End Class
 
Back
Top