как поместить данные в график - PullRequest
0 голосов
/ 29 ноября 2011

Я использую график от ZedGraph.Я хочу поместить в него некоторые данные, и я не знаю как.Мои данные приходят каждые 1 минуту по таймеру, и они являются целыми числами.Зедграф в том, что он должен быть двойным.Это не вопрос, хотя.Я хочу, чтобы график строился каждые 1 минуту, и за каждую 1 минуту в гистограмму будет добавляться новая полоса.У моего графа 6 серий.AF.

        DateTime dtime = DateTime.Now;

        int a = ctrscan.analyzeNewScanQuality1A();
        int b = ctrscan.analyzeNewScanQuality1B();
        int c = ctrscan.analyzeNewScanQuality1C();
        int D = ctrscan.analyzeNewScanQuality1D();
        int e = ctrscan.analyzeNewScanQuality1E();
        int f = ctrscan.analyzeNewScanQuality1F();


        double time = Convert.ToDouble(dtime.Minute);

        double[] y = { 90, 100, 95, 35, 80, 35 };
        double[] y2 = { 90, 100, 95, 35, 80, 35 };
        double[] y3 = { 80, 110, 65, 15, 54, 67 };
        double[] y4 = { 120, 125, 100, 40, 105, 75 };
        double[] y5 = { 20, 125, 100, 40, 105, 75 };
        double[] y6 = { 220, 125, 100, 40, 105, 75 };

        double[] x = {time}; 

        BarItem myBar = myPane.AddBar("Quality A", x, y, Color.Red);

Этот график принимает только числа в списке двойных чисел.Как вы можете видеть, каждый «у» представляет один из моих AF.Числа в списке являются только случайными числами и не предназначены для использования.

Как видите, я получаю числа в int.Я знаю, как конвертировать, так что это не вопрос.Мой вопрос: как мне получить это внутри графика?Я хочу поместить его в график, и через 1 минуту появится новый набор целых чисел.Затем я хочу старый набор и новый набор внутри графика.Последняя строка для вас, чтобы увидеть, как я контролирую свою серию.

Я использую Visual Studio C # и пишу внутри winform.

Надеюсь, вы понимаете!

1 Ответ

1 голос
/ 29 ноября 2011
       public partial class Chart : Form
{
    public Chart()
    {
        InitializeComponent();
    }


    private void SetSize()
    {
        zedGraphControl1.Location = new Point(10, 10);
        // Leave a small margin around the outside of the control

        zedGraphControl1.Size = new Size(ClientRectangle.Width - 20,
                                ClientRectangle.Height - 20);
    }

    private void Chart_Load(object sender, EventArgs e)
    {
        CreateGraph(zedGraphControl1);
        SetSize();
    }

    private void CreateGraph(ZedGraphControl zg1)
    {
        GraphPane myPane = zedGraphControl1.GraphPane;
        myPane.XAxis.Type = AxisType.Date;

        PointPairList PPLa = new PointPairList();
        PointPairList PPLb = new PointPairList();
        PointPairList PPLc = new PointPairList();
        PointPairList PPLd = new PointPairList();
        PointPairList PPLe = new PointPairList();
        PointPairList PPLf = new PointPairList();

        int Max = 1;

        for (int i = 0; i < Max; i++)
        {
            DateTime dtime = DateTime.Now;

            //int a = ctrscan.analyzeNewScanQuality1A();
            //int b = ctrscan.analyzeNewScanQuality1B();
            //int c = ctrscan.analyzeNewScanQuality1C();
            //int d = ctrscan.analyzeNewScanQuality1D();
            //int e = ctrscan.analyzeNewScanQuality1E();
            //int f = ctrscan.analyzeNewScanQuality1F();

            int a = 1;
            int b = 1;
            int c = 2;
            int d = 1;
            int e = 3;
            int f = 2;

            double date = (double)new XDate(dtime);

            PPLa.Add(date, (double)a);
            PPLb.Add(date, (double)b);
            PPLc.Add(date, (double)c);
            PPLd.Add(date, (double)d);
            PPLe.Add(date, (double)e);
            PPLf.Add(date, (double)f);

            BarItem myBara = myPane.AddBar("Bar A", PPLa, Color.Red);
            BarItem myBarb = myPane.AddBar("Bar B", PPLb, Color.Blue);
            BarItem myBarc = myPane.AddBar("Bar C", PPLc, Color.Green);
            BarItem myBard = myPane.AddBar("Bar D", PPLd, Color.Black);
            BarItem myBare = myPane.AddBar("Bar E", PPLe, Color.Yellow);
            BarItem myBarf = myPane.AddBar("Bar F", PPLf, Color.Orange);


            zedGraphControl1.AxisChange();

           // sleep(1 minute);

        }
        zg1.AxisChange();
    }

    private void Chart_Resize(object sender, EventArgs e)
    {
        SetSize();
    }
}

обновляйте график каждую минуту, вам нужно перерисовать его с добавленными значениями.вам нужно уяснить сон (1 минуту).

Chart_load вызывается при загрузке Form1

...