SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Gnuplotあれこれ
まるやま
2013/06/26
1 / 28
Gnuplot あれこれ
私の備忘録も兼ねて
OS は Ubuntu 12.04(Quantal Quetzal) だとします
他の資料とカブっている所もあるけど、キニシナイ
2 / 28
最新版のインストール(1)
gnuplot の最新版は 4.6.3(2013/06/26 時点)
ubuntu の gnuplot パッケージを見ると、開発中の Saucy
(13.10)では 4.6.3 に対応しているので、これを使おう
gnuplot 4.6.3-1build1 のページから、全てのファイル
(xxx.orig.tar.gz, xxx.debian.tar.gz, xxx.dsc)をダウンロード
ダウンロードしたものを、すべて同じディレクトリに置く
ダウンロードしたファイルを置いたディレクトリに移動
> sudo apt-get install build-essential fakeroot dpkg-dev
これで準備が整ったので、いよいよパッケージの作成へ
3 / 28
最新版のインストール(2)
ソースの展開
> dpkg-source -x gnuplot 4.6.3-1build1.dsc
gnuplot-4.6.3 以下にソースを展開し、パッチも当ててくれる
> cd gnuplot-4.6.3
コンパイル環境を整える
通常ならば apt-get build-dep gnuplot とやれば良さそう
これは apt repository にあるソースに関して
自分で取ってきたものの場合、設定ファイルを見る必要
> vi debian/control
Build-Depends に書かれたパッケージを手動でインストール
この時、いつも使っているパッケージが依存関係から削除さ
れることがあるので、注意が必要
gnuplot の場合、libgd2-noxpm-dev を入れることによって、
gvfs-backends, libgd2-xpm などが削除されるので、パッケージ
作成が終わったら元に戻す
4 / 28
最新版のインストール(3)
コンパイルフラグの設定
せっかくソースから作るので、カスタマイズしよう
> ./configure --help とすれば、オプション一覧が分かる
パッケージのオプションは、debian/rules の conf opts
正直それほど必要無いが、--with-cwdrc でも追加してみよう
debian/rules の conf opts に --with-cwdrc を加えるだけ
コンパイル
> dpkg-buildpackage -rfakeroot -b
> cd .. (ここに deb パッケージが作られている)
削除されてしまったパッケージを復活
> sudo apt-get install gvfs-backends libgd2-xpm
12.04 デフォルトの gnuplot を削除
> sudo apt-get purge gnuplot gnuplot-nox gnuplot-x11
作ったパッケージをインストール
> sudo dpkg -i gnuplot 4.6.3-1build1 all.dev
gnuplot-x11 4.6.3-1build1 i386.deb
apt でやると -nox と -x11 で衝突を回避しれくれるが、
dpkg はしてくれないので -x11 だけを入れる
5 / 28
ヘルプの日本語化
せっかくソースがあるので、ヘルプを日本語化する
doc の下に日本語のドキュメントとパッチがあるので、それ
を当てるだけ
> cd gnuplot-4.6.3 && ./configure && make
> cd docs && make clean
> mv gnuplot.doc gnuplot-en.doc
> nkf -w80 gnuplot-ja.doc > gnuplot.doc
> nkf -w80 term-ja.diff > term.diff
> cd .. && patch -p0 < docs/term.diff
> cd docs && make
> sudo cp gnuplot.gih /usr/share/gnuplot/.
これで gnuplot のヘルプが日本語で読める
6 / 28
マニュアルの日本語化(1)
日本語マニュアルは新潟工科大学情報電子工学科竹野研究
室の gnuplot のページで公開されています
いつまでも頼るわけにはいかないし、作ってみよう
しかし、問題が山積み
pdfLATEX でコンパイルするようになっている
しかし pdfLATEX は日本語化されていない
グラフィックスタイルファイルが無い
hyperlink がうまく作れない
pdfLATEX でないと、文中のハイパーリンクが作れない
なんとか pLATEX で頑張ってみよう
7 / 28
マニュアルの日本語化(2)
pLATEX 用の設定(gnuplot-4.6.3/docs にいるとして)
> make doc2tex
> GNUPLOT LIB=../demo gnuplot plotstyles.gnu
> doc2tex -figures gnuplot.doc gnuplot.tex
> ln -s ../VERSION .
> wget http://tug.ctan.org/tex-
archive/macros/latex209/contrib/picins/picins.sty
> vi pdffigures.tex(新規)
usepackage[dvipdfmx]{graphicx}
usepackage{picins}
> vi titlepag.tex(修正)
usepackage{hyperref} のオプションに dvipdfmx を追加
その直後に以下を追加(栞の文字化け防止)
AtBeginDvi{special{pdf:tounicode EUC-UCS2}}
> extractbb *.pdf
gnuplot.tex の中の、includegraphics で指定されているファイ
ル名に、すべて.pdf の拡張子をつける
8 / 28
マニュアルの日本語化(3)
あとは pLATEX でコンパイルするだけ
> platex gnuplot.tex
> platex gnuplot.tex
> platex gnuplot.tex
> makeindex gnuplot.idx
> platex gnuplot.tex
> dvipdfmx gnuplot.dvi
竹野研究室で公開されている PDF に「かなり近いもの」が
出来る
文中に index に出てくる文字が出てきた時に、そこに自動的
にリンクを貼ることが出来ていない
これぐらいはまぁ良しとしよう
9 / 28
Excelっぽいグラフ(1)
gnuplot で(3次元棒グラフを除く)大抵のグラフを綺麗に
描ける
しかし、Excel2010 のグラフも(色使いとか)意外と好き
gnuplot で Excelっぽいグラフを描くスクリプトを作ろう
sample.gnu(ターミナルとグラフのサイズ)
set terminal wxt size 1000,620
# set terminal postscript eps color
# set output "sample.eps"
# set terminal pngcairo size 1000,620
# set output "sample.png"
set size ratio 0.62
ターミナルは3種類あれば十分だろう
wxt(Xの画面)・postscript(eps)・pngcairo(png)
ターミナルのついでにサイズも指定している
postscript でサイズを指定すると何故か上手く作れない
10 / 28
Excelっぽいグラフ(2)
sample.gnu(タイトル)
set title "US immigration from Europe by decade" font ",16"
set xlabel "Decade" font ",12"
set ylabel "# of immigration" font ",12"
set key outside right top title ‘‘Region’’ font ",10"
set xtics out nomirror font ",10"
set ytics out 500000 nomirror font ",10"
set grid ytics linewidth 1 linetype 1 linecolor 0
demo にある immegration.dat を使うので、合わせたタイトル
フォントは名前を省略してサイズのみ指定
凡例の指定(set key)
outside right top で大体の位置を指定
軸目盛(set ?tics)
グラフの外側に目盛を出す(out)
下と左に目盛を出して、上と右は出さない(nomirror)
x軸の目盛間隔は、データの文字列を使うので省略
グリッド線(set grid)
横の線しか引かない(ytics)
11 / 28
Excelっぽいグラフ(3)
sample.gnu(データと背景)
set datafile missing "-"
set object 1 rectangle from graph 0, graph 0 to graph 1, graph 1 behind
set object 1 rectangle fillcolor rgb "#eeece1" fillstyle solid 1.0
やっと Excelっぽい部分
set datafile
immegration.dat が、データが無い部分は”-”になっているの
で、missing で指定
CSV ファイルを読み込む場合は separator ”,” を指定
背景
msoThemeColorBackground2(#eeece1)で塗りつぶしたい
しかし、グリッド線もちゃんと見せたい
graph 0 に四角を書いた後、graph 1 に移し、graph 1 を下に
graph 1 の四角を塗りつぶし
12 / 28
Excelっぽいグラフ(4)
sample.gnu(マクロ)
set macros
line = ’with lines linewidth 2 linetype 1 linecolor rgb’
point = ’with points pointsize 1.5’
linepoint = ’with linespoints linewidth 2 linetype 1 pointsize 1.5’
ptypeFV = ’pointtype (i%5)*2+5 linecolor rgb’
ptypeEV = ’pointtype (i%5)*2+4 linecolor rgb’
gnuplot スクリプトはマクロが指定できる(set macros)
with lines は w l と省略できるが、linewidth や linetype と一
緒にマクロで登録
with points, with linespoints も同様
”line color rgb”は、その後に# 16 進数で色を指定できる
points,linespoints は pointtype も指定するため、そちらで付加
for 文でデータごとに i の値を増やしていく
その時の pointtype の設定が ptypeFV/ptypeEV
ptypeFV は塗りつぶされているポイント、ptypeEV は中身が空
13 / 28
Excelっぽいグラフ(4)
sample.gnu
color(i) = (i%6==0?0x4f81bd:(i%6==1?0xc0504d:(i%6==2?0x9bbb59:
(i%6==3?0x8064a2:(i%6==4?0x4bacc6:0xf79646)))))
plot for [i=0:21] ’immigration.dat’ using 0:i+2:xticlabels(1) title
columnheader(i+2) @linepoint @ptypeFV color(i)
線の色
msoThemeColorAccent1∼6 の6色を使いたい
gnuplot は関数が定義できるので、i の値で判断
3項演算子を使った汚い実装
いよいよ、プロット
for [i=0:21] で、以降は for 文でぐるぐる回る
using は xの列:yの列:オプション という意味
オプションに 16 進数を入れて linecolor rgb variable とすれば、
ここで線の色を指定することも出来る
しかし、上記だと lines が上手く設定できない
ここは、xticlabels(1) でx軸のラベルをデータの1列目に設定
title columnheader(i+2) で、凡例に出る名前を設定
マクロは名前に @ をつける
線の色を color() 関数で設定
14 / 28
Excelっぽいグラフ - こんなん出来ます
0
500000
1e+06
1.5e+06
2e+06
2.5e+06
1891-1900 1901-1910 1911-1920 1921-1930 1931-1940 1941-1950 1951-1960 1961-1970
#ofimmigration
Decade
US immigration from Europe by decade
Region
Austria
Hungary
Belgium
Czechoslovakia
Denmark
France
Germany
Greece
Ireland
Italy
Netherlands
Norway
Sweden
Poland
Portugal
Romania
SovietUnion
Spain
Switzerland
UnitedKingdom
Yugoslavia
OtherEurope
15 / 28
日本語のタイトル(1)
gnuplot は日本語の出力ができます
ただし(当然)日本語のフォントを指定しなければダメ
ということで、フォントの問題になる
wxt, pngcairo ターミナルの場合
fc-list で出てくるフォントが設定できる
ghostscript のフォントも使える
/etc/ghostscritp/cidfmap.d 参照
デフォルトは Sans
Ubuntu の場合、普通は日本語フォントが設定されているの
で、何も考えなくても日本語が表示できてしまう
例えばこのように設定する
set terminal wxt size 1000,620 font ”VL PGothic”
問題は postscript ターミナルの場合
16 / 28
日本語のタイトル(2)
eps にも TrueType フォントを埋め込みたい(当然の欲求)
方法は2通り考えられる
gnuplot デフォルトのフォント変換ツール TTF2PT1 を使い、
ttf フォントを pfa フォントに変換して eps に埋め込む
ghostscript の CIDFmap に好きな ttf フォントを設定する
結論から言えば、どちらもダメだった
しかし、フォントにこだわらなければ、日本語の表示は可能
postscript ターミナルの日本語フォント
set terminal postscript eps color 
font "GothicBBB-Medium-UniJIS-UTF8-H" # ゴシック体
set terminal postscript eps color 
font "Ryumin-Light-UniJIS-UTF8-H" # 明朝体
set output "sample.eps"
17 / 28
日本語のタイトル(3)
0
500000
1e+06
1.5e+06
2e+06
2.5e+06
1891-19001901-19101911-19201921-19301931-19401941-19501951-19601961-1970
移民数
年代
10年毎のヨーロッパからアメリカへの移民
地域
オーストリア
ハンガリー
ベルギー
チェコ
デンマーク
フランス
ドイツ
ギリシャ
アイルランド
イタリア
オランダ
ノルウェー
スウェーデン
ポーランド
ポルトガル
ルーマニア
ソビエト
スペイン
スイス
イギリス
ユーゴスラビア
その他
18 / 28
日本語のタイトル(4)
pngcairo ターミナルで VL ゴシックフォントを出力したもの
個人的には VL ゴシックがとても好き
19 / 28
lua tikz ターミナル
フォントがー、と長いこと悩んでいたが、全く必要無かった
lua tiks terminal
set terminal lua tikz latex color size 320pt,230pt
set output "sample.tex"
使い方
gnuplot は、上のように terminal を設定するだけでほぼ終了
LATEX のプリアンプルに usepackage{gnuplot-lua-tikz} を追加
埋め込む場所に input などで入れるだけ
良い点
キレイ!簡単!素晴らしい!
dvipdfmx で埋め込んだフォントが(当然)そのまま使える
label 等に LATEX のコマンドが使える
ギリシャ文字や数式に悩む日々も終わり!
バックスラッシュはエスケープされるので、 と重ねる
悪い点
フォントなどのサイズ感がだいぶ違う
multipart には対応してないらしい
20 / 28
lua tikz ターミナルの出力(ラベルも全部 gnuplotだよ!)
0
500000
1e+06
1.5e+06
2e+06
2.5e+06
1891-1900
1901-1910
1911-1920
1921-1930
1931-1940
1941-1950
1951-1960
1961-1970
移民数(λn)
年代 ( α
β
)
LATEX で描く10年毎のヨーロッパからアメリカへの移民
地域
オーストリア
ハンガリー
ベルギー
チェコ
デンマーク
フランス
ドイツ
ギリシャ
アイルランド
イタリア
21 / 28
gnuplot だけで gif アニメーション
もうひとつの目玉といえば、gnuplot「だけ」で gif アニメー
ションが作れてしまうこと
LATEX で書いているので、お見せすることができない
main.gnu
set terminal gif animate optimize delay 3 loop 0 size 500,500
set output "sample.gif"
set size ratio 1
set parametric
set xrange [-1.2:1.2]
set yrange [-1.2:1.2]
set trange [0:2*pi]
set nokey
n = 100
i = 0
load "circle.gnu"
ポイントは、各 gif の描写をする plot を別ファイルにすること
22 / 28
gnuplot だけで gif animation
circle.gnu
title(i) = sprintf("t = %d", i)
unset label
unset arrow
theta = i * 2 * pi / n
set label title(i) at -1,1 font ",16"
set arrow from 0,0 to sin(theta),cos(theta) lw 2 lc rgb "blue"
fx(t) = t <= theta ? sin(t) : 1/0
fy(t) = t <= theta ? cos(t) : 1/0
plot fx(t),fy(t) with lines lw 2 lc rgb "red"
if (i < n) i = i + 1; reread
ポイントは、「reread」
これで circle.gnu を何度も呼び出して、gif アニメーションを
作っている
23 / 28
Let’s gnuplotting!
24 / 28
【蛇足・苦闘の歴史】 ttf2pt1 のインストール
debian パッケージをインストールする
上記から debian パッケージ(dsc, orig.tar.gz, diff.gz)をダウ
ンロード
> dpkg-source -x ttf2pt1 3.4.4-1.4.dsc
> cd ttf2pt1-3.4.4
必要パッケージをインストールするのだが、libfreetype6-dev,
libt1-dev ぐらいで、既に入っていた
> dpkg-buildpackage -rfakeroot -b
> cd ..
> sudo apt-get install t1utils
> sudo dpkg -i ttf2pt1 3.4.4-1.4 i386.deb
これで以下のように設定すれば、一見できるように見えるの
だが、文字化けしてしまう
postscript のフォントの設定
set fontpath "/usr/share/fonts/truetype"
set terminal postscript eps color fontfile 
"vlgothic/VL-PGothic-Regular.ttf"
25 / 28
【蛇足・苦闘の歴史】 ghostscript のフォント設定
/etc/ghostscript/cidfmap.d/ 以下に適当な.conf ファイルを作
り、フォント名・パスなどを定義する
90gs-cjk-resource-my.conf
/Ricty-Regular << /FileType /TrueType 
/Path (/usr/share/fonts/truetype/ricty/Ricty-Regular.ttf) 
/CSI [(Japan2) 4] >> ;
/Ricty-Bold << /FileType /TrueType 
/Path (/usr/share/fonts/truetype/ricty/Ricty-Bold.ttf) 
/CSI [(Japan2) 4] >> ;
/TakaoGothic << /FileType /TrueType 
/Path (/usr/share/fonts/truetype/takao-gothic/TakaoGothic.ttf) 
/CSI [(Japan2) 3] >> ;
/TakaoPGothic << /FileType /TrueType 
/Path (/usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf) 
/CSI [(Japan2) 3] >> ;
/TakaoExGothic << /FileType /TrueType 
/Path (/usr/share/fonts/truetype/takao-gothic/TakaoExGothic.ttf) 
/CSI [(Japan2) 3] >> ;
26 / 28
【蛇足・苦闘の歴史】ghostscript のフォント設定
90gs-cjk-resource-may.conf(続き)
/TakaoMincho << /FileType /TrueType 
/Path (/usr/share/fonts/truetype/takao-mincho/TakaoMincho.ttf) 
/CSI [(Japan2) 3] >> ;
/TakaoPMincho << /FileType /TrueType 
/Path (/usr/share/fonts/truetype/takao-mincho/TakaoPMincho.ttf) 
/CSI [(Japan2) 3] >> ;
/TakaoExMincho << /FileType /TrueType 
/Path (/usr/share/fonts/truetype/takao-mincho/TakaoExMincho.ttf) 
/CSI [(Japan2) 3] >> ;
/VL-Gothic-Regular << /FileType /TrueType 
/Path (/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf) 
/CSI [(Japan1) 6] >> ;
/VL-PGothic-Regular << /FileType /TrueType 
/Path (/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf) 
/CSI [(Japan1) 6] >> ;
> sudo dpkg-reconfigure ghostscript
ghostscript では認識できるのだが、まだ文字化けする
27 / 28
【蛇足・苦闘の歴史】ghostscript のフォント設定
フォントの指定
set terminal postscript eps color font "VL-Gothic-Regular"
set output sample.eps
> gs
< GS > /VL-Gothc-Regular findfont setfont
Loading VL-Gothic-Regular font from /usr/share/fonts/...
(フォントの設定に成功)
< GS > (sample.eps) run
⇒ 文字化けをしてしまう
28 / 28

Más contenido relacionado

La actualidad más candente

ARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しようARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しようtorisoup
 
C++による数値解析の並列化手法
C++による数値解析の並列化手法C++による数値解析の並列化手法
C++による数値解析の並列化手法dc1394
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)MITSUNARI Shigeo
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)Hiro H.
 
ものまね鳥を愛でる 結合子論理と計算
ものまね鳥を愛でる 結合子論理と計算ものまね鳥を愛でる 結合子論理と計算
ものまね鳥を愛でる 結合子論理と計算Hiromi Ishii
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -MITSUNARI Shigeo
 
「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』
「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』
「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』historia_Inc
 
数学好きから見た量子コンピュータ~57を因数分解した話~
数学好きから見た量子コンピュータ~57を因数分解した話~数学好きから見た量子コンピュータ~57を因数分解した話~
数学好きから見た量子コンピュータ~57を因数分解した話~Satoyuki Tsukano
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門Kimikazu Kato
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
 
ドキュメントを作りたくなってしまう魔法のツールSphinx
ドキュメントを作りたくなってしまう魔法のツールSphinxドキュメントを作りたくなってしまう魔法のツールSphinx
ドキュメントを作りたくなってしまう魔法のツールSphinxTakayuki Shimizukawa
 
Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介onozaty
 
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)Masahiro Nishimi
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるHideyuki Tanaka
 
UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動uchan_nos
 
多段階計算の型システムの基礎
多段階計算の型システムの基礎多段階計算の型システムの基礎
多段階計算の型システムの基礎T. Suwa
 
オープンCAEとPython
オープンCAEとPythonオープンCAEとPython
オープンCAEとPythonTatsuyaKatayama
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Hiro H.
 

La actualidad más candente (20)

ARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しようARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しよう
 
C++による数値解析の並列化手法
C++による数値解析の並列化手法C++による数値解析の並列化手法
C++による数値解析の並列化手法
 
Coqチュートリアル
CoqチュートリアルCoqチュートリアル
Coqチュートリアル
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
 
ものまね鳥を愛でる 結合子論理と計算
ものまね鳥を愛でる 結合子論理と計算ものまね鳥を愛でる 結合子論理と計算
ものまね鳥を愛でる 結合子論理と計算
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
 
「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』
「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』
「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』
 
数学好きから見た量子コンピュータ~57を因数分解した話~
数学好きから見た量子コンピュータ~57を因数分解した話~数学好きから見た量子コンピュータ~57を因数分解した話~
数学好きから見た量子コンピュータ~57を因数分解した話~
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
ドキュメントを作りたくなってしまう魔法のツールSphinx
ドキュメントを作りたくなってしまう魔法のツールSphinxドキュメントを作りたくなってしまう魔法のツールSphinx
ドキュメントを作りたくなってしまう魔法のツールSphinx
 
Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介
 
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動
 
多段階計算の型システムの基礎
多段階計算の型システムの基礎多段階計算の型システムの基礎
多段階計算の型システムの基礎
 
オープンCAEとPython
オープンCAEとPythonオープンCAEとPython
オープンCAEとPython
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
 
π計算
π計算π計算
π計算
 

Similar a Gnuplotあれこれ

Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Ransui Iso
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こうYoshitomo Akimoto
 
RでGISハンズオンセッション
RでGISハンズオンセッションRでGISハンズオンセッション
RでGISハンズオンセッションarctic_tern265
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス5mingame2
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門Shiqiao Du
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelereaseShiqiao Du
 
2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest information2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest informationSony Network Communications Inc.
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Ransui Iso
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Etsuji Nakai
 
8F Emacs seminar 1st
8F Emacs seminar 1st8F Emacs seminar 1st
8F Emacs seminar 1sttoshi_pp
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章Tomonobu_Hirano
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案yushin_hirano
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門SatoYu1ro
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Springanyakichi
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Ryo Suzuki
 

Similar a Gnuplotあれこれ (20)

Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こう
 
RでGISハンズオンセッション
RでGISハンズオンセッションRでGISハンズオンセッション
RでGISハンズオンセッション
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelerease
 
2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest information2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest information
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
8F Emacs seminar 1st
8F Emacs seminar 1st8F Emacs seminar 1st
8F Emacs seminar 1st
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
 
ALPSチュートリアル(6) Matplotlib入門
ALPSチュートリアル(6) Matplotlib入門ALPSチュートリアル(6) Matplotlib入門
ALPSチュートリアル(6) Matplotlib入門
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Spring
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
 

Más de Maruyama Tetsutaro

Online Matching and Ad Allocaton 8章&9章半分
Online Matching and Ad Allocaton 8章&9章半分Online Matching and Ad Allocaton 8章&9章半分
Online Matching and Ad Allocaton 8章&9章半分Maruyama Tetsutaro
 
shot note で手書き資料作成
shot note で手書き資料作成shot note で手書き資料作成
shot note で手書き資料作成Maruyama Tetsutaro
 
ユークリッド距離以外の距離で教師無しクラスタリング
ユークリッド距離以外の距離で教師無しクラスタリングユークリッド距離以外の距離で教師無しクラスタリング
ユークリッド距離以外の距離で教師無しクラスタリングMaruyama Tetsutaro
 
機械学習向けプログラミング言語の使い分け - RCO の場合
機械学習向けプログラミング言語の使い分け - RCO の場合機械学習向けプログラミング言語の使い分け - RCO の場合
機械学習向けプログラミング言語の使い分け - RCO の場合Maruyama Tetsutaro
 
Mining of massive datasets chapter3
Mining of massive datasets chapter3Mining of massive datasets chapter3
Mining of massive datasets chapter3Maruyama Tetsutaro
 
業務に活かすデータサイエンスとは?
業務に活かすデータサイエンスとは?業務に活かすデータサイエンスとは?
業務に活かすデータサイエンスとは?Maruyama Tetsutaro
 
Ubuntuで最新パッケージを導入
Ubuntuで最新パッケージを導入Ubuntuで最新パッケージを導入
Ubuntuで最新パッケージを導入Maruyama Tetsutaro
 
Zshでデキるプロンプト
ZshでデキるプロンプトZshでデキるプロンプト
ZshでデキるプロンプトMaruyama Tetsutaro
 
ランダム・シャッフル
ランダム・シャッフルランダム・シャッフル
ランダム・シャッフルMaruyama Tetsutaro
 
Zipf分布に従う乱数の生成方法
Zipf分布に従う乱数の生成方法Zipf分布に従う乱数の生成方法
Zipf分布に従う乱数の生成方法Maruyama Tetsutaro
 
円錐曲線の極座標表示
円錐曲線の極座標表示円錐曲線の極座標表示
円錐曲線の極座標表示Maruyama Tetsutaro
 

Más de Maruyama Tetsutaro (15)

Online Matching and Ad Allocaton 8章&9章半分
Online Matching and Ad Allocaton 8章&9章半分Online Matching and Ad Allocaton 8章&9章半分
Online Matching and Ad Allocaton 8章&9章半分
 
shot note で手書き資料作成
shot note で手書き資料作成shot note で手書き資料作成
shot note で手書き資料作成
 
ユークリッド距離以外の距離で教師無しクラスタリング
ユークリッド距離以外の距離で教師無しクラスタリングユークリッド距離以外の距離で教師無しクラスタリング
ユークリッド距離以外の距離で教師無しクラスタリング
 
機械学習向けプログラミング言語の使い分け - RCO の場合
機械学習向けプログラミング言語の使い分け - RCO の場合機械学習向けプログラミング言語の使い分け - RCO の場合
機械学習向けプログラミング言語の使い分け - RCO の場合
 
keynoteでslideshare
keynoteでslidesharekeynoteでslideshare
keynoteでslideshare
 
Lambda and rundeck
Lambda and rundeckLambda and rundeck
Lambda and rundeck
 
Mining of massive datasets chapter3
Mining of massive datasets chapter3Mining of massive datasets chapter3
Mining of massive datasets chapter3
 
業務に活かすデータサイエンスとは?
業務に活かすデータサイエンスとは?業務に活かすデータサイエンスとは?
業務に活かすデータサイエンスとは?
 
日本の伝統色
日本の伝統色日本の伝統色
日本の伝統色
 
Ubuntuで最新パッケージを導入
Ubuntuで最新パッケージを導入Ubuntuで最新パッケージを導入
Ubuntuで最新パッケージを導入
 
Zshでデキるプロンプト
ZshでデキるプロンプトZshでデキるプロンプト
Zshでデキるプロンプト
 
配列数式
配列数式配列数式
配列数式
 
ランダム・シャッフル
ランダム・シャッフルランダム・シャッフル
ランダム・シャッフル
 
Zipf分布に従う乱数の生成方法
Zipf分布に従う乱数の生成方法Zipf分布に従う乱数の生成方法
Zipf分布に従う乱数の生成方法
 
円錐曲線の極座標表示
円錐曲線の極座標表示円錐曲線の極座標表示
円錐曲線の極座標表示
 

Gnuplotあれこれ

  • 2. Gnuplot あれこれ 私の備忘録も兼ねて OS は Ubuntu 12.04(Quantal Quetzal) だとします 他の資料とカブっている所もあるけど、キニシナイ 2 / 28
  • 3. 最新版のインストール(1) gnuplot の最新版は 4.6.3(2013/06/26 時点) ubuntu の gnuplot パッケージを見ると、開発中の Saucy (13.10)では 4.6.3 に対応しているので、これを使おう gnuplot 4.6.3-1build1 のページから、全てのファイル (xxx.orig.tar.gz, xxx.debian.tar.gz, xxx.dsc)をダウンロード ダウンロードしたものを、すべて同じディレクトリに置く ダウンロードしたファイルを置いたディレクトリに移動 > sudo apt-get install build-essential fakeroot dpkg-dev これで準備が整ったので、いよいよパッケージの作成へ 3 / 28
  • 4. 最新版のインストール(2) ソースの展開 > dpkg-source -x gnuplot 4.6.3-1build1.dsc gnuplot-4.6.3 以下にソースを展開し、パッチも当ててくれる > cd gnuplot-4.6.3 コンパイル環境を整える 通常ならば apt-get build-dep gnuplot とやれば良さそう これは apt repository にあるソースに関して 自分で取ってきたものの場合、設定ファイルを見る必要 > vi debian/control Build-Depends に書かれたパッケージを手動でインストール この時、いつも使っているパッケージが依存関係から削除さ れることがあるので、注意が必要 gnuplot の場合、libgd2-noxpm-dev を入れることによって、 gvfs-backends, libgd2-xpm などが削除されるので、パッケージ 作成が終わったら元に戻す 4 / 28
  • 5. 最新版のインストール(3) コンパイルフラグの設定 せっかくソースから作るので、カスタマイズしよう > ./configure --help とすれば、オプション一覧が分かる パッケージのオプションは、debian/rules の conf opts 正直それほど必要無いが、--with-cwdrc でも追加してみよう debian/rules の conf opts に --with-cwdrc を加えるだけ コンパイル > dpkg-buildpackage -rfakeroot -b > cd .. (ここに deb パッケージが作られている) 削除されてしまったパッケージを復活 > sudo apt-get install gvfs-backends libgd2-xpm 12.04 デフォルトの gnuplot を削除 > sudo apt-get purge gnuplot gnuplot-nox gnuplot-x11 作ったパッケージをインストール > sudo dpkg -i gnuplot 4.6.3-1build1 all.dev gnuplot-x11 4.6.3-1build1 i386.deb apt でやると -nox と -x11 で衝突を回避しれくれるが、 dpkg はしてくれないので -x11 だけを入れる 5 / 28
  • 6. ヘルプの日本語化 せっかくソースがあるので、ヘルプを日本語化する doc の下に日本語のドキュメントとパッチがあるので、それ を当てるだけ > cd gnuplot-4.6.3 && ./configure && make > cd docs && make clean > mv gnuplot.doc gnuplot-en.doc > nkf -w80 gnuplot-ja.doc > gnuplot.doc > nkf -w80 term-ja.diff > term.diff > cd .. && patch -p0 < docs/term.diff > cd docs && make > sudo cp gnuplot.gih /usr/share/gnuplot/. これで gnuplot のヘルプが日本語で読める 6 / 28
  • 7. マニュアルの日本語化(1) 日本語マニュアルは新潟工科大学情報電子工学科竹野研究 室の gnuplot のページで公開されています いつまでも頼るわけにはいかないし、作ってみよう しかし、問題が山積み pdfLATEX でコンパイルするようになっている しかし pdfLATEX は日本語化されていない グラフィックスタイルファイルが無い hyperlink がうまく作れない pdfLATEX でないと、文中のハイパーリンクが作れない なんとか pLATEX で頑張ってみよう 7 / 28
  • 8. マニュアルの日本語化(2) pLATEX 用の設定(gnuplot-4.6.3/docs にいるとして) > make doc2tex > GNUPLOT LIB=../demo gnuplot plotstyles.gnu > doc2tex -figures gnuplot.doc gnuplot.tex > ln -s ../VERSION . > wget http://tug.ctan.org/tex- archive/macros/latex209/contrib/picins/picins.sty > vi pdffigures.tex(新規) usepackage[dvipdfmx]{graphicx} usepackage{picins} > vi titlepag.tex(修正) usepackage{hyperref} のオプションに dvipdfmx を追加 その直後に以下を追加(栞の文字化け防止) AtBeginDvi{special{pdf:tounicode EUC-UCS2}} > extractbb *.pdf gnuplot.tex の中の、includegraphics で指定されているファイ ル名に、すべて.pdf の拡張子をつける 8 / 28
  • 9. マニュアルの日本語化(3) あとは pLATEX でコンパイルするだけ > platex gnuplot.tex > platex gnuplot.tex > platex gnuplot.tex > makeindex gnuplot.idx > platex gnuplot.tex > dvipdfmx gnuplot.dvi 竹野研究室で公開されている PDF に「かなり近いもの」が 出来る 文中に index に出てくる文字が出てきた時に、そこに自動的 にリンクを貼ることが出来ていない これぐらいはまぁ良しとしよう 9 / 28
  • 10. Excelっぽいグラフ(1) gnuplot で(3次元棒グラフを除く)大抵のグラフを綺麗に 描ける しかし、Excel2010 のグラフも(色使いとか)意外と好き gnuplot で Excelっぽいグラフを描くスクリプトを作ろう sample.gnu(ターミナルとグラフのサイズ) set terminal wxt size 1000,620 # set terminal postscript eps color # set output "sample.eps" # set terminal pngcairo size 1000,620 # set output "sample.png" set size ratio 0.62 ターミナルは3種類あれば十分だろう wxt(Xの画面)・postscript(eps)・pngcairo(png) ターミナルのついでにサイズも指定している postscript でサイズを指定すると何故か上手く作れない 10 / 28
  • 11. Excelっぽいグラフ(2) sample.gnu(タイトル) set title "US immigration from Europe by decade" font ",16" set xlabel "Decade" font ",12" set ylabel "# of immigration" font ",12" set key outside right top title ‘‘Region’’ font ",10" set xtics out nomirror font ",10" set ytics out 500000 nomirror font ",10" set grid ytics linewidth 1 linetype 1 linecolor 0 demo にある immegration.dat を使うので、合わせたタイトル フォントは名前を省略してサイズのみ指定 凡例の指定(set key) outside right top で大体の位置を指定 軸目盛(set ?tics) グラフの外側に目盛を出す(out) 下と左に目盛を出して、上と右は出さない(nomirror) x軸の目盛間隔は、データの文字列を使うので省略 グリッド線(set grid) 横の線しか引かない(ytics) 11 / 28
  • 12. Excelっぽいグラフ(3) sample.gnu(データと背景) set datafile missing "-" set object 1 rectangle from graph 0, graph 0 to graph 1, graph 1 behind set object 1 rectangle fillcolor rgb "#eeece1" fillstyle solid 1.0 やっと Excelっぽい部分 set datafile immegration.dat が、データが無い部分は”-”になっているの で、missing で指定 CSV ファイルを読み込む場合は separator ”,” を指定 背景 msoThemeColorBackground2(#eeece1)で塗りつぶしたい しかし、グリッド線もちゃんと見せたい graph 0 に四角を書いた後、graph 1 に移し、graph 1 を下に graph 1 の四角を塗りつぶし 12 / 28
  • 13. Excelっぽいグラフ(4) sample.gnu(マクロ) set macros line = ’with lines linewidth 2 linetype 1 linecolor rgb’ point = ’with points pointsize 1.5’ linepoint = ’with linespoints linewidth 2 linetype 1 pointsize 1.5’ ptypeFV = ’pointtype (i%5)*2+5 linecolor rgb’ ptypeEV = ’pointtype (i%5)*2+4 linecolor rgb’ gnuplot スクリプトはマクロが指定できる(set macros) with lines は w l と省略できるが、linewidth や linetype と一 緒にマクロで登録 with points, with linespoints も同様 ”line color rgb”は、その後に# 16 進数で色を指定できる points,linespoints は pointtype も指定するため、そちらで付加 for 文でデータごとに i の値を増やしていく その時の pointtype の設定が ptypeFV/ptypeEV ptypeFV は塗りつぶされているポイント、ptypeEV は中身が空 13 / 28
  • 14. Excelっぽいグラフ(4) sample.gnu color(i) = (i%6==0?0x4f81bd:(i%6==1?0xc0504d:(i%6==2?0x9bbb59: (i%6==3?0x8064a2:(i%6==4?0x4bacc6:0xf79646))))) plot for [i=0:21] ’immigration.dat’ using 0:i+2:xticlabels(1) title columnheader(i+2) @linepoint @ptypeFV color(i) 線の色 msoThemeColorAccent1∼6 の6色を使いたい gnuplot は関数が定義できるので、i の値で判断 3項演算子を使った汚い実装 いよいよ、プロット for [i=0:21] で、以降は for 文でぐるぐる回る using は xの列:yの列:オプション という意味 オプションに 16 進数を入れて linecolor rgb variable とすれば、 ここで線の色を指定することも出来る しかし、上記だと lines が上手く設定できない ここは、xticlabels(1) でx軸のラベルをデータの1列目に設定 title columnheader(i+2) で、凡例に出る名前を設定 マクロは名前に @ をつける 線の色を color() 関数で設定 14 / 28
  • 15. Excelっぽいグラフ - こんなん出来ます 0 500000 1e+06 1.5e+06 2e+06 2.5e+06 1891-1900 1901-1910 1911-1920 1921-1930 1931-1940 1941-1950 1951-1960 1961-1970 #ofimmigration Decade US immigration from Europe by decade Region Austria Hungary Belgium Czechoslovakia Denmark France Germany Greece Ireland Italy Netherlands Norway Sweden Poland Portugal Romania SovietUnion Spain Switzerland UnitedKingdom Yugoslavia OtherEurope 15 / 28
  • 16. 日本語のタイトル(1) gnuplot は日本語の出力ができます ただし(当然)日本語のフォントを指定しなければダメ ということで、フォントの問題になる wxt, pngcairo ターミナルの場合 fc-list で出てくるフォントが設定できる ghostscript のフォントも使える /etc/ghostscritp/cidfmap.d 参照 デフォルトは Sans Ubuntu の場合、普通は日本語フォントが設定されているの で、何も考えなくても日本語が表示できてしまう 例えばこのように設定する set terminal wxt size 1000,620 font ”VL PGothic” 問題は postscript ターミナルの場合 16 / 28
  • 17. 日本語のタイトル(2) eps にも TrueType フォントを埋め込みたい(当然の欲求) 方法は2通り考えられる gnuplot デフォルトのフォント変換ツール TTF2PT1 を使い、 ttf フォントを pfa フォントに変換して eps に埋め込む ghostscript の CIDFmap に好きな ttf フォントを設定する 結論から言えば、どちらもダメだった しかし、フォントにこだわらなければ、日本語の表示は可能 postscript ターミナルの日本語フォント set terminal postscript eps color font "GothicBBB-Medium-UniJIS-UTF8-H" # ゴシック体 set terminal postscript eps color font "Ryumin-Light-UniJIS-UTF8-H" # 明朝体 set output "sample.eps" 17 / 28
  • 19. 日本語のタイトル(4) pngcairo ターミナルで VL ゴシックフォントを出力したもの 個人的には VL ゴシックがとても好き 19 / 28
  • 20. lua tikz ターミナル フォントがー、と長いこと悩んでいたが、全く必要無かった lua tiks terminal set terminal lua tikz latex color size 320pt,230pt set output "sample.tex" 使い方 gnuplot は、上のように terminal を設定するだけでほぼ終了 LATEX のプリアンプルに usepackage{gnuplot-lua-tikz} を追加 埋め込む場所に input などで入れるだけ 良い点 キレイ!簡単!素晴らしい! dvipdfmx で埋め込んだフォントが(当然)そのまま使える label 等に LATEX のコマンドが使える ギリシャ文字や数式に悩む日々も終わり! バックスラッシュはエスケープされるので、 と重ねる 悪い点 フォントなどのサイズ感がだいぶ違う multipart には対応してないらしい 20 / 28
  • 21. lua tikz ターミナルの出力(ラベルも全部 gnuplotだよ!) 0 500000 1e+06 1.5e+06 2e+06 2.5e+06 1891-1900 1901-1910 1911-1920 1921-1930 1931-1940 1941-1950 1951-1960 1961-1970 移民数(λn) 年代 ( α β ) LATEX で描く10年毎のヨーロッパからアメリカへの移民 地域 オーストリア ハンガリー ベルギー チェコ デンマーク フランス ドイツ ギリシャ アイルランド イタリア 21 / 28
  • 22. gnuplot だけで gif アニメーション もうひとつの目玉といえば、gnuplot「だけ」で gif アニメー ションが作れてしまうこと LATEX で書いているので、お見せすることができない main.gnu set terminal gif animate optimize delay 3 loop 0 size 500,500 set output "sample.gif" set size ratio 1 set parametric set xrange [-1.2:1.2] set yrange [-1.2:1.2] set trange [0:2*pi] set nokey n = 100 i = 0 load "circle.gnu" ポイントは、各 gif の描写をする plot を別ファイルにすること 22 / 28
  • 23. gnuplot だけで gif animation circle.gnu title(i) = sprintf("t = %d", i) unset label unset arrow theta = i * 2 * pi / n set label title(i) at -1,1 font ",16" set arrow from 0,0 to sin(theta),cos(theta) lw 2 lc rgb "blue" fx(t) = t <= theta ? sin(t) : 1/0 fy(t) = t <= theta ? cos(t) : 1/0 plot fx(t),fy(t) with lines lw 2 lc rgb "red" if (i < n) i = i + 1; reread ポイントは、「reread」 これで circle.gnu を何度も呼び出して、gif アニメーションを 作っている 23 / 28
  • 25. 【蛇足・苦闘の歴史】 ttf2pt1 のインストール debian パッケージをインストールする 上記から debian パッケージ(dsc, orig.tar.gz, diff.gz)をダウ ンロード > dpkg-source -x ttf2pt1 3.4.4-1.4.dsc > cd ttf2pt1-3.4.4 必要パッケージをインストールするのだが、libfreetype6-dev, libt1-dev ぐらいで、既に入っていた > dpkg-buildpackage -rfakeroot -b > cd .. > sudo apt-get install t1utils > sudo dpkg -i ttf2pt1 3.4.4-1.4 i386.deb これで以下のように設定すれば、一見できるように見えるの だが、文字化けしてしまう postscript のフォントの設定 set fontpath "/usr/share/fonts/truetype" set terminal postscript eps color fontfile "vlgothic/VL-PGothic-Regular.ttf" 25 / 28
  • 26. 【蛇足・苦闘の歴史】 ghostscript のフォント設定 /etc/ghostscript/cidfmap.d/ 以下に適当な.conf ファイルを作 り、フォント名・パスなどを定義する 90gs-cjk-resource-my.conf /Ricty-Regular << /FileType /TrueType /Path (/usr/share/fonts/truetype/ricty/Ricty-Regular.ttf) /CSI [(Japan2) 4] >> ; /Ricty-Bold << /FileType /TrueType /Path (/usr/share/fonts/truetype/ricty/Ricty-Bold.ttf) /CSI [(Japan2) 4] >> ; /TakaoGothic << /FileType /TrueType /Path (/usr/share/fonts/truetype/takao-gothic/TakaoGothic.ttf) /CSI [(Japan2) 3] >> ; /TakaoPGothic << /FileType /TrueType /Path (/usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf) /CSI [(Japan2) 3] >> ; /TakaoExGothic << /FileType /TrueType /Path (/usr/share/fonts/truetype/takao-gothic/TakaoExGothic.ttf) /CSI [(Japan2) 3] >> ; 26 / 28
  • 27. 【蛇足・苦闘の歴史】ghostscript のフォント設定 90gs-cjk-resource-may.conf(続き) /TakaoMincho << /FileType /TrueType /Path (/usr/share/fonts/truetype/takao-mincho/TakaoMincho.ttf) /CSI [(Japan2) 3] >> ; /TakaoPMincho << /FileType /TrueType /Path (/usr/share/fonts/truetype/takao-mincho/TakaoPMincho.ttf) /CSI [(Japan2) 3] >> ; /TakaoExMincho << /FileType /TrueType /Path (/usr/share/fonts/truetype/takao-mincho/TakaoExMincho.ttf) /CSI [(Japan2) 3] >> ; /VL-Gothic-Regular << /FileType /TrueType /Path (/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf) /CSI [(Japan1) 6] >> ; /VL-PGothic-Regular << /FileType /TrueType /Path (/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf) /CSI [(Japan1) 6] >> ; > sudo dpkg-reconfigure ghostscript ghostscript では認識できるのだが、まだ文字化けする 27 / 28
  • 28. 【蛇足・苦闘の歴史】ghostscript のフォント設定 フォントの指定 set terminal postscript eps color font "VL-Gothic-Regular" set output sample.eps > gs < GS > /VL-Gothc-Regular findfont setfont Loading VL-Gothic-Regular font from /usr/share/fonts/... (フォントの設定に成功) < GS > (sample.eps) run ⇒ 文字化けをしてしまう 28 / 28