/// <summary>
 /// Shows a new chart in a default form.
 /// </summary>
 /// <param name="pca">A principal component analysis object.</param>
 /// <param name="xIndex">The index of the principal component to use for the x values.</param>
 /// <param name="yIndex">The index of the principal component to use for the y values.</param>
 /// <remarks>
 /// Equivalent to:
 /// <code>
 /// NMathStatsChart.Show( ToChart( pca, xIndex, yIndex ) );
 /// </code>
 /// </remarks>
 public static void Show( FloatPCA pca, int xIndex, int yIndex )
 {
     Show( ToChart( pca, xIndex, yIndex ) );
 }
 /// <summary>
 /// Shows a new chart in a default form.
 /// </summary>
 /// <param name="pca">A principal component analysis object.</param>
 /// <remarks>
 /// Equivalent to:
 /// <code>
 /// NMathStatsChart.Show( ToChart( pca ) );
 /// </code>
 /// </remarks>
 public static void Show( FloatPCA pca )
 {
     Show( ToChart( pca ) );
 }
        /// <summary>
        /// Updates the given chart with a point (scatter) chart plotting the specified two
        /// principal components against one another.
        /// </summary>
        /// <param name="chart">A chart.</param>
        /// <param name="pca">A principal component analysis object.</param>
        /// <param name="xIndex">The index of the principal component to use for the x values.</param>
        /// <param name="yIndex">The index of the principal component to use for the y values.</param>
        /// <remarks>
        /// Titles are added only if chart does not currently contain any titles.
        /// <br/>
        /// chart.Series[0] is replaced, or added if necessary.
        /// </remarks>
        public static void Update( ref ChartControl chart, FloatPCA pca, int xIndex, int yIndex )
        {
            if( xIndex < 0 || xIndex > pca.Scores.Cols - 1 )
              {
            throw new Core.IndexOutOfRangeException( xIndex );
              }

              if( yIndex < 0 || yIndex > pca.Scores.Cols - 1 )
              {
            throw new Core.IndexOutOfRangeException( yIndex );
              }

              string title = "FloatPCA";
              string xTitle = String.Format( "PCA {0}", xIndex );
              string yTitle = String.Format( "PCA {0}", yIndex );
              ChartSeries series = BindXY( pca.Scores.Col( xIndex ), pca.Scores.Col( yIndex ), ChartSeriesType.Scatter, DefaultMarker );
              Update( ref chart, series, title, xTitle, yTitle );
        }
 /// <summary>
 /// Updates the given chart with a Scree chart for the given principal component analysis.
 /// </summary>
 /// <param name="chart">A chart.</param>
 /// <param name="pca">A principal component analysis object.</param>
 /// <remarks>
 /// Titles are added only if chart does not currently contain any titles.
 /// <br/>
 /// The first two data series are replaced, or added if necessary.
 /// </remarks>
 public static void Update( ref ChartControl chart, FloatPCA pca )
 {
     string title = "FloatPCA";
       string xTitle = "Principal Component";
       string yTitle = "Proportion of Variance";
       List<ChartSeries> series = new List<ChartSeries>()
       {
     BindY( pca.VarianceProportions, ChartSeriesType.Line, DefaultMarker ),
     BindY( pca.CumulativeVarianceProportions, ChartSeriesType.Line, DefaultMarker )
       };
       series[0].Text = "Variance Proportions";
       series[1].Text = "Cummulative Variance Proportions";
       Update( ref chart, series, title, xTitle, yTitle );
 }
 /// <summary>
 /// Returns a point (scatter) chart plotting the specified two principal components
 /// against one another.
 /// </summary>
 /// <param name="pca">A principal component analysis object.</param>
 /// <param name="xIndex">The index of the principal component to use for the x values.</param>
 /// <param name="yIndex">The index of the principal component to use for the y values.</param>
 /// <returns>A new chart.</returns>
 public static ChartControl ToChart( FloatPCA pca, int xIndex, int yIndex )
 {
     ChartControl chart = GetDefaultChart();
       Update( ref chart, pca, xIndex, yIndex );
       return chart;
 }
 /// <summary>
 /// Returns a Scree chart for the given principal component analysis.
 /// </summary>
 /// <param name="pca">A principal component analysis object.</param>
 /// <returns>A new chart.</returns>
 public static ChartControl ToChart( FloatPCA pca )
 {
     ChartControl chart = GetDefaultChart();
       Update( ref chart, pca );
       return chart;
 }