Histograms in Visual Basic QuickStart Sample
Illustrates how to create histograms using the Histogram class in the Numerics.NET.DataAnalysis namespace in Visual Basic.
View this sample in: C# F# IronPython
Option Infer On
Imports Numerics.NET.DataAnalysis
Imports Numerics.NET
' Illustrates how to create historgrams.
Module Histograms
Sub Main()
' The license is verified at runtime. We're using
' a 30 day trial key here. For more information, see
' https://numerics.net/trial-key
Numerics.NET.License.Verify("64542-18980-57619-62268")
' Histograms are used to summarize the distribution of data.
' This QuickStart sample creates a histogram from data
' in a variety of ways.
' We use the test scores of students on a hypothetical national test.
' First we create a NumericalVariable that holds the test scores.
Dim group1Results = Vector.Create(
62, 77, 61, 94, 75, 82, 86, 83, 64, 84,
68, 82, 72, 71, 85, 66, 61, 79, 81, 73)
' We can create a histogram with evenly spaced bins
' by specifying the lower bound, the upper bound,
' And the number of bins
Dim histogram1 = Histogram.CreateEmpty(50, 100, 5)
' We can also provide the bounds explicitly
Dim bounds = {50, 62, 74, 88, 100}
Dim histogram2 = Histogram.CreateEmpty(bounds)
' Or we can first create an Index object
Dim idx = Index.CreateBins(bounds)
Dim histogram3 = Histogram.CreateEmpty(idx)
' To tally the results, we simply call the Tabulate method.
' The data can be supplied as a vector
histogram1.Tabulate(group1Results)
' Or simply as any enumerable, including an array
histogram2.Tabulate(group1Results.ToArray())
' You can add multiple data sets to the same histogram
histogram2.Tabulate({74, 68, 89})
' Or you can add individual data points using the Increment method.
' This will increment the count of the bin that contains
' the specified value
histogram2.Increment(83)
histogram2.Increment(78)
' Histograms are just vectors, so the SetToZero method
' clears all the data
histogram2.SetToZero()
' The Bins property returns an index of bins
Dim bins = histogram1.Bins
' The Length property returns the total number of bins
Console.WriteLine($"# bins: {bins.Length}")
' For binned histograms, the bins are of type Interval<T>
Dim bin = bins(2)
' Interval structures have a lower bound, an upper bound:
Console.WriteLine($"Bin 2 has lower bound {bin.LowerBound}.")
Console.WriteLine($"Bin 2 has upper bound {bin.UpperBound}.")
' You can get the value at a specific bin using the Get method:
Console.WriteLine($"Bin 2 has value {histogram1.Get(bin)}.")
' The histogram's FindBin method returns the Histogram bin
' that contains a specified value:
bin = histogram1.FindBin(83)
Console.WriteLine($"83 is in bin {bin}")
' You can use the BinsAndValues property to iterate through all the bins
' in a for-each loop:
For Each pair In histogram1.BinsAndValues
Console.WriteLine("Bin {0}: {1}", pair.Key, pair.Value)
Next
' You can also create histograms for categorical data:
Dim success = Vector.CreateCategorical(
{True, False, True, True, False})
Dim histogram4 = success.CreateHistogram()
' Bins for categorical histograms are just the categories:
Dim successes = histogram4.Get(True)
Console.WriteLine(successes)
Console.Write("Press any key to exit.")
Console.ReadLine()
End Sub
End Module