1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ZedGraph;
namespace TP3
{
public partial class Form1 : Form
{
ZedGraphControl graph;
GraphPane pane;
public Form1()
{
InitializeComponent();
}
private void Form1_Load_1(object sender, EventArgs e)
{
// cbConst.SelectedIndex = 0;
/// Cette méthode met le graphisme en place.
/// Elle initialise aussi certains paramètres à des valeurs par défaut.
graph = new ZedGraphControl(); // Créer la composante graphique
graph.Parent = panel; // Placer la composante sur le panel de la fiche
// Ajuster la taille de la composante en fonction de la fiche
graph.Width = panel.Width - 4;
graph.Height = panel.Height -4;
pane = graph.GraphPane; // Créer l'objet graphique
pane.XAxis.MajorGrid.IsVisible = true; // Demander l'affichage de grilles
pane.YAxis.MajorGrid.IsVisible = true;
pane.XAxis.Title.Text = "Abcisse (X)"; // Identifier les axes
pane.YAxis.Title.Text = "Ordonnée (Y)";
pane.Title.Text = "Le titre du graphique";
// Mettre une petite couleur de fond pour faire joli
pane.Chart.Fill = new Fill(Color.White, Color.LightBlue, 35.0f);
}
private void bLire_Click(object sender, EventArgs e)
{
int N;
double[] longueur;
;
// On commence par créer un OpenFileDialog
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "Fichier à lire";
if (ofd.ShowDialog() != DialogResult.OK) return;
// On ouvre le fichier sélectionné en lecture
FileStream f = new FileStream(ofd.FileName,
FileMode.Open,
FileAccess.Read,
FileShare.Read);
// Déterminons le nombre d'entier qu'il contient
N = (int)f.Length / sizeof(double);
longueur = new double[N];
// maintenant lisons ces entiers
byte[] b = new byte[sizeof(double)];
PointPairList point = new PointPairList();
for (int i = 0; i < N / 2; i++)
{
f.Read(b, 0, sizeof(double));
Double X = BitConverter.ToDouble(b, 0);
f.Read(b, 0, sizeof(double));
Double Y = BitConverter.ToDouble(b, 0);
point.Add(X, Y);
}
// On Réinitialise le ListView lvData
// On insère les valeurs sur notre graphique ==> créer une "courbe".
// La courbe est rouge avec un cercle à la position de chacune des valeurs.
LineItem courbe = pane.AddCurve("données", point, Color.Red, SymbolType.Circle);
courbe.Symbol.Fill = new Fill(Color.Red);
// On donne des titres aux axes et au graphique
pane.XAxis.Title.Text = "Abcisse(X)";
pane.YAxis.Title.Text = "Ordonnées(Y)";
pane.Title.Text = "R=" + r(point);
pane.Legend.IsVisible = false; // Pas besoin de légende
graph.AxisChange(); // Pour forcer un réétalonnage des axes
graph.Invalidate(); // Pour redessiner le graphique
// On ajuste les axes en fonctions des étendues de X et Y
}
// On Calcule le coéfficient de corrélation de A et B
double r(PointPairList point)
{
int N = point.Count;
double SommeXY = 0, SommeX = 0, SommeY = 0, SommeXX = 0, SommeYY = 0;
for (int i = 0; i < N; i++)
{
SommeXY += point[i].X * point[i].Y;
SommeX += point[i].X;
SommeY += point[i].Y;
SommeXX += (point[i].X * point[i].X);
SommeYY += (point[i].Y * point[i].Y);
}
//Formule du Coefficient de Corrélation
return ((N * SommeXY) - SommeX * SommeY) / (Math.Sqrt((N * SommeXX - SommeX * SommeX) * (N * SommeYY - SommeY * SommeY)));
}
}
} |
Partager