virtual Chart *Create() { // serie xy data double data[][2] = { { 10, 20, }, { 13, 16, }, { 14, 30, }, { 15, 34, }, { 25, 4, }, }; // first step: create plot XYPlot *plot = new XYPlot(); // create dataset XYSimpleDataset *dataset = new XYSimpleDataset(); // and add serie to it dataset->AddSerie((double *) data, WXSIZEOF(data)); // set line renderer to dataset dataset->SetRenderer(new XYLineRenderer()); // create first range marker RangeMarker *rangeMarker1 = new RangeMarker(new FillAreaDraw(wxColour(80, 80, 255), wxColour(200, 200, 250))); // set value to be marked, in our case vertical range [15; 20] rangeMarker1->SetVerticalRange(15, 20); // and add marker to dataset dataset->AddMarker(rangeMarker1); // create line marker LineMarker *lineMarker = new LineMarker(wxColour(80, 80, 255), 2); // set value to be marked, in our case horizontal value 15 lineMarker->SetHorizontalLine(25); // and add marker to dataset dataset->AddMarker(lineMarker); // create left and bottom number axes NumberAxis *leftAxis = new NumberAxis(AXIS_LEFT); NumberAxis *bottomAxis = new NumberAxis(AXIS_BOTTOM); // add axes and dataset to plot plot->AddObjects(dataset, leftAxis, bottomAxis); // and finally create chart return new Chart(plot, GetName()); }
virtual Chart *Create() { // serie xy data double data[][2] = { { 10, 20, }, { 13, 16, }, { 7, 30, }, { 15, 34, }, { 25, 4, }, }; // first step: create plot XYPlot *plot = new XYPlot(); // create dataset XYSimpleDataset *dataset = new XYSimpleDataset(); // and add serie to it dataset->AddSerie((double *) data, WXSIZEOF(data)); // set line renderer to dataset dataset->SetRenderer(new XYLineRenderer()); // create line marker LineMarker *lineMarker = new LineMarker(wxPen(*wxBLUE, 2, wxSOLID)); // set value to be marked, in our case vertical line with x=20 lineMarker->SetVerticalLine(20); // and add marker to dataset dataset->AddMarker(lineMarker); // create left and bottom number axes NumberAxis *leftAxis = new NumberAxis(AXIS_LEFT); NumberAxis *bottomAxis = new NumberAxis(AXIS_BOTTOM); // add axes and dataset to plot plot->AddObjects(dataset, leftAxis, bottomAxis); // and finally create chart return new Chart(plot, GetName()); }
CWindowDialogPlots::CWindowDialogPlots( CDisplayWindowPlots *winPlots, WxSubsystem::CWXMainFrame* parent, wxWindowID id, const std::string &caption, wxSize initialSize ) : m_winPlots( winPlots ), m_mainFrame(parent), m_firstSubmenu(true) { Create( parent, id, _U(caption.c_str()), wxDefaultPosition, initialSize, wxDEFAULT_FRAME_STYLE, _T("id")); SetClientSize(initialSize); wxIcon FrameIcon; FrameIcon.CopyFromBitmap(mrpt::gui::WxSubsystem::getMRPTDefaultIcon()); SetIcon(FrameIcon); // Create the mpWindow object: m_plot = new mpWindow( this, ID_PLOT ); m_plot->AddLayer( new mpScaleX() ); m_plot->AddLayer( new mpScaleY() ); m_plot->LockAspect( false ); m_plot->EnableDoubleBuffer(true); m_plot->Fit( -10,10,-10,10 ); // Menu: wxMenuBar *MenuBar1 = new wxMenuBar(); wxMenu *Menu1 = new wxMenu(); wxMenuItem *MenuItem1 = new wxMenuItem(Menu1, ID_MENUITEM1, _("Close"), _(""), wxITEM_NORMAL); Menu1->Append(MenuItem1); wxMenuItem *MenuItemPrint = new wxMenuItem(Menu1, ID_MENU_PRINT, _("Print..."), _(""), wxITEM_NORMAL); Menu1->Append(MenuItemPrint); MenuBar1->Append(Menu1, _("&File")); wxMenu *Menu2 = new wxMenu(); wxMenuItem *MenuItem2 = new wxMenuItem(Menu2, ID_MENUITEM2, _("About..."), _(""), wxITEM_NORMAL); Menu2->Append(MenuItem2); MenuBar1->Append(Menu2, _("&Help")); SetMenuBar(MenuBar1); // Events: Connect(wxID_ANY,wxEVT_CLOSE_WINDOW,(wxObjectEventFunction)&CWindowDialogPlots::OnClose); Connect(ID_MENUITEM1,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&CWindowDialogPlots::OnMenuClose); Connect(ID_MENU_PRINT,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&CWindowDialogPlots::OnMenuPrint); Connect(ID_MENUITEM2,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&CWindowDialogPlots::OnMenuAbout); Connect(wxID_ANY,wxEVT_SIZE,(wxObjectEventFunction)&CWindowDialogPlots::OnResize); Connect(wxID_ANY,wxEVT_CHAR,(wxObjectEventFunction)&CWindowDialogPlots::OnChar); m_plot->Connect(wxEVT_CHAR,(wxObjectEventFunction)&CWindowDialogPlots::OnChar,0,this); m_plot->Connect(wxEVT_MOTION,(wxObjectEventFunction)&CWindowDialogPlots::OnMouseMove,0,this); m_plot->Connect(wxEVT_LEFT_DOWN,(wxObjectEventFunction)&CWindowDialogPlots::OnMouseDown,NULL,this); m_plot->Connect(wxEVT_RIGHT_DOWN,(wxObjectEventFunction)&CWindowDialogPlots::OnMouseDown,NULL,this); // Increment number of windows: //int winCount = WxSubsystem::CWXMainFrame::notifyWindowCreation(); //cout << "[CWindowDialogPlots] Notifying new window: " << winCount << endl; //this->Iconize(false); #if 0 // JL: TEST CODE: This is the seed of the future new implementation based on wxFreeChart... double data[][2] = { { 10, 20, }, { 13, 16, }, { 7, 30, }, { 15, 34, }, { 25, 4, }, }; // first step: create plot XYPlot *plot = new XYPlot(); // create dataset XYSimpleDataset *dataset = new XYSimpleDataset(); // and add serie to it dataset->AddSerie((double *) data, WXSIZEOF(data)); // set line renderer to dataset dataset->SetRenderer(new XYLineRenderer()); // add our dataset to plot plot->AddDataset(dataset); // create left and bottom number axes NumberAxis *leftAxis = new NumberAxis(AXIS_LEFT); NumberAxis *bottomAxis = new NumberAxis(AXIS_BOTTOM); // optional: set axis titles leftAxis->SetTitle(wxT("X")); bottomAxis->SetTitle(wxT("Y")); // add axes to plot plot->AddAxis(leftAxis); plot->AddAxis(bottomAxis); // link axes and dataset plot->LinkDataVerticalAxis(0, 0); plot->LinkDataHorizontalAxis(0, 0); // and finally create chart Chart* chart = new Chart(plot, wxT("my title")); wxChartPanel *m_chartPanel = new wxChartPanel( this ); //, ID_PLOT ); m_chartPanel->SetChart( chart ); #endif }