none
Отображение графиков в ZedGraph RRS feed

  • Вопрос

  • Здравствуйте!

    Возникла такая проблема - ZedGraph не отображает линии на графике. В функцию передаются 2 массива структур, заранее заполненных. По дебагу видно, что значения в поинт листы передаются верно и в строках с addcurve значения в листах есть. Но отображения не происходит. Вот кусок кода, отвечающий за само, собственно, построение: 

    public Stream getGraph(List<Data> date1, List<Data> date2)
            {
    GraphPane myPane = new GraphPane();
     
                #region Вот тут рисуем график
     
                myPane.CurveList.Clear();
                //-----------------------------------------------------------------------------
                //обозначение осей
                myPane.Title.Text = "ReferenceNumberPerTime";
                myPane.XAxis.Title.Text = "Дата";
                myPane.YAxis.Title.Text = "Количество обращений";
                //-----------------------------------------------------------------------------
                //формат осей
                myPane.XAxis.Type = AxisType.Date;
                myPane.XAxis.Scale.Min = new XDate(2011, 08, 15);
                myPane.XAxis.Scale.Max = new XDate(2011, 09, 01);
                //-----------------------------------------------------------------------------
                //определение точек на графике
                PointPairList list1 = new PointPairList();
                PointPairList list2 = new PointPairList();
                                          
                foreach(Data x in date1)
                {
                    list1.Add(x.Date.Day, x.Reference);
                }
     
                foreach (Data x in date2)
                {
                    list2.Add(x.Date.Day, x.Reference);
                }
                //-----------------------------------------------------------------------------
                //построение графиков
                LineItem myCurve1 = myPane.AddCurve("Список 67", list1, Color.Red, SymbolType.None);
                LineItem myCurve2 = myPane.AddCurve("Список 2", list2, Color.Blue, SymbolType.None);
                
                //-----------------------------------------------------------------------------
                //масштабирование
                myPane.AxisChange();
                //-----------------------------------------------------------------------------
                #endregion
     

    16 августа 2011 г. 13:23

Ответы

  • Здравствуйте

    Ваша ошибка в том, что вы создаете новый GraphPane, хотя нужно использовать существующий и брать его нужно из визуального элемента управления zedGraphControl1:

    GraphPane myPane = zedGraphControl1.GraphPane;

     

    Далее по координате X вы назначаете типа дата, но добавляете только число (номер дня, хотя нужен объект XDate). Из-за этого тоже отображение может не происходить.

    Еще, руководствуясь примером A flexible charting library for .NET, метод AxisChange() нужно вызывать для контрола,а не для GraphPane.

    И последнее - у меня не изменялись названия осей и не отображался график, пока контрол не перерисуется, т.е. пришлось добавить в конце кода вызов zedGraphControl1.Refresh();

    Эти действия должны устранить вашу проблему.


    Для связи [mail]
    • Предложено в качестве ответа Dmitry Pavlov 30 августа 2011 г. 8:58
    • Помечено в качестве ответа Abolmasov Dmitry 2 сентября 2011 г. 7:12
    30 августа 2011 г. 6:46