tmcuh
Messages postés458Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention18 avril 2009
-
9 mars 2005 à 12:37
nicsoFR
Messages postés7Date d'inscriptionjeudi 26 février 2004StatutMembreDernière intervention20 janvier 2009
-
29 janv. 2009 à 17:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Loneloup
Messages postés9Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention 1 février 2008 3 janv. 2006 à 16:20
Salut,
Cela me permettrai de ne pas avoir à créer 1 page spécifique pour le graphique. Merci
TUHABITES
Messages postés41Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention21 avril 2011 3 janv. 2006 à 15:56
Je te remercie LoneLoup pour le code en VB car d'aucuns m'ont demandé comment faire pour utiliser ThChart en VB et j'étais bien incapable de leur répondre.
Pour ce qui de la fonction Save, je l'avais complètement oubliée. En fait, ce code est une petite partie d'un autre code, c'est pourquoi le code n'est pas très propre et c'est aussi pourquoi il reste cette fonction Save qui apparemment ne fonctionne pas correctement. Si tu penses qu'elle peut être utile je peux me pencher sur le sujet et la rendre fonctionnelle. Je peux également ajouter d'autres fonctionnalités (si tu as des idées intéressantes).
Tuhabites
cs_Loneloup
Messages postés9Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention 1 février 2008 15 déc. 2005 à 17:23
Une petite derniere astuce : Calcul automatique des paliers
On part du principe que TotHits sera toujours notre valeur la plus forte, la variable Palier permet de regler le degre de graduation (ex: pour un TotHits a 4000 le degre de graduation correct est 500) :
Dim Palier As Integer = 500
Dim Countgrad As Integer = 0
Dim TempGrad As Integer = 0
'Premiere boucle pour dimenssioner le tableau
Do While TempGrad < tothits
TempGrad = TempGrad + Palier
Countgrad = Countgrad + 1
Loop
'Seconde boucle pour renseigner le tableau graduation
Dim graduation(Countgrad + 2) As Single
TempGrad = 0
graduation(0) = Palier
Countgrad = 0
Do While TempGrad < TotHits
Countgrad = Countgrad + 1
TempGrad = TempGrad + Palier
graduation(Countgrad) = TempGrad
Loop
cs_Loneloup
Messages postés9Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention 1 février 2008 15 déc. 2005 à 17:00
Je me permet de completer aussi le code en VB, vous gagnerez une bonne demi journée de brainstorming :
Thcharts doit être ajouter en tant qu'objet com et pas assembly.net car il y a bug d access deny une fois de temps en temps.
Dim graduation(5) As Single
Dim hist As ThCharts.Histogram
graduation(0) = 250.0F
graduation(1) = 500.0F
graduation(2) = 750.0F
graduation(3) = 1000.0F
hist = New ThCharts.Histogram(Dtable, graduation)
Dim Couleur(3) As Color
Couleur(0) = Color.Orange
Couleur(1) = Color.Yellow
Couleur(2) = Color.MediumBlue
Couleur(3) = Color.MediumSeaGreen
cs_Loneloup
Messages postés9Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention 1 février 2008 15 déc. 2005 à 16:56
Ok j ai trouve un moyen dérivé qui ne me satisfait pas entirement à cause de l'optimisation du code mais voila la soluce pour ceux qui pourrait avoir le meme problème:
1°) Dans la page ou doit s afficher le graphique (index.aspx), insérer une balise de cette maniere : (DynImageAnnee.aspx étant dans le même répertoire que votre page principale)
2°) Coder la page DynImageAnnee.aspx avec le calcul du graphique das le formload
Exécuter, le tour est joué.
Merci encore pour ce fabuleux code
PS: marche comment la fonction save?
toujours pas reussi
cs_Loneloup
Messages postés9Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention 1 février 2008 15 déc. 2005 à 15:44
Trouvé pour le titre et la couleur.
Mais toujours pas pour l'affichage : j'ai remarqué que tu avais une methode save, fonctionne t elle, si oui comment?
hist.Save(Server.MapPath("\Image\Statannee.jpg"))
me renvois toujours false
cs_Loneloup
Messages postés9Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention 1 février 2008 15 déc. 2005 à 14:36
Sublime, 3 petites questions :
Sachant que je programme en Vb.net et que les données proviennent d'un Datatable :
- Comment ajouter le titre des colonnes comme dans le screenshoot "le commercial","ses homologues")?
- j'utilise
hist = New ThCharts.Histogram(Dtable, graduation)
hist.Render(HttpContext.Current)
Le graphique efface completement les autres données de la page. comment y remédier et le placer à l'endroit voulu?
- Est il possible de modifier les couleurs sans modifier la dll thcharts?
leroitony
Messages postés22Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention 5 avril 2007 13 nov. 2005 à 22:05
Désole pour le dérangement j'ai trouver l'erreur qui résidais dans mon datatable
Et encore bravo pour le code
leroitony
Messages postés22Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention 5 avril 2007 13 nov. 2005 à 00:50
Salut je te remercie pour ta source très bien faite.
Je me permets de te demander après quelque test une petite info
Quand je charge Histogram hist=new Histogram(dt,graduation); ou dt est un DataTable qui contient une liste de nombre (via requête)
Le résultat est un graph. vue de profile
Qu'elle est la variable pour avoirs une vue de face comme lors de l'utilisation des fichier xml
aurelien2003
Messages postés14Date d'inscriptiondimanche 22 juin 2003StatutMembreDernière intervention28 mai 2008 8 juin 2005 à 12:17
c'est sans contexte une excelente source qui merite d'etre encouragé. Merci beaucoup !
cs_elibou
Messages postés1Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention 1 juin 2005 1 juin 2005 à 21:56
Excellent composant, trés facile d'utilisation et effet de Tonnerre.
Félicitations
soficplus
Messages postés1Date d'inscriptionmercredi 28 janvier 2004StatutMembreDernière intervention18 avril 2005 18 avril 2005 à 17:23
Génial, génial génial, félicitations !!! Bon maintenant faut que j'fasse des camemberts hihih
c'est trés beau le résultat, moi qui pensait générer des histogrammes en deux coups de cuillères à pot !!!
jujubaud
Messages postés4Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention18 avril 2005 18 avril 2005 à 10:04
merci pour ce complément je vais tester
c'est sympas d'avoir pris le temp
Merci encore
TUHABITES
Messages postés41Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention21 avril 2011 16 avril 2005 à 12:06
L'explication ci-dessus m'a semblé peu claire donc j'ai modifié le source du zip de manière à ce qu'elle soit utilisable dans un winform.
(Bien que cela n'ai pas trop de rapport avec l'ASP)
TUHABITES
Messages postés41Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention21 avril 2011 16 avril 2005 à 11:23
On ne peut pas, sans transformation, utiliser la dll dans un winform il faudra pour cela faire les manipulations suivantes.
1- Dans le fichier histogram.cs (dans les sources du Zip) :
- ajouter la ligne: using System.IO;
- ajouter la surcharge suivante:
public Stream Render()
{
Stream stream=new MemoryStream();
System.Drawing.Image img;
Initialisation(tabl.GetLength(0));
y=h+y;
}
4- compiler et executer. (penser à placer le fichier data1.xml dans le même répertoire.)
5- ça devrait marcher.
jujubaud
Messages postés4Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention18 avril 2005 15 avril 2005 à 10:24
peut on faire la meme chose en winform??
TUHABITES
Messages postés41Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention21 avril 2011 14 avril 2005 à 20:02
hbgz74, voilà une transcription du code en VB, je ne garantis pas qu'il va fonctionner étant donné mes maigres connaissances dans ce langage.
jujubaud, le code qui est dans le zip est commenté (pas beaucoup mais un peu quand même) et la page Exemple.aspx présente l'ensemble des propriétés sur lesquelles on peut aisément agir.
Pour ce qui est des variables passées dans le constructeur: le premier argument est un DataTable contenant l'ensemble des données chiffrées (entiers ou decimaux) et le deuxieme argument correspond au graduations que l'on souhaite voir sur l'axe des ordonnées.
Dim graduation(5) As Single={250f,500f,750f,1000.0f}
Dim ds As DataSet
ds=New DataSet()
ds.ReadXml("data.xml")
Dim hist As Histogram
hist=New Histogram(ds.Tables[0],graduation)
hist.Render(this.Context)
End Sub
</script>
J'espère que celà vous aidera.
jujubaud
Messages postés4Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention18 avril 2005 14 avril 2005 à 10:18
ton code est tres interessant pourrai tu le comenter d'avantage je sais que c'est pénible mais cela m'aiderai à le comprendre
Pourrai tu par exemple présisé l'utilité des différente varianble de ta classe histogramme.
Je te remercie par avance
hbgz74
Messages postés1Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention11 avril 2005 11 avril 2005 à 18:28
peux tu mettre le code de l'exemple en VB stp
je débute encore en C#
Merci d'avance
TUHABITES
Messages postés41Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention21 avril 2011 10 mars 2005 à 09:10
Merci beaucoup tmcuh.
tmcuh
Messages postés458Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention18 avril 2009 9 mars 2005 à 12:37
29 janv. 2009 à 17:09
25 mai 2008 à 19:32
Respect !
10 janv. 2006 à 22:37
je viens de tester "Save" et cela fonctionne. Voici le code utilisé:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ import Namespace="ThCharts" %>
<%@ import Namespace="System.Data" %>
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
float[] graduation={250f,500f,750f,1000.0f};
DataSet ds=new DataSet();
ds.ReadXml(Server.MapPath("data1.xml"));
Histogram hist=new Histogram(ds.Tables[0],graduation);
if (!hist.Save(Server.MapPath("img.jpg"))) Label1.Text = "Y a un problème";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<form id="form1" runat="server">
</form>
</html>
3 janv. 2006 à 16:20
Cela me permettrai de ne pas avoir à créer 1 page spécifique pour le graphique. Merci
3 janv. 2006 à 15:56
Pour ce qui de la fonction Save, je l'avais complètement oubliée. En fait, ce code est une petite partie d'un autre code, c'est pourquoi le code n'est pas très propre et c'est aussi pourquoi il reste cette fonction Save qui apparemment ne fonctionne pas correctement. Si tu penses qu'elle peut être utile je peux me pencher sur le sujet et la rendre fonctionnelle. Je peux également ajouter d'autres fonctionnalités (si tu as des idées intéressantes).
Tuhabites
15 déc. 2005 à 17:23
On part du principe que TotHits sera toujours notre valeur la plus forte, la variable Palier permet de regler le degre de graduation (ex: pour un TotHits a 4000 le degre de graduation correct est 500) :
Dim Palier As Integer = 500
Dim Countgrad As Integer = 0
Dim TempGrad As Integer = 0
'Premiere boucle pour dimenssioner le tableau
Do While TempGrad < tothits
TempGrad = TempGrad + Palier
Countgrad = Countgrad + 1
Loop
'Seconde boucle pour renseigner le tableau graduation
Dim graduation(Countgrad + 2) As Single
TempGrad = 0
graduation(0) = Palier
Countgrad = 0
Do While TempGrad < TotHits
Countgrad = Countgrad + 1
TempGrad = TempGrad + Palier
graduation(Countgrad) = TempGrad
Loop
15 déc. 2005 à 17:00
Thcharts doit être ajouter en tant qu'objet com et pas assembly.net car il y a bug d access deny une fois de temps en temps.
Dim graduation(5) As Single
Dim hist As ThCharts.Histogram
graduation(0) = 250.0F
graduation(1) = 500.0F
graduation(2) = 750.0F
graduation(3) = 1000.0F
hist = New ThCharts.Histogram(Dtable, graduation)
Dim Couleur(3) As Color
Couleur(0) = Color.Orange
Couleur(1) = Color.Yellow
Couleur(2) = Color.MediumBlue
Couleur(3) = Color.MediumSeaGreen
Dim fontt As Font = New Font("Arial", 12)
hist.colorSeries = Couleur
hist.quality = 95
hist.AddTitle("Résumé des accès", fontt, Color.Black)
Dim Titre(3) As String
Titre(0) = "Sites"
Titre(1) = "Visites"
Titre(2) = "Pages"
Titre(3) = "Hits"
hist.titlesSeries = Titre
hist.titlesSeriesX = 250
hist.titlesSeriesY = 80
hist.Render(System.Web.HttpContext.Current)
Comment fonctionne DTable :
Dim Dtable As New DataTable("Annee")
Initialisationd es propriétés :
Dtable.MinimumCapacity = 12
Dtable.CaseSensitive = False
Dtable.Columns.Add("Janvier", GetType(Integer))
Dtable.Columns.Add("Février", GetType(Integer))
Dtable.Columns.Add("Mars", GetType(Integer))
Dtable.Columns.Add("Avril", GetType(Integer))
Dtable.Columns.Add("Mai", GetType(Integer))
Dtable.Columns.Add("Juin", GetType(Integer))
Dtable.Columns.Add("Juillet", GetType(Integer))
Dtable.Columns.Add("Août", GetType(Integer))
Dtable.Columns.Add("Septembre", GetType(Integer))
Dtable.Columns.Add("Octobre", GetType(Integer))
Dtable.Columns.Add("Novembre", GetType(Integer))
Dtable.Columns.Add("Décembre", GetType(Integer))
Ajout d'une ligne :
Dim dr0 As DataRow = Dtable.NewRow
dr0("Janvier") = TabSites(0)
dr0("Février") = TabSites(1)
dr0("Mars") = TabSites(2)
dr0("Avril") = TabSites(3)
dr0("Mai") = TabSites(4)
dr0("Juin") = TabSites(5)
dr0("Juillet") = TabSites(6)
dr0("Août") = TabSites(7)
dr0("Septembre") = TabSites(8)
dr0("Octobre") = TabSites(9)
dr0("Novembre") = TabSites(10)
dr0("Décembre") = TabSites(11)
Dtable.Rows.Add(dr0)
15 déc. 2005 à 16:56
1°) Dans la page ou doit s afficher le graphique (index.aspx), insérer une balise de cette maniere : (DynImageAnnee.aspx étant dans le même répertoire que votre page principale)
2°) Coder la page DynImageAnnee.aspx avec le calcul du graphique das le formload
Exécuter, le tour est joué.
Merci encore pour ce fabuleux code
PS: marche comment la fonction save?
toujours pas reussi
15 déc. 2005 à 15:44
Mais toujours pas pour l'affichage : j'ai remarqué que tu avais une methode save, fonctionne t elle, si oui comment?
hist.Save(Server.MapPath("\Image\Statannee.jpg"))
me renvois toujours false
15 déc. 2005 à 14:36
Sachant que je programme en Vb.net et que les données proviennent d'un Datatable :
- Comment ajouter le titre des colonnes comme dans le screenshoot "le commercial","ses homologues")?
- j'utilise
hist = New ThCharts.Histogram(Dtable, graduation)
hist.Render(HttpContext.Current)
Le graphique efface completement les autres données de la page. comment y remédier et le placer à l'endroit voulu?
- Est il possible de modifier les couleurs sans modifier la dll thcharts?
13 nov. 2005 à 22:05
Et encore bravo pour le code
13 nov. 2005 à 00:50
Je me permets de te demander après quelque test une petite info
Quand je charge Histogram hist=new Histogram(dt,graduation); ou dt est un DataTable qui contient une liste de nombre (via requête)
Le résultat est un graph. vue de profile
Qu'elle est la variable pour avoirs une vue de face comme lors de l'utilisation des fichier xml
8 juin 2005 à 12:17
1 juin 2005 à 21:56
Félicitations
18 avril 2005 à 17:23
c'est trés beau le résultat, moi qui pensait générer des histogrammes en deux coups de cuillères à pot !!!
18 avril 2005 à 10:04
c'est sympas d'avoir pris le temp
Merci encore
16 avril 2005 à 12:06
(Bien que cela n'ai pas trop de rapport avec l'ASP)
16 avril 2005 à 11:23
1- Dans le fichier histogram.cs (dans les sources du Zip) :
- ajouter la ligne: using System.IO;
- ajouter la surcharge suivante:
public Stream Render()
{
Stream stream=new MemoryStream();
System.Drawing.Image img;
Initialisation(tabl.GetLength(0));
y=h+y;
img=Building(tabl,graduation,intitule);
if (err) img=Erreur();
Quality();
img.Save(stream,ici,eps);
return stream;
}
2- compiler.
3- Créer un Form comme suit en ajoutant bien ThCharts parmis les références.
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Data;
using ThCharts;
public class MainForm : System.Windows.Forms.Form
{
public MainForm()
{
InitializeComponent();
}
[STAThread]
public static void Main(string[] args)
{
Application.Run(new MainForm());
}
#region Windows Forms Designer generated code
private void InitializeComponent() {
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(608, 502);
this.Name = "MainForm";
this.Text = "MainForm";
this.Paint += new System.Windows.Forms.PaintEventHandler(this.MainFormPaint);
}
#endregion
void MainFormPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
float[] graduation={2.5f,5.0f,7.5f,10.0f};
DataSet ds=new DataSet();
ds.ReadXml("data1.xml");
Histogram hist=new Histogram(ds.Tables[0],graduation);
hist.width=400;
hist.height=500;
hist.unit="Kg";
string[] intitule={"Banane","Orange","Citron","Fraise"};
hist.titlesSeries=intitule;
Image image=Image.FromStream(hist.Render());
Graphics g=e.Graphics;
g.DrawImage(image,10,10);
}
}
4- compiler et executer. (penser à placer le fichier data1.xml dans le même répertoire.)
5- ça devrait marcher.
15 avril 2005 à 10:24
14 avril 2005 à 20:02
jujubaud, le code qui est dans le zip est commenté (pas beaucoup mais un peu quand même) et la page Exemple.aspx présente l'ensemble des propriétés sur lesquelles on peut aisément agir.
Pour ce qui est des variables passées dans le constructeur: le premier argument est un DataTable contenant l'ensemble des données chiffrées (entiers ou decimaux) et le deuxieme argument correspond au graduations que l'on souhaite voir sur l'axe des ordonnées.
<%@ Page Language="VB" %>
<%@ import Namespace="ThCharts" %>
<%@ import Namespace="System.Data" %>
<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
Dim graduation(5) As Single={250f,500f,750f,1000.0f}
Dim ds As DataSet
ds=New DataSet()
ds.ReadXml("data.xml")
Dim hist As Histogram
hist=New Histogram(ds.Tables[0],graduation)
hist.Render(this.Context)
End Sub
</script>
J'espère que celà vous aidera.
14 avril 2005 à 10:18
Pourrai tu par exemple présisé l'utilité des différente varianble de ta classe histogramme.
Je te remercie par avance
11 avril 2005 à 18:28
je débute encore en C#
Merci d'avance
10 mars 2005 à 09:10
9 mars 2005 à 12:37
10