【C#】Chart折れ線グラフ1
今まで、家ではVisual Studio 2017を使っていたのですが、やっと2019をインストールしました。
今後は2019で作成していきます。
定期的に更新されるグラフを作成します。
todo
1. 折れ線
2. 1000msec毎にグラフが更新
3. データ数は10、最大100、最小0とする
4. 新しいデータは右側、前のデータはどんどん左側に移動するように表示
5. 表示するデータは、3の範囲で設定した乱数
久しぶりにVisual C#をやるので、こんな感じだっけ……と思いながら作成しました。
新規プロジェクトを作成すると、C#のフォームアプリ作成……といった項目が出てくるので、とりあえずこれを選択。
Form.cs
特に私の方で何もしない状態だと、Form.csは以下のようになっていました。
Form()がコンストラクタだっけ……みたいな、かなり記憶喪失のような状態でしたが、
とりあえずInitializeComponent();の後に、初期でやっておきたい処理を書いていきます。
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; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } }
グラフはChartで作成。
何もツールボックスでとりあえずchart1を作成しますが、何も設定しないと白い画像が表示されるだけです。
Chartの初期設定をする関数を作成します。
引数にChart型を使おうとしたらVSに注意されました。
「using System.Windows.Forms.DataVisualization.Charting;」を指示に従って追加します。
初期設定の関数は以下のようにしました。
Chartの種類(折れ線、ポイント、棒等……)は引数で設定出来るようにしました。
ちなみに、初期で表示する値は乱数ではなく適当です。
private void initChart(Chart chart, SeriesChartType type) { // 初期化 chart.Series.Clear(); chart.ChartAreas.Clear(); // chart設定 string Name1 = "Bar1"; string AreaName1 = "chartArea1"; chart.Series.Add(Name1);// Series追加 chart.ChartAreas.Add(AreaName1); chart.Series[Name1].ChartType = type; //max, min 目盛設定 chart.ChartAreas[AreaName1].AxisY.Maximum = 100; chart.ChartAreas[AreaName1].AxisY.Minimum = 0; chart.ChartAreas[AreaName1].AxisY.Interval = 20; // 目盛線ちょっと出てるところがなくなる chart.ChartAreas[AreaName1].AxisX.MajorTickMark.Enabled = false; // データ設定 for (int i = 0; i < 10; i++) { chart.Series[Name1].Points.AddXY(i, i * 10); } }
Timerを作成していき、こちらもコンストラクタで初期設定します。
上で作成したChartの初期設定の関数もコンストラクタで呼び、今のところ以下のようになりました。
public Form1() { // コンストラクタ InitializeComponent(); // chart initChart(chart1, SeriesChartType.Line);//折れ線 // timer timer1.Interval = 1000; // msec timer1.Enabled = true; timer1.Start(); }
todoの1-3までは終わりました。
この後、定期的にChartを更新する処理を作成していきます。
続きはまた
参考
https://docs.microsoft.com/ja-jp/dotnet/api/system.timers.timer?view=net-5.0
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.datavisualization.charting.chart?view=netframework-4.8