Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 5


|
Conversation : comment editer des graphes |
sajaris (Membre)
Inscrit le : 23-11-2010
Messages: 47
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour,
je voulais savoir quelles bibliothèques je peux utiliser pour créer des graphes : en forme histogrammes et aussi des courbes (avec des lignes), ou en cercle.
J'ai déjà utiliser wxchart, mais il ne fait que les histogramme et aussi les cercles. Mais je ne le trouve pas tres amélioré. ya t'il une bibliothèque qui fait en plus les courbes?
Merci de m'aider (urgent please...)
|
|
biobytes (Nouveau membre)
Inscrit le : 12-06-2010
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour,
il y a longtemps que je n'ai pas utilisé wxWidgets mais je me souviens avoir souvent utilisé wxFreeChart. Je dispose des libs compilées en statique, dynamique mode release et debug pour wxWidgets 2.8.
Cordialement
Biobytes
|
|
sajaris (Membre)
Inscrit le : 23-11-2010
Messages: 47
Snippets: 0
Tutoriels: 0
Hors ligne |
ah cool, il est bien la librairie? assez complet? peut tu m'aider pour la compilation? je viens de le télécharger.
|
|
biobytes (Nouveau membre)
Inscrit le : 12-06-2010
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
Cette bibliothèque est très complète: graphes XY, bar, Camemberts, stackbar, diagrammes de Gantt etc.. Essaie de télécharger la doc au format pdf (wxFreeChart-refman.pdf) et tu te rendras compte qu'une utilisation professionelle est tout à fait possible avec cette bibliothèque. Pour la compilation,je ne me souviens pas de difficulté particulière mais il faudrait que je retrouve mes fichiers (projet CodeBlocks pour compiler les libs) car je développe avec un autre outil C++ maintenant. Je vais essayer de retrouver ces fichiers. Par contre, je ne sais pas si l'on peut uploader des fichiers compressés type 7zip sur ce forum. Si c'est possible, je peux poster le projet de compilation.
Bonne soirée
A+
Biobytes
|
|
sajaris (Membre)
Inscrit le : 23-11-2010
Messages: 47
Snippets: 0
Tutoriels: 0
Hors ligne |
ca serait cool de ta part. J'ai telecharger et compiler mais quand je veux tester les exemples, il me met:
Char does not name a type Legend does not name a type
Je sais plus quoi faire...
|
|
biobytes (Nouveau membre)
Inscrit le : 12-06-2010
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonsoir,
Ci-joint le code d'un exemple créé par mes soins pour tester ma compilation de wxFreeChart.
Fichier de l'appli (cpp):
#include "EssaiplotApp.h"
//(*AppHeaders #include "EssaiplotMain.h" #include <wx/image.h> //*)
IMPLEMENT_APP(EssaiplotApp);
bool EssaiplotApp::OnInit() { //(*AppInitialize bool wxsOK = true; wxInitAllImageHandlers(); if ( wxsOK ) { EssaiplotFrame* Frame = new EssaiplotFrame(0); Frame->Show(); SetTopWindow(Frame); } //*) return wxsOK;
}
Fichier cpp principal:
#include "EssaiplotMain.h" #include <wx/msgdlg.h>
//(*InternalHeaders(EssaiplotFrame) #include <wx/intl.h> #include <wx/string.h> //*)
//helper functions enum wxbuildinfoformat { short_f, long_f };
wxString wxbuildinfo(wxbuildinfoformat format) { wxString wxbuild(wxVERSION_STRING);
if (format == long_f ) { #if defined(__WXMSW__) wxbuild << _T("-Windows"); #elif defined(__UNIX__) wxbuild << _T("-Linux"); #endif
#if wxUSE_UNICODE wxbuild << _T("-Unicode build"); #else wxbuild << _T("-ANSI build"); #endif // wxUSE_UNICODE }
return wxbuild; }
//(*IdInit(EssaiplotFrame) const long EssaiplotFrame::idShowGraphic = wxNewId(); const long EssaiplotFrame::idMenuQuit = wxNewId(); const long EssaiplotFrame::idMenuAbout = wxNewId(); const long EssaiplotFrame::ID_STATUSBAR1 = wxNewId(); //*)
BEGIN_EVENT_TABLE(EssaiplotFrame,wxFrame) //(*EventTable(EssaiplotFrame) //*) END_EVENT_TABLE()
EssaiplotFrame::EssaiplotFrame(wxWindow* parent,wxWindowID id) { //(*Initialize(EssaiplotFrame) wxMenu* OpeMenu; wxMenuItem* MenuItem1; wxMenuItem* aboutMenuItem; wxMenuBar* MenuBar1; wxMenu* Menu2; wxMenuItem* quitMenuItem; wxBoxSizer* esBoxSizer;
Create(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("id")); esBoxSizer = new wxBoxSizer(wxHORIZONTAL); SetSizer(esBoxSizer); MenuBar1 = new wxMenuBar(); OpeMenu = new wxMenu(); MenuItem1 = new wxMenuItem(OpeMenu, idShowGraphic, _("Voir graphique"), wxEmptyString, wxITEM_NORMAL); OpeMenu->Append(MenuItem1); quitMenuItem = new wxMenuItem(OpeMenu, idMenuQuit, _("Fermer\tAlt-F4"), _("quitter l\'application"), wxITEM_NORMAL); OpeMenu->Append(quitMenuItem); MenuBar1->Append(OpeMenu, _("&Opérations")); Menu2 = new wxMenu(); aboutMenuItem = new wxMenuItem(Menu2, idMenuAbout, _("A propos\tF1"), _("Informations à propos de cette application"), wxITEM_NORMAL); Menu2->Append(aboutMenuItem); MenuBar1->Append(Menu2, _("Aide")); SetMenuBar(MenuBar1); StatusBar1 = new wxStatusBar(this, ID_STATUSBAR1, 0, _T("ID_STATUSBAR1")); int __wxStatusBarWidths_1[1] = { -1 }; int __wxStatusBarStyles_1[1] = { wxSB_NORMAL }; StatusBar1->SetFieldsCount(1,__wxStatusBarWidths_1); StatusBar1->SetStatusStyles(1,__wxStatusBarStyles_1); SetStatusBar(StatusBar1); esBoxSizer->Fit(this); esBoxSizer->SetSizeHints(this);
Connect(idShowGraphic,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&EssaiplotFrame::OnshowgraphMenuItemSelected); Connect(idMenuQuit,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&EssaiplotFrame::OnQuit); Connect(idMenuAbout,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&EssaiplotFrame::OnAbout); //*)
SetSize(wxSize(600,400)); Center();
plot = new XYPlot(); dataset = new XYSimpleDataset();
dataset->AddSerie((double*)mydata,WXSIZEOF(mydata)); dataset->SetRenderer(new XYLineRenderer(true,true,2,wxDOT_DASH));
dataset->AddSerie((double*)myotherdata,WXSIZEOF(myotherdata)); dataset->SetRenderer(new XYLineRenderer(true,true,2,wxSOLID));
leftAxis = new NumberAxis(AXIS_LEFT); bottomAxis = new NumberAxis(AXIS_BOTTOM); leftAxis->SetTitle(_("Axe des ordonnées")); bottomAxis->SetTitle(_("Axe des abscisses"));
plot->AddDataset(dataset); plot->AddAxis(leftAxis); plot->AddAxis(bottomAxis); plot->LinkDataHorizontalAxis(0,0); plot->LinkDataVerticalAxis(0,0); myChart = new Chart(plot,_("Démo wxFreeChart"));
//esBoxSizer->Hide(this,true);
chartPanel = new wxChartPanel(this,wxID_ANY,myChart,wxPoint(0,0),wxSize(400,200)); chartPanel->Show(false); esBoxSizer->Add(chartPanel);
//esBoxSizer->Hide(this,true); }
EssaiplotFrame::~EssaiplotFrame() { /*if(plot)delete plot; if(dataset)delete dataset; if(leftAxis)delete leftAxis; if(bottomAxis)delete bottomAxis; if(myChart)delete myChart; if(chartPanel)delete chartPanel;*/
//(*Destroy(EssaiplotFrame) //*) }
void EssaiplotFrame::OnQuit(wxCommandEvent& event) { Close(); }
void EssaiplotFrame::OnAbout(wxCommandEvent& event) { wxString msg = wxbuildinfo(long_f); wxMessageBox(msg, _("Welcome to...")); }
void EssaiplotFrame::OnshowgraphMenuItemSelected(wxCommandEvent& event) { //chartPanel = new wxChartPanel(this,wxID_ANY,myChart,wxPoint(0,0),wxSize(400,200)); //esBoxSizer->Add(chartPanel); chartPanel->Show(true); }
Les fichiers d'entête maintenant:
#ifndef ESSAIPLOTAPP_H #define ESSAIPLOTAPP_H
#include <wx/app.h>
class EssaiplotApp : public wxApp { public: virtual bool OnInit(); };
#endif // ESSAIPLOTAPP_H
#ifndef ESSAIPLOTMAIN_H #define ESSAIPLOTMAIN_H
//(*Headers(EssaiplotFrame) #include <wx/sizer.h> #include <wx/menu.h> #include <wx/frame.h> #include <wx/statusbr.h> //*)
#include <xyplot.h> #include <xysimpledataset.h> #include <xylinerenderer.h> #include <numberaxis.h> #include <wx/chart.h> #include <wx/chartpanel.h>
static const double mydata[][2]={ {10,20}, {13,16}, {7,30}, {15,34}, {25,4} };
static const double myotherdata[][2]={10,50,13,25,7,47,15,10,25,7};
class EssaiplotFrame: public wxFrame { public:
EssaiplotFrame(wxWindow* parent,wxWindowID id = -1); virtual ~EssaiplotFrame();
private:
XYPlot *plot; XYSimpleDataset *dataset; NumberAxis *leftAxis; NumberAxis *bottomAxis; Chart *myChart; wxChartPanel *chartPanel; wxBoxSizer* esBoxSizer;
//(*Handlers(EssaiplotFrame) void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); void OnshowgraphMenuItemSelected(wxCommandEvent& event); //*)
//(*Identifiers(EssaiplotFrame) static const long idShowGraphic; static const long idMenuQuit; static const long idMenuAbout; static const long ID_STATUSBAR1; //*)
//(*Declarations(EssaiplotFrame) wxStatusBar* StatusBar1; //*)
DECLARE_EVENT_TABLE() };
#endif // ESSAIPLOTMAIN_H
J'espère que cela pourra t'aider. Ce programme marche correctement.
Bon courage
Biobytes
|
|
sajaris (Membre)
Inscrit le : 23-11-2010
Messages: 47
Snippets: 0
Tutoriels: 0
Hors ligne |
salut cool, rien a dire j'ai pigé l'affaire, ca marche et j'ai compris comment faire.
Merciiiiiiiiiiiii
|
|
biobytes (Nouveau membre)
Inscrit le : 12-06-2010
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
ok Content d'avoir pu t'aider. Merci de valider ce sujet comme résolu
Bonne prog
Biobytes
|
|
|