2017-02-17 48 views
-1

我想下面的步驟:如何通過選擇行繪製在C#中使用Visual Studio中的C#另一種形式的圖形

我讀.csv文件,但我不能傳遞選定2行在form.cs.please中繪製圖形,給予我幫助。如果您可以給出任何代碼示例,對我來說這是一個很大的進步。謝謝。我將它編碼如下,我想通過所選列值並繪製一個通過在C#中使用Visual Studio以另一種形式顯示圖形。 我的.csv文件如下所示: 日期,週期,計劃,步驟,AvT1,St1,TargetE1,AvE1,AvI1 7/2/2017,11:19,0,1,25.978,State1,0, - 0.2248319,0.0066
7/2/2017,11:19,0,1,25.978,State1,0,-0.2264814,0.0088 7/2/2017,11:19,0,2,25.978,State1,0, -0.2322548,0.0088
2017年7月2日,11:19,0,2,25.978,State1,0,-0.2583174,0.0088

(考慮AVE1作爲x軸和AvI1爲y軸)

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.IO; 

namespace GraphCsvInput 
{ 

    public partial class Form1 : Form 
    { 
     DataGridView my_gridview = new DataGridView(); 
     DataTable my_datatable = new DataTable(); 

     //private Form2 frm2; 
     public Form1() 
     { 
      InitializeComponent(); 

     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      this.Size = new Size(750,500); 
      my_gridview.Size = new Size(600,400); 
      my_gridview.Location=new Point(5,5); 

      string[] raw_txt = System.IO.File.ReadAllLines("C://Users//SampleGraphFile_CSV.csv"); 
      string []data_col = null; 
      int x = 0; 
      foreach(string text_line in raw_txt) 
      { 

       data_col = text_line.Split(','); 
       if(x==0) 
       {for(int i=0;i<=data_col.Count()-1;i++) 
       { 
        my_datatable.Columns.Add(data_col[i]); 
       } 

        x++; 
       } 
       else 
       { 

        my_datatable.Rows.Add(data_col); 

       } 
       // MessageBox.Show(data_col[6]); 
      } 
      my_gridview.DataSource = my_datatable; 
      this.Controls.Add(my_gridview); 


     } 

    } 

    } 
+0

你能解釋一下你想達到什麼嗎?您的csv的外觀如何以及您想要從中獲得什麼? – A3006

+0

非常感謝您回答我的問題。我對C#語言更新。我在調用類和表單之間有問題。我想要做以下步驟:1。閱讀.csv文件。 2.將感興趣的參數存儲在類模型中。 3.將圖形生成插入Manager類並引入繪製圖形的方法。 4.上述方法應讀取Class對象並繪製Graph.I要讀取.csv文件並獲取選定行並傳遞該數據以根據X和Y軸繪製圖形。感謝您對我的問題的合作。 – SNP

+0

基本點保持不變...您的csv的外觀如何?您可以更新問題並粘貼樣本行。 – A3006

回答

0

試試這個...

創建一個類來保存喜歡的價值觀......

public class GraphsData 
{ 
    public double XAxis { get; set; } 
    public double YAxis { get; set; } 
} 

然後調用下面的方法將產生下面粘貼的結果。

public static void CreatGraph() 
    { 
     var raw_txt = System.IO.File.ReadAllLines(@"D:\\Projects\\GraphData.csv"); 

     var v2 = from p in raw_txt.Skip(1) 
       select new GraphsData 
       { 
        XAxis = double.Parse((p.Split(','))[7]), 
        YAxis = double.Parse((p.Split(','))[8]) 
       }; 


     foreach (var item in v2) 
     { 
      Console.WriteLine(item.XAxis + " | " + item.YAxis);  
     } 

    } 

這將產生以下輸出

-0.2248319 | 0.0066 
-0.2264814 | 0.0088 
-0.2322548 | 0.0088 
-0.2583174 | 0.0088 

IMP

您的CSV格式不正確。在最後一行中,注意2個逗號,這可能會產生錯誤的結果。

升級,以形成GRAPH

public void CreatGraph() 
    { 

     var raw_txt = System.IO.File.ReadAllLines(@"D:\\GraphData.csv"); 
     System.Data.DataTable dt = new System.Data.DataTable(); 

     dt.Columns.Add("x_axis"); 
     dt.Columns.Add("y_axis"); 

     DataTable myData = raw_txt.Skip(1) 
        .Select(x => 
        { 
         var row = dt.NewRow(); 
         row.SetField<string>("x_axis", x.Split(',')[7]); 
         row.SetField<string>("y_axis", x.Split(',')[8]); 
         return row; 
        }).CopyToDataTable(); 

     chart1.Series.Add("test"); 
     chart1.Series["test"].XValueMember = "x_axis"; 
     chart1.Series["test"].YValueMembers = "y_axis"; 
     chart1.DataSource = myData; 
     chart1.DataBind(); 
    } 

上插入形式的圖形控件(我的控制的名稱是 「chart1」)。然後點擊一個按鈕調用這個函數。

+0

非常感謝您的幫助sir.yes先生,最後兩列是我的打字錯誤。感謝您sir.may我知道如何將該值傳遞給Windows窗體應用程序來繪製圖形。如果您可以,它是一大幫助我瞭解這一點。我是這門語言的新學習者。我喜歡學習,所以可以給任何鏈接學習這個關鍵詞的做法。 – SNP

+0

非常感謝您的支持。您可以告訴如何將此值傳遞給Windows窗體應用程序的窗體來繪製圖形。我是這門語言的新學習者。所以,您可以解釋一下,這對我來說是很有幫助的。 – SNP

+0

我試過了,但是我找不到在窗體中繪製圖形的合適方法。 – SNP