如何传递选定的行以在 C# 中以另一种形式绘制图形
how to pass selected row to draw a graph in another form in C#
我想按照以下步骤在 C# 中使用 Visual studio:
我阅读了 .csv 文件,但我无法通过选定的 2 行来绘制图表 form.cs.please 为 me.if 提供帮助 你可以提供任何代码示例,这是一个很大的进步对于 me.thank you.I 编码如下,我想通过在 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
7/2/2017 ,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);
}
}
}
试试这个...
创建一个 class 来保存值,例如...
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 个逗号,这可能会产生错误的结果。
更新以创建图表
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")。然后点击一个按钮调用这个函数。
我想按照以下步骤在 C# 中使用 Visual studio:
我阅读了 .csv 文件,但我无法通过选定的 2 行来绘制图表 form.cs.please 为 me.if 提供帮助 你可以提供任何代码示例,这是一个很大的进步对于 me.thank you.I 编码如下,我想通过在 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
7/2/2017 ,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);
}
}
}
试试这个...
创建一个 class 来保存值,例如...
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 个逗号,这可能会产生错误的结果。
更新以创建图表
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")。然后点击一个按钮调用这个函数。