web-dev-qa-db-ja.com

C ++の散布図

C++で散布図をグラフ化する最良の方法は何ですか?

データをファイルに書き込み、別のツールを使用していますか? Pythonにmatplotlibのようなライブラリはありますか?

23
paxos1977

私は常にデータを書き出し、次に gnuplot を使用してグラフを作成します。これは、さまざまな形式(eps、png、jpeg、xpm)でグラフを作成するために私が見つけた最良の方法です。

gnuplotは非常に簡単に散布図を作成します。 xおよびyの値がスペースで区切られた2つの列にある場合、

plot "data.txt" using 1:2 

すばやく散布図が表示されます。次に、それを調整し、他のgnuplotコマンドを使用しないことを調整できます。

あなたが科学に携わっているなら、gnuplotを学ぶことはあなたにとって非常に価値があります。それは確かにExcelのプロットをすることのがらくたを追い出し、それは紙に含めるためにプロットを作る仕事を容易にします。

31
freespace

Gnuplotのような独立したプロットツールではなく、C++ライブラリを探している場合は、次のことを検討します。

dislinはこの2つのうちでより興味深いようです。ウィキペディアの記事から抜粋した説明は次のとおりです。

DISLINは、ドイツのカトレンブルクリンダウにあるMax Planck InstituteのHelmut Michelsによって開発された、高レベルで使いやすいプロットライブラリです。 Helmut Michelsは現在、研究所のコンピューターセンターで数学者およびUnixシステムマネージャーとして働いています。

DISLINライブラリには、曲線、棒グラフ、円グラフ、3Dカラープロット、表面、等高線、マップとしてデータを表示するためのルーチンと関数が含まれています。 X11、VGA、PostScript、PDF、CGM、HPGL、SVG、PNG、BMP、PPM、GIF、TIFFなど、いくつかの出力形式がサポートされています。

DISLINは、プログラミング言語Fortran 77、Fortran 90/95およびCで使用できます。Perl言語のプロット拡張機能、PythonおよびJavaもほとんどのDISLINの現在のバージョンは9.4で、2008年10月にリリースされました。最初のバージョン1.0は1986年12月にリリースされました。

DISLINソフトウェアは、非営利目的での使用は無料です。

13
David Segonds

非常に重い解決策: [〜#〜] root [〜#〜] に対してリンクすることができます。

  • mac、Windows、Linuxで動作します
  • コンパイルまたはcintインターパーターを使用して実行します
  • カプセル化されたポストスクリプト、PDF、gif、png形式のファイルへの出力...
  • いくつかの異なるテクノロジーを使用して画面に表示する
  • 後で操作できる内部形式でデータをシリアル化する

確かに、それはほとんどの人にとっては少し多くなりますが、あなたが要求したとおりのことを行います。私はそれを知っていて、私がその種の物理学者であるためにすでに私のマシンにあるので、それを使用します。

古き良きGNU、彼らはすべてを持っています...

http://directory.fsf.org/project/plotutils/

5
paxos1977

これは確かに最良の方法ではありませんが、通常は [〜#〜] r [〜#〜] で読み取れる出力ファイルを作成し、これを適切なスクリプトと共に使用してグラフをプロットします。

4
Konrad Rudolph

ここでの問題は、C++がJavaとは異なり、組み込みのGUIまたはグラフィックスを持たないことです。C++でグラフを生成する場合は、使用可能なGUIライブラリを使用する必要があります。 OS。無料のGUIライブラリがあり、QtやGTKなどの多くのクロスプラットフォームがあります。

ただし、他の人が指摘したように、データをテキストファイルに保存し、別のプログラムを使用してグラフを生成するのが最も簡単な方法です。 gnuplotは間違いなく良い選択です。ほとんどのLinuxディストリビューションには標準で付属しており、Windowsの場合はcygwinで入手できます。

3
Dima

C++でのプロットをまだ行っていない人のために。 C++でグラフをプロットするために私がしたことを言います

  1. http://sourceforge.jp/projects/sfnet_gnuplot/downloads/gnuplot/4.4.3/gp443win32.Zip/ から圧縮ファイル「gp443win32.Zip」をダウンロードします。

  2. それを「C:\ Gnuplot」に抽出してから、「C:\ Gnuplot\gnuplot\README.Windows」を読んで、次の情報を得ました。

  3. 私はWindows 7を使用しました==> "winhlp32.exe"をダウンロードする必要があります...検索エンジンで "winhlp32.exe Windows 7"を検索して、最初のリンクにアクセスしてください。

  4. 「パス」環境変数に、「C:\ Gnuplot\gnuplot\binary」であるバイナリフォルダーのパスを追加します

  5. 次に、コンピュータをシャットダウンして、もう一度開きます。私はそれが環境変数の変更を感知しなかったことを発見した後:D

  6. プロット機能をテストするためのサンプルコードを書く必要があります:)このリンクにアクセスできます http://code.google.com/p/gnuplot-cpp/source/browse/#svn%2Ftrunk ヘッダーファイル「gnuplot_i.hpp」とソースファイル「example.cc」を表示します。

あなたは多くのグラフを取得し、適切なグラフを選択し、コアをカスタマイズし、そして楽しむ:)

2
Islam Yousry

Matplotlibに精通している場合は、 embed python C/C++アプリケーションで使用できます。目的によっては、これが簡単な解決策になる場合があります。

1
Alex Coventry

Chart Director にはC++のバインディングがあります。私は彼らの.Netライブラリーを使用しており、私はそれらにかなり満足しています。これはかなり安価なライブラリであり、さまざまな種類のグラフを実行するための機能を提供します。

0
Kibbee