15.9 Asymptote でグラフィックを作成する
Asymptote (https://asymptote.sourceforge.io) はベクタグラフィックのための強力な言語です. Asymptote をインストール済みなら (インストールの説明はウェブサイトを見てください) asy
エンジンを使い R Markdown に Asymptote のコードを書き実行することもできます. 以下はそのリポジトリ https://github.com/vectorgraphics/asymptote からコピーした例で, 出力を図15.1に示します.
import graph3;
import grid3;
import palette;
settings.prc = false;
currentprojection=orthographic(0.8,1,2);
size(500,400,IgnoreAspect);
real f(pair z) {return cos(2*pi*z.x)*sin(2*pi*z.y);}
surface s=surface(f,(-1/2,-1/2),(1/2,1/2),50,Spline);
surface S=planeproject(unitsquare3)*s;
S.colors(palette(s.map(zpart),Rainbow()));
draw(S,nolight);
draw(s,lightgray+opacity(0.7));
grid3(XYZgrid);
PDF 出力に対しては追加の LaTeX パッケージが必要であることに注意してください. そうでないとこのようなエラーが出ることでしょう.
! LaTeX Error: File `ocgbase.sty' not found.
このようなエラーが発生したなら, 欠けている LaTeX パッケージのインストール方法を1.3節で確認してください.
上記の asy
チャンクでは, settings.prc = false
という設定を使いました. この設定がないと Asymptote は PDF 出力時にインタラクティブな 3D グラフィックを表示してしまいます. しかしインタラクティブなグラフィックは Acrobat Reader でのみ見ることができます. Acrobat Reader を使用しているなら, グラフを操作できます. 例えば図15.1ではマウス操作で3D平面を回転できます.
15.9.1 R でデータを生成し Asymptote に読み込ませる
ここでは, 最初に以下の R コードチャンクのように, R で生成したデータを CSV ファイルに保存します.
それから Asymptote でこれを読み込み, データに基づいたグラフを描画し図15.2 に示します. 以下が asy
コードチャンクです.
import graph;
size(400,300,IgnoreAspect);
settings.prc = false;
// import data from csv file
file in=input("sine.csv").line().csv();
real[][] a=in.dimension(0,0);
a=transpose(a);
// generate a path
path rpath = graph(a[0],a[1]);
path lpath = (1,0)--(5,1);
// find intersection
pair pA=intersectionpoint(rpath,lpath);
// draw all
draw(rpath,red);
draw(lpath,dashed + blue);
dot("$\delta$",pA,NE);
xaxis("$x$",BottomTop,LeftTicks);
yaxis("$y$",LeftRight,RightTicks);