C#でグラフ描画(Visual Studio2017)
今回はC#とVisual Studio2017を使ってグラフの描画をしてみます。
1. プロジェクトの作成
Visual Studio2017を起動して、ファイル(F) > 新規作成(N) > プロジェクト(P)
2. Chartの追加
画面左端のツールボックスをクリックしてデータ>Chartをダブルクリック。
するとForm1.cs[デザイン]がこんな風に表示される。
直感的にウィンドウの大きさを変えられるので適当にサイズを変えておいてください。
3. sin,cos波を表示させてみる。
このサイトを参考にさせていただき、sin,cos波を表示させてみる。
C#でグラフを描く(Chartコントロールによる方法) - whoopsidaisies's diary
まずForm1.cs[デザイン]のグラフをダブルクリック。するとForm1.csが開く。
クラスの中にコードを追加。コードの意味は上の参考サイトを御覧ください。
namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void chart1_Click(object sender, EventArgs e) { } //written by whoopsidaisies private void PlotSinCos() { // 1.Seriesの追加 chart1.Series.Clear(); chart1.Series.Add("sin"); chart1.Series.Add("cos"); // 2.グラフのタイプの設定 chart1.Series["sin"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; chart1.Series["cos"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; // 3.座標の入力 for (double theta = 0.0; theta <= 2 * Math.PI; theta += Math.PI / 360) { chart1.Series["sin"].Points.AddXY(theta, Math.Sin(theta)); chart1.Series["cos"].Points.AddXY(theta, Math.Cos(theta)); } } } }
そうしたら次にForm1()にPlotSinCos()を記入します。
public Form1()
{
InitializeComponent();
PlotSinCos();
}
この状態で緑色三角の開始ボタンを押してみてください。ビルトして実行されます。
このようなウィンドウが出ていれば成功です。
4. 自分が知りたい関数のグラフを記入する。
今回私が知りたいのは、x=n*cos(t)+cos(n*t),y=n*sin(t)+sin(n*t) のグラフです。
同じクラス内にnとtの値を渡したらそれぞれx,yが返る関数を作ります。
//written by whoopsidaisies private void PlotSinCos() { // 1.Seriesの追加 chart1.Series.Clear(); chart1.Series.Add("test"); // 2.グラフのタイプの設定 chart1.Series["test"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; // 3.座標の入力 for (double theta = 0.0; theta <= 2 * Math.PI; theta += Math.PI / 360) { chart1.Series["test"].Points.AddXY(Keisan(2,theta,0), Keisan(2,theta,1)); //書き換え } } //関数を追加 private double Keisan(double n, double t, int selectXY) { double x, y; x = n * Math.Cos(t) + Math.Cos(n * t); y = n * Math.Sin(t) + Math.Sin(n * t); return (selectXY == 0) ? x : y; }
ビルトして実行するとこんな形に。