Как я могу нарисовать график с осью даты, используя C ++ и ZedGraph? - PullRequest
1 голос
/ 17 октября 2010

Я успешно использовал пример проекта C ++ для рисования графиков из моего проекта C ++ с использованием ZedGraph.Однако нет примера с осью даты для C ++.

Следующий код взят из примера C #, найденного в http://zedgraph.org/wiki/index.php?title=Tutorial:Date_Axis_Chart_Demo. Пожалуйста, смотрите мои комментарии с текстом // JEM //, чтобы увидеть, где мойпроблема

    PointPairList list = new PointPairList();
    for ( int i=0; i<36; i++ )
    {
        double x = (double) new XDate( 1995, 5, i+11 );

        >  //JEM //This line above doesn't work in
        > C++.

        double y = Math.Sin( (double) i * Math.PI / 15.0 );
        list.Add( x, y );
    }

    ....missing code...

    // Set the XAxis to date type
    myPane.XAxis.Type = AxisType.Date;

    //JEM //This one also doesn't work even if I change it to the
    //syntax that C++ understands, that is,
    myPane->XAxis->Type = AxisType->Date;

Ответы [ 2 ]

0 голосов
/ 23 октября 2010

Спасибо, Гацек.Вот так все и закончилось.Ваш ответ был поворотным моментом !!!

    for ( int i = 0; i < basin.DY; i++ ){
           XDate dato(1995,9,i,0,0,0); //date
           double x = (double)dato;
            //double x =  i;     
           double y =  basin.Qsim[i];     
           double y2 = basin.Qobs[i];     
            list->Add( x, y );     
            list2->Add( x, y2 );
    }
    //set the XAXis to date type
    myPane->XAxis->Type = AxisType::Date;

вот конструктор для типа Xdate для c ++ из документации по точечной сети sourceforge / html / M_ZedGraph_XDate__ctor_3.htmXDate (int год, int месяц, int день, int час, int минута, двойная секунда)

Я также нашел подробный пример по этой ссылке http://www.c -plusplus.de / forum / viewtopic-var-t-is-186422-and-view-is-next.html со следующим кодом

        /// ZedGraph Kurve //////////
private: void CreateGraph( ZedGraphControl ^zgc )
{
   GraphPane ^myPane = zgc->GraphPane;

   // Set the titles and axis labels
   myPane->Title->Text = "Gewichtskurve";
   myPane->XAxis->Title->Text = "Tag";
   myPane->YAxis->Title->Text = "Gewicht in Kg";


   // Make up some data points from the Sine function
    double x,y;
   PointPairList ^list = gcnew PointPairList();
   for ( int i=0; i<36; i++ )
   {
     x = (double) gcnew XDate( 1995, 5, i+11 );
      y = Math::Sin( (double) i * Math::PI / 15.0 );
      list->Add( x, y );
   }

   // Generate a blue curve with circle symbols, and "My Curve 2" in the legend
       LineItem ^myCurve = myPane->AddCurve( "Trainingskurve", list, Color::Blue,
       SymbolType::Circle );

       XDate ^xdatum = gcnew XDate ( 1995, 1, 1);
       xdatum->AddDays ( 1 );

       myPane->XAxis->Type = AxisType::Date;
0 голосов
/ 17 октября 2010

Может быть, в C ++ есть проблемы с анонимными переменными?
Попробуйте сначала создать объект XDate, а затем преобразовать его в double.

XDate date = new XDate( 1995, 5, i+11 );
double x = (double)date;
...