• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1359
  • Last Modified:

C# - How to export or save the Chart Control series to array?

Hello everyone.
Thank you in advance for your time and attention.
My development environment: i7, W7Ult, VS2010Ult, WinForm, C# and Chart Control.
Target: Windows XP, VISTA, 7 and 8.

How to export or save the chart control series to an array? Need including the X axis labels or way to retrieve them in the future.
We have a chart with 3 series Spline, fed by the minute. By default we show the last 10 days in X axis.
#region AddNewDataPoint
    int tmStamp=14400; // 10 Days in minutes
    public void AddNewPoint()
        {
        var cX=this.chart1.ChartAreas[0];
        DateTime timeStamp=DateTime.Now;
        // Add new data point to its series.
        chart1.Series["01"].Points.AddXY(timeStamp.ToOADate(),Convert.ToDouble(i_01));
        chart1.Series["02"].Points.AddXY(timeStamp.ToOADate(),Convert.ToDouble(i_02));
        chart1.Series["03"].Points.AddXY(timeStamp.ToOADate(),Convert.ToDouble(i_03));
        // remove all points from the source series older than 1 minute.
        double removeBefore=timeStamp.AddMinutes((double)(tmStamp)*(-1)).ToOADate();
        //remove oldest values to maintain a constant number of data points
        while(chart1.Series[0].Points[0].XValue<removeBefore)
        { chart1.Series[0].Points.RemoveAt(0); }
        cX.AxisX.Minimum=chart1.Series[0].Points[0].XValue;
        cX.AxisX.Maximum=DateTime.FromOADate(chart1.Series[0].Points[0].XValue).AddMinutes(tmStamp).ToOADate();
        chart1.Invalidate();
        }
    #endregion // AddNewDataPoint

Open in new window

We create the chart with the code below.
#region Setting the Chart
    private void SetChart()
        {
        var v_Interval=86400D; // 1 Day interval in seconds.
        cX.AxisX.ScaleView.MinSize=1;
        cX.AxisX.ScaleView.MinSizeType=DateTimeIntervalType.Days;
        cX.CursorX.Interval=0;
        cX.AxisX.LabelStyle.Format="HH:mm:ss\nyyyy-MM-dd";
        cX.AxisX.LabelStyle.Interval=v_Interval;
        cX.AxisX.LabelStyle.IntervalType=System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds;
        cX.AxisX.MajorGrid.Interval=v_Interval;
        cX.AxisX.MajorGrid.IntervalType=System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds;
        cX.AxisX.MajorTickMark.Interval=v_Interval;
        cX.AxisX.MajorTickMark.IntervalType=System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds;
        cX.AxisY.IsLabelAutoFit=false;
        cX.AxisY.IsStartedFromZero=false;
        } // Setting the Chart
    #endregion

Open in new window

0
ocaccy
Asked:
ocaccy
  • 2
1 Solution
 
Rgonzo1971Commented:
Hi,

Could the CopyTo method from the DataPointCollection Class be a solution?

Regards
0
 
ocaccyAuthor Commented:
Hi. How; have a sample ?
Regards
0
 
ocaccyAuthor Commented:
Solved this way: When we launched a value in Serie Point, also launched in an Array that is saved from time to time.

Best regards,
ocaccy
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now