chart1.Series[i].Points.AddXY(Convert.ToDouble(AffichePts.Columns[1].ToString()), Convert.ToDouble(AffichePts.Columns[i + 1].ToString()));
for (int i = 0; i < AffichePts.ColumnCount-1; i++) { chart1.DataSource = AffichePts; chart1.Series.Add("Ma série"); chart1.Series[i].IsXValueIndexed = true; chart1.Series[i].Name = "courbe - " + (i + 1); for (int j = 0; j < AffichePts.RowCount - 1; j++) { chart1.Series[i].Points.AddXY(Convert.ToInt32(AffichePts.Rows[j][1].ToString()), Convert.ToInt32(AffichePts.Rows[j][i + 1].ToString())); } chart1.Series[i].ChartType = SeriesChartType.Spline; chart1.DataBind(); } chart1.Update();
AffichePts.Rows[j][1]impossible d'appliquer une indexation a un datagridviewRow
AffichePts.Rows[j][1].ToString?
AffichePts.Rows[j].Cells[1].Value
chart1.DataBind();
chart1.Series[i].Points.AddXY(Convert.ToInt32(AffichePts.Rows[j].Cells[0].Value.ToString()), Convert.ToInt32(AffichePts.Rows[j].Cells[0].ToString()));
ChartArea ChartArea1 = new ChartArea(); // Ajouter le Chart Area à la Collection ChartAreas du Chart chart1.ChartAreas.Add(ChartArea1); // Créer deux data series (qui contiendront les DataPoint) Series s1 = new Series(); Series s2 = new Series(); for (int j = 0; j < AffichePts.RowCount - 1; j++) { s1.Points.AddXY(Convert.ToInt32(AffichePts.Rows[j][1].ToString()), Convert.ToInt32(AffichePts.Rows[j][2].ToString())); }
AffichePts.Rows[j][1]:/
for (int i = 0; i < AffichePts.ColumnCount - 1; i++)//on ajoute autant de séries que necessaire
{
chart1.Series.Add(new Series());
chart1.Series[i].ChartType = SeriesChartType.Spline;
for (int j = 0; j < AffichePts.RowCount - 1; j++)
{
chart1.Series[i].Points.AddXY(Convert.ToInt32(AffichePts.Rows[j].Cells[0].Value.ToString()), Convert.ToInt32(AffichePts.Rows[j].Cells[0].ToString()));
chart1.Series[i].ChartArea = "ChartArea1";
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionfor (int i = 0; i < AffichePts.ColumnCount - 1; i++)//on ajoute autant de séries que necessaire
{
chart1.Series.Add(new Series());
chart1.Series[i].ChartType = SeriesChartType.Spline;
chart1.Series[i].Name = "Courbe - " + (i+1);
for (int j = 0; j < AffichePts.RowCount - 1; j++)
{
chart1.Series[i].Points.AddXY(AffichePts.Rows[j].Cells[0].Value, AffichePts.Rows[j].Cells[i+1].Value);
chart1.Series[i].ChartArea = "ChartArea1";
}
}
string path = Application.StartupPath + @"\test"; string[] txtFiles = Directory.GetFiles(path);//répère le nom des fichier dans le répertoire List<string[]> fichiers = new List<string[]>(); //parce qu'avec .Add c'est lus simple que de set trainer un index foreach(string chemin in txtFiles) fichiers.Add(File.ReadAllLines(chemin));//File.ReadAllLines retourne directement un tableau de string contenant chaque lignes chart1.Series.Clear(); for (int i = 0; i < fichiers.Count; i++)//on ajoute autant de colonnes que necessaire, pareil pour les séries { dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()); if (i > 0)//la première colone sert de X donc elle ne fait pas l'objet d'une série { Series s = chart1.Series.Add("Série " + i); s.IsXValueIndexed = true; s.ChartType = SeriesChartType.Line; } } for(int i = 0; i < fichiers[0].Length;i++)//Puisque tous les fichiers ont le même nombre de lignes, je prend la longueur du premier tableau en référence { DataGridViewRow row = dataGridView1.Rows[dataGridView1.Rows.Add()];//ajoute une ligne double x = Convert.ToDouble(fichiers[0][i], System.Globalization.CultureInfo.InvariantCulture);//je mets Invariant culture pour te prémunir d'un fichir avec des points comme séparateur de décimale si ton système est en virugule, ça ne marche pas dans l'autre sens for (int j = 0; j < fichiers.Count; j++) { row.Cells[j].Value = fichiers[j][i];//remplit les cellules if (j > 0) chart1.Series[j - 1].Points.AddXY(x, Convert.ToDouble(fichiers[j][i], System.Globalization.CultureInfo.InvariantCulture));//remplit les séries } } chart1.ChartAreas[0].RecalculateAxesScale();