matplotlib-cpp は、Python およびその科学計算用ライブラリ NumPy のためのグラフ描画ライブラリ matplotlib を、C++ から利用できるようにしたヘッダーオンリーライブラリです。MIT ライセンスに従っています。
matplotlib-cpp がどんなものか、使ってみました。プロジェクトサイトは下記の Github にあります。
matplotlib-cpp のプロジェクトサイト (Github)
下記の OS 環境で動作確認をしています。
![]() |
Fedora Linux 36 | x86_64 |
適当なディレクトリ内で、上記プロジェクトサイトからクローンしておきます。
$ git clone git@github.com:lava/matplotlib-cpp.git
:
:
その他に必要なパッケージは、Python の matplotlib と numpy です。下記のようにしてインストールします。matplotlib は numpy に依存していますので、一緒にインストールされます。なお、コンパイルには g++ (gcc-c++) 使います。
[bitwalk@fedora-pc ~]$ sudo dnf install python3-matplotlib メタデータの期限切れの最終確認: 0:16:38 時間前の 2022年06月29日 20時14分15秒 に実施しました。 依存関係が解決しました。 ================================================================================ パッケージ Arch バージョン Repo サイズ ================================================================================ インストール: python3-matplotlib x86_64 3.5.2-4.fc36 updates 3.0 M 依存関係のインストール: libqhull_r x86_64 1:7.2.1-9.fc36 fedora 169 k python3-appdirs noarch 1.4.4-5.fc36 fedora 22 k python3-brotli x86_64 1.0.9-7.fc36 fedora 319 k python3-cycler noarch 0.11.0-2.fc36 fedora 19 k python3-fonttools noarch 4.29.1-1.fc36 fedora 1.4 M python3-fs noarch 2.4.11-10.fc36 fedora 206 k python3-kiwisolver x86_64 1.4.1-1.fc36 fedora 65 k python3-matplotlib-data noarch 3.5.2-4.fc36 updates 507 k python3-matplotlib-data-fonts noarch 3.5.2-4.fc36 updates 2.3 M python3-matplotlib-tk x86_64 3.5.2-4.fc36 updates 42 k python3-munkres noarch 1.1.2-11.fc36 fedora 22 k python3-numpy x86_64 1:1.22.0-2.fc36 fedora 5.7 M python3-numpy-f2py x86_64 1:1.22.0-2.fc36 fedora 261 k python3-pillow-tk x86_64 9.1.0-1.fc36 updates 27 k python3-scipy x86_64 1.8.1-1.fc36 updates 18 M トランザクションの概要 ================================================================================ インストール 16 パッケージ ダウンロードサイズの合計: 32 M インストール後のサイズ: 132 M これでよろしいですか? [y/N]: y : :
以下のサンプルをコンパイルしてみます。
3d.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "matplotlibcpp.h" | |
namespace plt = matplotlibcpp; | |
int main() | |
{ | |
std::vector<std::vector<double>> x, y, z; | |
for (double i = -5; i <= 5; i += 0.25) | |
{ | |
std::vector<double> x_row, y_row, z_row; | |
for (double j = -5; j <= 5; j += 0.25) | |
{ | |
x_row.push_back(i); | |
y_row.push_back(j); | |
z_row.push_back(::std::sin(::std::hypot(i, j))); | |
} | |
x.push_back(x_row); | |
y.push_back(y_row); | |
z.push_back(z_row); | |
} | |
plt::plot_surface(x, y, z); | |
plt::show(); | |
} |
クローンした matplotlib-cpp から matplotlibcpp.h を、サンプル 3d.cpp があるディレクトリ内にコピーして、以下のようにコンパイルして実行します。
[bitwalk@fedora-pc test_matplotlib-cpp]$ g++ 3d.cpp -std=c++11 -I/usr/include/python3.10 -lpython3.10 -o 3d [bitwalk@fedora-pc test_matplotlib-cpp]$ ./3d
コンパイルした 3d の実行結果
C++ で matplotlib を簡単に利用できるのは確認できましたが、さて、何に使おうか…。
参考サイト
- matplotlib-cppでC++からグラフを表示する | 東京工業大学デジタル創作同好会traP
- c++でmatplotlibを使う – MY ROBOTICS
- C++でグラフ描画をするならmatplotlib-cppを使ってみる? | HIRO LAB BLOG
- C++のコードから簡単にmatplotlibを使ってグラフを作成する方法 - MyEnigma

にほんブログ村
0 件のコメント:
コメントを投稿