Class charts, histogramchart et sectorchart

Soyez le premier à donner votre avis sur cette source.

Vue 11 178 fois - Téléchargée 685 fois

Description

Bonjout,

Je publis des classes permettant de manipuler des graphiques tels que des graphiques a secteur, des histogrammes vertical et horizontal. Ces graphiques sont exportable en fichier image.

A partir d'un graphique histogramme, vous pouvez :
- régler l'échelle sur l'axe X et Y
- définir le nombre de tranche sur chaque axe
- définir le nombre de baton par tranche
- définir l'écart de valeur entre une tranche T et T+1
- définir son orientation grâce a l'enum ChartsOrientation { Horizontal, Vertical }
- les valeurs pour remplir le graphique est sous forme de tableau d'objet[,] et pour l'axe à partir duquel vous trouvez "A1".."A3" doivent être stocké dans un tableau d'objet

De plus, dans quelques jours j'apporterai une nette amélioration des classes.

Source / Exemple :


// exemple d'utilisation
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class TestChart : System.Web.UI.Page
{
    HistogramChart c = new HistogramChart(ChartsOrientation.Vertical, new System.Drawing.Size(700, 400), "Test histogramme ayant une orientation verticale !!", "graphHisto.png");
    HistogramChart c2 = new HistogramChart(ChartsOrientation.Horizontal, new System.Drawing.Size(600, 400), "Test histogramme ayant une orientation horiontal !!", "graphHisto2.png");
    
    Image img = new Image();

    protected void Page_Load(object sender, EventArgs e)
    {
        // graphique test
        object[,] val = new object[,] {   {12,23,54},
                                          {22,12,10},
                                          {19,60,40},
                                          {89,40,20},
                                          {86,30,43},
                                          {120,105,11}};

        // set value
        c.Values = val;
        c2.Values = val;

        // set item for X axis
        object[] items = new object[] { "A1", "A2", "A3"};
        c.ItemAxeX = items;
        c2.ItemAxeX = items;

        // nombre de tranche dans l'axe y
        // le nombre de tranche pour l'axe x est définie automatiquement
        c.NbTranchePartieNonDefinie = 15;
        c2.NbTranchePartieNonDefinie = 15;

        // ecart de valeur entre une entre A et B
        c.StepValue = 10;
        c2.StepValue = 10;

        // nb baton par tranche
        c.NbBatonParTranche = 3;
        c2.NbBatonParTranche = 3;

        // trace
        c.Trace();
        c2.Trace();
        this.ImageGraph.ImageUrl = this.c.Filename;
        this.ImageGraph2.ImageUrl = this.c2.Filename;
    }
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

The Red Man
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
2 -
Je crois que ça fonctionnera mieux comme ça :

# public partial class TestChart : System.Web.UI.Page
# {
# HistogramChart c = new HistogramChart(ChartsOrientation.Vertical, new System.Drawing.Size(700, 400), "Test histogramme ayant une orientation verticale !!", "graphHisto.png");
# HistogramChart c2 = new HistogramChart(ChartsOrientation.Horizontal, new System.Drawing.Size(600, 400), "Test histogramme ayant une orientation horiontal !!", "graphHisto2.png");
#
# Image img = new Image();
# Image img2 = new Image();
#
# protected void Page_Load(object sender, EventArgs e)
# {
# // graphique test
# object[,] val = new object[,] { {12,23,54},
# {22,12,10},
# {19,60,40},
# {89,40,20},
# {86,30,43},
# {120,105,11}};
#
# // set value
# c.Values = val;
# c2.Values = val;
#
#
# // set item for X axis
# object[] items = new object[] { "A1", "A2", "A3"};
# c.ItemAxeX = items;
# c2.ItemAxeX = items;
#
# // nombre de tranche dans l'axe y
# // le nombre de tranche pour l'axe x est définie automatiquement
# c.NbTranchePartieNonDefinie = 15;
# c2.NbTranchePartieNonDefinie = 15;
#
# // ecart de valeur entre une entre A et B
# c.StepValue = 10;
# c2.StepValue = 10;
#
# // nb baton par tranche
# c.NbBatonParTranche = 3;
# c2.NbBatonParTranche = 3;
#
# // trace
# c.Trace();
# c2.Trace();
# this.img.ImageUrl = this.c.Filename;
# this.img2.ImageUrl = this.c2.Filename;
# }
# }
naim16
Messages postés
14
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
21 octobre 2009
-
Je trouve votre code interessant mais la derniere instruction ne marche par "this.ImageGraph.ImageUrl = this.c.Filename;", il ne reconnnais pas ImageGraph...? Merci de m'indiquer s'il faut le declarer ailleur.
The Red Man
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
2 -
Merci à vous pour vos commentaires. En ce qui concerne le graphisme j'ai un très bas niveau c'est la raison pour laquelle mon graphique n'est pas tres beau non plus ! Mais j'essai de faire des efforts ! :)
mehdikobra
Messages postés
24
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
21 décembre 2009
-
r1 a dir !! exept un tou petit truk ,c'est ke le code l'érateral
peu avoir des comme on appel en englai ( S.Var ) c' ta dir votre class a besoin d'un guid pur kil soit executé selon le graphisme
de chaque personne !!! mé en général !! pa de faut au niveau du
script , bravo men !!!
lakichemole
Messages postés
253
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
18 mai 2009
-
Oui c'est simple mais en fait moi par exemple je suis abonné à la newsletter de code source et donc je regarde pas mal de source tous les jours et par conséquent si je veux tester rapidement chaque source pour me faire un avi ba j'aime bien à n'avoir qu'un click à faire :)
Mais bon ton code est assez claire et donc j'ai pu l'évaluer et voir qu'il était interressant tout de suite.
Après je pense que faire un nouveau projet juste en incluant ta source avec un mini exemple c'est le top, ça te prend un peu plus de temps mais pour ceux qui veulent regarder/utiliser ta source c'est très pratique :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.