分類:[C#]
2010/12/02(Thu) 10:37:11 編集(投稿者)
2010/12/01(Wed) 14:18:18 編集(投稿者)
2010/12/01(Wed) 14:18:07 編集(投稿者)
2010/12/01(Wed) 14:11:55 編集(投稿者)
<pre><pre>質問させていただきます。Windows XP VisualStudio C# 2010 Expressを使ってプログラムを作っています。
以前DataGridViewにcsvファイルの内容を表示するにはどのようにすればよいのか質問をし、その点は皆さんのおかげで動作するようにできました。
次にその内容をグラフに描画したいのですが、どの用にcsvファイルの内容を取得して良いのか分かりません。dataGridViewに表示するときに用いたDataTableを使うべきなのか、それとも別によい方法があるのか...私ではどのようにすることがベストなのか分かりません。
そこで皆さんの知識を借りたいと思い、この場に書かせてもらいました。
必要かどうかわからないのですが、DataGridViewにcsvファイルを読み込んだソースコードと、グラフの描画をするソースコードを以下にかきますので、ご指摘等ありましたらよろしくお願いします。
[補足]
csvファイルは365行5列のものでその2列目と4列目の内容でグラフを作成するつもりです。分かりづらくてすいません。
↓csvファイルの内容を表示する部分
public void read_button_Click(object sender, EventArgs e)
{
DataSet dataset_sam = new DataSet();
dataset_sam.Tables.Add("sample");
dataset_sam.Tables["sample"].Columns.Add("A");
dataset_sam.Tables["sample"].Columns.Add("B");
dataset_sam.Tables["sample"].Columns.Add("C");
dataset_sam.Tables["sample"].Columns.Add("D");
dataset_sam.Tables["sample"].Columns.Add("E");
System.IO.StreamReader StreamReader = new System.IO.StreamReader(@"C:\csv.csv", System.Text.Encoding.GetEncoding(932));
while (StreamReader.Peek() != -1)
{
string[] stringBuffer;
stringBuffer = StreamReader.ReadLine().Split(',');
//DataSetの作成
DataRow row = dataset_sam.Tables["sample"].NewRow();
for (int counter = 0; counter < row.ItemArray.Length; counter++)
{
row[counter] = stringBuffer[counter];
}
dataset_sam.Tables["sample"].Rows.Add(row);
}
StreamReader.Close();
dataGridView1.DataSource = dataset_sam;
dataGridView1.DataMember = "sample";
}
↓グラフの描画を行う部分
private void CreateGraph(ZedGraphControl zgc)
{
GraphPane myPane = zgc.GraphPane;
myPane.Title.Text = "My Test Graph\n(For Code Sample)";
myPane.XAxis.Title.Text = "My X Axis";
myPane.YAxis.Title.Text = "My Y Axis";
myPane.XAxis.MajorGrid.IsVisible = true;
myPane.YAxis.Scale.FontSpec.FontColor = Color.Red;
myPane.YAxis.Title.FontSpec.FontColor = Color.Red;
myPane.YAxis.MajorTic.IsOpposite = false;
myPane.YAxis.MinorTic.IsOpposite = false;
myPane.YAxis.MajorGrid.IsZeroLine = false;
myPane.YAxis.Scale.Align = AlignP.Inside;
myPane.YAxis.Scale.Min = 0;
myPane.YAxis.Scale.Max = 15;
myPane.YAxis.Scale.IsVisible = true;
myPane.Chart.Fill = new Fill(Color.White, Color.LightGray, 45);
zedGraphControl1.IsShowPointValues = true;
/* double x, y1, y2;
PointPairList list1 = new PointPairList();
PointPairList list2 = new PointPairList();
for (int i = 0; i < 36; i++)
{
x = (double)i + 5;
y1 = 1.5 + Math.Sin((double)i * 0.2);
y2 = 3.0 * (1.5 + Math.Sin((double)i * 0.2));
list1.Add(x, y1);
list2.Add(x, y2);
}*/
LineItem myCurve = myPane.AddCurve("Porsche", list1, Color.Red, SymbolType.Diamond);
LineItem myCurve2 = myPane.AddCurve("piper", list2, Color.Blue, SymbolType.Circle);
zgc.AxisChange();
}</pre></pre>