Link to home
Start Free TrialLog in
Avatar of ocaccy
ocaccyFlag for Japan

asked on

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

ASKER CERTIFIED SOLUTION
Avatar of Rgonzo1971
Rgonzo1971

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of ocaccy

ASKER

Hi. How; have a sample ?
Regards
Avatar of ocaccy

ASKER

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