C#.NETのChartで確率密度分布グラフ表示

C#.NET

データベース接続して、データ取得して確率密度分布図作成してみた

C#でoracleDatabaseのデータを取得して、データの確率密度分布図を作図するソースコードを書いてみました。

色々調べたのですが、あまり情報が載ていなくて、なんとか試行錯誤して出来た感じです。

処理のフロー

  • 事前にoracleDBにデータを入れておく。
  • oracleDBに接続
  • select文のクエリーでデータ取得
  • LinQでList化する。
  • 確率密度分布関数で計算し、データを取得する
  • グラフにデータプロットして描画させる。

OracleDBにデータを作成

Create table文でCHARTテーブルを作成、カラム(列)にNo,Value1,Value2を追加。

value1データは乱数で取得した数値を文字列として、2000個入れています。

Oracleデータベース接続し、データ取得

データベースに入れるデータは書きのcsvファイルで

ここで、ソースコードの全文を載せておきます。後述にて解説致します。

ビルドして、実行すると、下記のグラフのような確率密度分布図が描画される。value1のデータは、乱数で取得したので、均等にばらつきがある値が入っています。

 

Chartコントロールを画面上に配置

まずは、画面でchartコントロールを配置します。Formのデザイナーエディター画面を開いて、ツールボックスのデータ>ChartコントロールをForm画面上に配置。

Chartプロパティ画面で、seriesコレクション…を開いてChartTypeで、Column(棒グラフ)に設定する。

確率密度関数

  • x:データ(データベースから取得したデータ)
  • μ:xの平均値
  • σ:xの標準偏差

List化したデータからLinqを活用して、μ:平均値とσ:標準偏差を求めている。

確率分布関数式をソースコードで表現し、各値を代入する。

グラフにデータプロット

グラフにデータプロットする。

まとめ

oracleDBからデータを取得し、確率密度分布図を作成するソースコードを載せてみました。

仕事で確率密度分布図を使うので、C#でグラフ表示できないか。と、今回調べてなんとか実現できました。

誰かのお役に立てれば幸いです。