wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

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

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» comment editer des graphes
Conversation : comment editer des graphes
20-09-2011 17:47:01  comment editer des graphes #1
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...)
21-09-2011 15:21:33  Re: comment editer des graphes #2
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
21-09-2011 15:59:22  Re: comment editer des graphes #3
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.
21-09-2011 19:15:08  Re: comment editer des graphes #4
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
25-09-2011 22:13:01  Re: comment editer des graphes #5
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...
26-09-2011 22:44:48  Re: comment editer des graphes #6
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
06-10-2011 02:46:59  Re: comment editer des graphes #7
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
06-10-2011 21:59:28  Re: comment editer des graphes #8
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
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» comment editer des graphes