- 追加された行はこの色です。
- 削除された行はこの色です。
*[[PLplot:http://plplot.sourceforge.net/]] [#tc328e7c]
#contents
*PLplot とは [#r3877799]
PLplot は,グラフを作成するためのライブラリです.~
PDF, EPS, PS, EPS+LaTeX, SVG 形式などに出力可能です.~
-[[PLplot Home Page - Main:http://plplot.sourceforge.net/]]
**動作環境 [#dd55c850]
Windows, OS X, Linux
**License [#z821faef]
LGPL
**ChangeLog [#v32a5d09]
http://sourceforge.net/p/plplot/code/HEAD/log/
**関連リンク [#s690b648]
-https://sites.google.com/site/makeplplot/
-[[Momma's Wiki: PLplot - プロットライブラリ http://plplot.sourceforge.net/:http://www.eml.ele.cst.nihon-u.ac.jp/~momma/wiki/wiki.cgi/PLplot.html]]
-[[グラフ描画ライブラリ"PLplot"のインストール:http://d.hatena.ne.jp/A7M/20080125/1201242751]]
*インストール [#x8c634ec]
**Windows [#z2e8dabc]
***MinGW [#h997502f]
-[[Configure PLplot for MinGW/CLI:http://www.miscdebris.net/plplot_wiki/index.php?title=Configure_PLplot_for_MinGW/CLI]]
[[Poppler]] を参考にして MinGW, CMake, pkg-config 等をインストールします.
PLplot で PDF ファイルを作成する場合は [[Qt]] または [[libHaru]] が必要です.~
PLplot をインストールします.~
-DENABLE_d=ON にするとビルド時にエラーが発生したので,-DENABLE_d=OFF としました.~
-DPLD_pdf=ON にするとビルド時にエラーが発生したので,-DPLD_pdf=OFF としました.~
$ curl -R -L -O http://download.sourceforge.net/plplot/plplot-5.10.0.tar.gz
$ tar xvf plplot-5.10.0.tar.gz
$ cd plplot-5.10.0
$ mkdir build
$ cd build
$ cmake .. -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX=/mingw -DBUILD_SHARED_LIBS=ON -DBUILD_TEST=ON -DENABLE_d=OFF -DPLD_pdf=OFF -DPLD_ps=ON -DPLD_pstex=ON
$ make
$ make install
**Linux [#o3b250b6]
***Arch Linux [#g5b0198c]
-https://aur.archlinux.org/packages/plplot/
*アンインストール [#s2821338]
**Windows [#j9a86478]
***MinGW [#d6cfb753]
cmake の Makefile でインストールした場合は,make uninstall が使えないので,アンインストールする場合は,ビルドしたディレクトリで
$ sed -e "s/\r$//" install_manifest.txt | sort | uniq | xargs rm
を実行します.
*使い方 [#qd056acb]
**コードサンプル [#p78cac37]
http://sourceforge.net/p/plplot/code/HEAD/tree/trunk/examples/
***ビルド [#hc1cce0b]
サンプルをビルドしてみます.
$ cd /mingw/share/plplot5.10.0/examples/
$ cd c
$ make
PLplot でデバイスに出力する場合は wingcc.dll, ps.dll などのドライバ (DLL ファイル) が必要になります.~
/mingw/lib/plplot5.10.0/driversd/ にパスを通します.~
$ export PATH=/mingw/lib/plplot5.10.0/driversd:$PATH
サンプルを実行します.~
$ ./x00c
PLplot library version: 5.10.0
Plotting Options:
< 1> wingcc Win32 (GCC)
< 2> ps PostScript File (monochrome)
< 3> psc PostScript File (color)
< 4> xfig Fig file
< 5> pstex Combined Postscript/LaTeX files
< 6> null Null device
< 7> mem User-supplied memory device
< 8> svg Scalable Vector Graphics (SVG 1.1)
< 9> pdf Portable Document Format PDF
<10> bmpqt Qt Windows bitmap driver
<11> jpgqt Qt jpg driver
<12> pngqt Qt png driver
<13> ppmqt Qt ppm driver
<14> tiffqt Qt tiff driver
<15> svgqt Qt SVG driver
<16> qtwidget Qt Widget
<17> epsqt Qt EPS driver
<18> pdfqt Qt PDF driver
<19> extqt External Qt driver
<20> memqt Memory Qt driver
Enter device number or keyword: 1
サンプルが表示されます.~
コマンドライン引数からも指定できます.
./x00c -dev wingcc
EPS+LaTeX 形式で出力したい場合は Plotting Options に pstex を指定するか,コマンドラインから以下のようにすると x00c.eps と x00c.eps_t が出力されます.
./x00c -dev pstex -o x00c.eps
以下のようにして使用します.
\documentclass{article}
\usepackage[dvips]{graphicx}
\begin{document}
\input{x00c.eps_t}
\end{document}
コマンドライン引数の詳細は
./x00c -h
で確認できます.
**C++11 [#id0ea4f5]
C++11 でも記述できるそうです → [[PLplotの使い方:http://d.hatena.ne.jp/ignisan/20110924/p1]]~
リンク先のコードが PLplot 5.10.0 でコンパイルできなかったので修正してみました.~
以下のコードは GCC 4.8.1, PLplot 5.10.0 でビルド,実行できます.~
$ g++ -std=c++11 x03.cc -o x03 `pkg-config --cflags --libs plplotd-c++`
----
//
// $ g++ -std=c++11 x03.cc -o x03 `pkg-config --cflags --libs plplotd-c++`
//
#include <vector>
#include <memory>
#include "plstream.h"
class Plots : public plstream {
public:
explicit Plots(int argc, const char** argv)
{
this->parseopts(&argc, argv, PL_PARSE_FULL);
this->scolbg(255, 255, 255);
this->scol0(15, 0, 0, 0);
// this->sdev("aqt"); // AquaTerm
this->init();
}
auto plot(int num,
const std::vector<double>& ax,
const std::vector<double>& ay)
-> void
{
this->col0(15);
this->env(-1.3, 1.3, -0.3, 1.3, 1, 1);
this->lab("X", "Y", "y=x#u2#d");
this->col0(1);
this->width(3);
this->line(num, &ax[0], &ay[0]);
}
};
auto main(int argc, const char** argv) -> int
{
constexpr double x_min = -1.0, x_max = 1.0;
constexpr int num = 30;
std::vector<double> ax(num), ay(num);
for (auto i = 0; i < num; ++i) {
ax[i] = x_min + (x_max - x_min) / (num - 1.0) * i;
ay[i] = ax[i] * ax[i];
}
auto pls = std::make_shared<Plots>(argc, argv);
pls->plot(num, ax, ay);
return 0;
}
----