LoginSignup
20
24

More than 5 years have passed since last update.

快適なC++生活のためにスクリプト言語を使おう3 ーグラフ作成はmatplotlibにまかせようー

Last updated at Posted at 2016-02-28

C++でプログラムを開発し不満を感じる部分は、グラフ用のライブラリです。
まわりにはExcelでグラフを書いている人もいるのですが、
私は次の点でExcelをあまり使いません。

Excelが適さない領域

・2万を超えるようなデータ数のとき(注1)
・ヒストグラムを書きたいとき(注2)
・データと処理と描画とを明確に区別したいとき
・Windows、Linuxでクロスプラットフォームで利用したいとき

現在の私の対処方法

Matplotlibをpythonから使う。
理由1:Pythonからmatplotlibを日常的に使い慣れているから
理由2:データをファイルベースにして、pythonスクリプトを内部的に動作させれば、事足りる。
理由3:windows,Linuxで共通に動作する無料で商用開発にも利用可能なライブラリを知らないため。

記事C++のコードから簡単にmatplotlibを使ってグラフを作成する方法

に紹介されている方法を使うと
matplotlib-cpp
を使って、C++からあたかもC++の自前のプロットライブラリのように
matplotlibを使えるようです。

付記:Gnuplotをラッパー越しに使う手もあるけど

 Gnuplotはとてもお世話になったプログラムです。Windows/Linux/Cygwinなどの環境で使ったことがあります。OS依存性が少なくグラフを書けるので、とても重宝しました。以下に示す特徴はとても役立ちました。Gnuplotは今でもいろんなプログラムの中でグラフ作成を担当する形で使われています。
 私自身はpython環境下でMatplotlibを使うようになってからは、gnuplotを使うことが少なくなりました。
Gnuplotの特徴
 ファイルベースのデータ入力に対してグラフを手短なスクリプトで書ける。
 awkなどのコマンドラインツール(パイプ)との相性がよい。
 ポストスクリプトファイルでグラフを出力できる。
 非線形の最小2乗法を使って関数のフィッティングができる。

Matplotlibの優位性
 MATLABのグラフィックに匹敵するレベルでのグラフの作成ができる。
 1枚のfigureの中で複数のsubplotができる。
 画像などの表示用の関数が用意されている。

注1:
Excel グラフの仕様と制限 2-D グラフの 1 つのデータ系列に含めることのできるデータ要素 32,000

注2:
エクセルにおける度数分布表とヒストグラムの書き方
Excelでヒストグラム(度数分布図)

前にこんなのを書いていた。
C++からmatplotlibを使いたい

参考情報:日本語を使う際にどうしたらいいのか

既に記事を書かれている方がいらっしゃるので、それを紹介する。
matplotlibで日本語
matplotlib と Seaborn の軸の日本語設定
matplotlibで、判例やグラフタイトルに日本語を使用する

20
24
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
24