ketpic できれいな図を書こう
TRANSCRIPT
で
きれいな図を書こう@y_system
2014年6月8日
2013年 10月 6日
KETpic v4.2.2 ltd コマンド一覧for R
PD プロットデータ
1 R についての注意1. KETpicの読込みには次を実行する.
load(”C:/work/ketpic.Rdata”) (C:/work/は作業フォルダ名)※ ディレクトリの変更は setwd(”c:/work”)
2. 文字列は ”(ダブル)で囲む※ 文字列の中に文字列を入れるときは ’ と ” を入れ子に使う.
3. 関数などを引数とするときは,文字列とする.例)G<- Plotdata( ”x^2”, ”x=c(0,1)”)
4. \(バックスラッシュ)を出力するには2つ並べてかく.
5. 注釈は #
6. 数と文字列の変換as.character(数)as.numeric(文字列)eval(parse(text=文字列)))sprintf(書式, 数) 書式付き文字列
7. 異なる型のデータからリストを作るには listを用いる.作成 L<- list(... , ... );取り出し A<- L[[i]]部分リスト L[V] (V はベクトル)置き換え L[[i]]<- ...長さ length(L)追加 L<- c(L1, L2)結合 c(L1,L2,...)空リスト list()タイプを見る is.list(L)(論理値)または mode(L)
2 Rのための追加コマンドMember(D, L) Dが Lの要素であれば true,そうでなければ falseを返す.
※ Lはベクトルまたは listFlattenlist(L) Lを平準化して単層のリストを作るMixdisp(list) listの要素を画面に簡易表示Op(N, Data) Dataの N番目の要素(Dataは文字列,ベクトル,list)Assign(式, 変数名, 値, ・・・)
変数名(文字列)に値を割り当てた文字列を返す※ 値は,数,文字列,数行列,Scilablist例) A<- 0.4; B<- c(2,1) Fn<- Assign(”A*xˆ2+B(1)*yˆ2”,”A”, A, ”B”, B)
1
(1, 2)
f(x) = 2x(0 < x < 1)
1 x
f(x)
O
ਤ 1 f(x) = 2x(0 < x < 1)ͷάϥϑ
(1, 1)
f(x) = x2(0 < x < 1)
1 x
f(x)
O
ਤ 2 f(x) = x2(0 < x < 1)ͷάϥϑ
1
このスライドは統計解析ソフトR で を使って,TEXの作図を
美しくしようというもの
どんなに頑張ってもRのplotでは限界がある!
Rではexpression関数で数式表現はサポートされてま
すが…見た目は美しくない…
2
2013年 10月 6日
KETpic v4.2.2 ltd コマンド一覧for R
PD プロットデータ
1 R についての注意1. KETpicの読込みには次を実行する.
load(”C:/work/ketpic.Rdata”) (C:/work/は作業フォルダ名)※ ディレクトリの変更は setwd(”c:/work”)
2. 文字列は ”(ダブル)で囲む※ 文字列の中に文字列を入れるときは ’ と ” を入れ子に使う.
3. 関数などを引数とするときは,文字列とする.例)G<- Plotdata( ”x^2”, ”x=c(0,1)”)
4. \(バックスラッシュ)を出力するには2つ並べてかく.
5. 注釈は #
6. 数と文字列の変換as.character(数)as.numeric(文字列)eval(parse(text=文字列)))sprintf(書式, 数) 書式付き文字列
7. 異なる型のデータからリストを作るには listを用いる.作成 L<- list(... , ... );取り出し A<- L[[i]]部分リスト L[V] (V はベクトル)置き換え L[[i]]<- ...長さ length(L)追加 L<- c(L1, L2)結合 c(L1,L2,...)空リスト list()タイプを見る is.list(L)(論理値)または mode(L)
2 Rのための追加コマンドMember(D, L) Dが Lの要素であれば true,そうでなければ falseを返す.
※ Lはベクトルまたは listFlattenlist(L) Lを平準化して単層のリストを作るMixdisp(list) listの要素を画面に簡易表示Op(N, Data) Dataの N番目の要素(Dataは文字列,ベクトル,list)Assign(式, 変数名, 値, ・・・)
変数名(文字列)に値を割り当てた文字列を返す※ 値は,数,文字列,数行列,Scilablist例) A<- 0.4; B<- c(2,1) Fn<- Assign(”A*xˆ2+B(1)*yˆ2”,”A”, A, ”B”, B)
1
f(x)=x2
about:教科書のようなきれいな図をTEXに
図の中の記号や数式も本文と同じ見た目
図をわかりやすく!
3
2013年 10月 6日
KETpic v4.2.2 ltd コマンド一覧for R
PD プロットデータ
1 R についての注意1. KETpicの読込みには次を実行する.
load(”C:/work/ketpic.Rdata”) (C:/work/は作業フォルダ名)※ ディレクトリの変更は setwd(”c:/work”)
2. 文字列は ”(ダブル)で囲む※ 文字列の中に文字列を入れるときは ’ と ” を入れ子に使う.
3. 関数などを引数とするときは,文字列とする.例)G<- Plotdata( ”x^2”, ”x=c(0,1)”)
4. \(バックスラッシュ)を出力するには2つ並べてかく.
5. 注釈は #
6. 数と文字列の変換as.character(数)as.numeric(文字列)eval(parse(text=文字列)))sprintf(書式, 数) 書式付き文字列
7. 異なる型のデータからリストを作るには listを用いる.作成 L<- list(... , ... );取り出し A<- L[[i]]部分リスト L[V] (V はベクトル)置き換え L[[i]]<- ...長さ length(L)追加 L<- c(L1, L2)結合 c(L1,L2,...)空リスト list()タイプを見る is.list(L)(論理値)または mode(L)
2 Rのための追加コマンドMember(D, L) Dが Lの要素であれば true,そうでなければ falseを返す.
※ Lはベクトルまたは listFlattenlist(L) Lを平準化して単層のリストを作るMixdisp(list) listの要素を画面に簡易表示Op(N, Data) Dataの N番目の要素(Dataは文字列,ベクトル,list)Assign(式, 変数名, 値, ・・・)
変数名(文字列)に値を割り当てた文字列を返す※ 値は,数,文字列,数行列,Scilablist例) A<- 0.4; B<- c(2,1) Fn<- Assign(”A*xˆ2+B(1)*yˆ2”,”A”, A, ”B”, B)
1
(1, 2)
f(x) = 2x(0 < x < 1)
1 x
f(x)
O
ਤ 1 f(x) = 2x(0 < x < 1)ͷάϥϑ
(1, 1)
f(x) = x2(0 < x < 1)
1 x
f(x)
O
ਤ 2 f(x) = x2(0 < x < 1)ͷάϥϑ
1
about:TEXには数値計算の十分な機能はないので解析ソフト
などで計算を行う
Rの上でKETpic関数を利用してTEX用の作図を得ると
いうもの
4
2013年 10月 6日
KETpic v4.2.2 ltd コマンド一覧for R
PD プロットデータ
1 R についての注意1. KETpicの読込みには次を実行する.
load(”C:/work/ketpic.Rdata”) (C:/work/は作業フォルダ名)※ ディレクトリの変更は setwd(”c:/work”)
2. 文字列は ”(ダブル)で囲む※ 文字列の中に文字列を入れるときは ’ と ” を入れ子に使う.
3. 関数などを引数とするときは,文字列とする.例)G<- Plotdata( ”x^2”, ”x=c(0,1)”)
4. \(バックスラッシュ)を出力するには2つ並べてかく.
5. 注釈は #
6. 数と文字列の変換as.character(数)as.numeric(文字列)eval(parse(text=文字列)))sprintf(書式, 数) 書式付き文字列
7. 異なる型のデータからリストを作るには listを用いる.作成 L<- list(... , ... );取り出し A<- L[[i]]部分リスト L[V] (V はベクトル)置き換え L[[i]]<- ...長さ length(L)追加 L<- c(L1, L2)結合 c(L1,L2,...)空リスト list()タイプを見る is.list(L)(論理値)または mode(L)
2 Rのための追加コマンドMember(D, L) Dが Lの要素であれば true,そうでなければ falseを返す.
※ Lはベクトルまたは listFlattenlist(L) Lを平準化して単層のリストを作るMixdisp(list) listの要素を画面に簡易表示Op(N, Data) Dataの N番目の要素(Dataは文字列,ベクトル,list)Assign(式, 変数名, 値, ・・・)
変数名(文字列)に値を割り当てた文字列を返す※ 値は,数,文字列,数行列,Scilablist例) A<- 0.4; B<- c(2,1) Fn<- Assign(”A*xˆ2+B(1)*yˆ2”,”A”, A, ”B”, B)
1
R TeX図ファイル
.texの作成
KETpic 関数
KETpic スタイルファイル
(1, 2)
f(x) = 2x(0 < x < 1)
1 x
f(x)
O
ਤ 1 f(x) = 2x(0 < x < 1)ͷάϥϑ
(1, 1)
f(x) = x2(0 < x < 1)
1 x
f(x)
O
ਤ 2 f(x) = x2(0 < x < 1)ͷάϥϑ
1
解凍したら…こんなファイル構成にしましょう.
今回はstyのインストールはしません.
12
どこかのフォルダ
あなたのtexファイルketpic.styketpicフォルダ
ketpic_ltd.Rdata作成した図ファイル
作図データをつくろうこのコードをRで実行してみよう
14
Ketinit() Setwindow(c(-0.5,1.5),c(-0.5,2.5)) G=Plotdata('2*x','x=c(0,1)') Gv=Listplot(c(1,0),c(1,2)) SEG1=Listplot(c(0,0),c(1,0),c(1,2)) Windisp(G) Openfile("2x.tex") Beginpicture('20mm') Drwline(G,2) Drwline(Gv,0.5) Setax("a0.5","x","s2","f(x)","w","O","nw") Expr(c(1,2),"w","(1,2)") Expr(c(1.3,2.4),"e","f(x)=2x (0<x<1)") Expr(c(1,0),"es2","1") GH=Hatchdata(list('ii'),list(SEG1,'n'),list(G,'s'),-45,0.5) Drwline(GH,0.5) Endpicture(1) Closefile()
作図データをつくろうこのコードをRで実行してみよう
Ketinit() Setwindow(c(-0.5,1.5),c(-0.5,2.5)) G=Plotdata('2*x','x=c(0,1)') Gv=Listplot(c(1,0),c(1,2)) SEG1=Listplot(c(0,0),c(1,0),c(1,2)) Windisp(G) Openfile("2x.tex") Beginpicture('20mm') Drwline(G,2) Drwline(Gv,0.5) Setax("a0.5","x","s2","f(x)","w","O","nw") Expr(c(1,2),"w","(1,2)") Expr(c(1.3,2.4),"e","f(x)=2x (0<x<1)") Expr(c(1,0),"es2","1") GH=Hatchdata(list('ii'),list(SEG1,'n'),list(G,'s'),-45,0.5) Drwline(GH,0.5) Endpicture(1) Closefile()
15
データの 作成
作図TeX 書き出し
細かいコードの説明は後で
TeX のソースketpic と graphicx は必須!
figure 環境の中に\inputコマンドで先ほどの作図を入
れる.
17
\documentclass[12pt]{jsarticle} \usepackage{ketpic} \usepackage{graphicx} \usepackage{float} \begin{document} \begin{figure}[H] \centering \input{ketpic/2x.tex} \caption{$f(x)=2x (0<x<1)$のグラフ} \end{figure} \end{document}
コンパイルこんなPDFが出力されたと思います!
!
!
!
!
!
!
!
次のページで解説18
(1, 2)
f(x) = 2x(0 < x < 1)
1 x
f(x)
O
図 1 f(x) = 2x(0 < x < 1)のグラフ
1
コードの解説Ketinit() Setwindow(c(-0.5,1.5),c(-0.5,2.5)) G=Plotdata('2*x','x=c(0,1)') Gv=Listplot(c(1,0),c(1,2)) SEG1=Listplot(c(0,0),c(1,0),c(1,2)) Windisp(G) Openfile("2x.tex") Beginpicture('20mm') Drwline(G,2) Drwline(Gv,0.5) Setax("a0.5","x","s2","f(x)","w","O","nw") Expr(c(1,2),"w","(1,2)") Expr(c(1.3,2.4),"e","f(x)=2x (0<x<1)") Expr(c(1,0),"es2","1") GH=Hatchdata(list('ii'),list(SEG1,'n'),list(G,'s'),-45,0.5) Drwline(GH,0.5) Endpicture(1) Closefile()
19
データの 作成
作図TeX 書き出し
Code for generating values
20
# 領域の初期化 Ketinit() # 作図領域の指定 Setwindow(c(-0.5,1.5),c(-0.5,2.5)) # 関数系のデータ作成 G=Plotdata(‘2*x','x=c(0,1)') # 線分データの作成 Gv=Listplot(c(1,0),c(1,2)) # 線分データの作成(頂点3つ以上で領域の作成) SEG1=Listplot(c(0,0),c(1,0),c(1,2))
データの 作成
ここまでがデータ座標データなどの準備
Code for extracting the TeX source
21
# 書き出すファイルの指定 Openfile(“2x.tex") # 拡大率の設定(図の1が何mmなのか) Beginpicture(‘20mm') # 先ほど設定した線の書き出し Drwline(G,2) # y=2x Drwline(Gv,0.5) # 線分 # 軸関連の設定 # Setax(軸の形状,横軸名,横軸名の位置,縦軸名,縦軸名の位置, # 原点名,原点の位置) # a0.5 とすると線幅を指定できる Setax(“a0.5”,"x","s2","f(x)","w","O","nw") # 座標に文字を書き入れる # Expr(座標, 東西南北, TeXの数式表現) Expr(c(1,2),"w","(1,2)") Expr(c(1.3,2.4),"e","f(x)=2x (0<x<1)") Expr(c(1,0),”es2","1") # es2とすると右下の下
作図TeX 書き出し
続く
1/2
Code for extracting the TeX source
22
# 領域の図示 # Hatchdata( 領域の内外,領域の指定:閉曲線や曲線の上下の指定, # 斜線の向き,線幅 ) GH=Hatchdata(list(‘ii'),list(SEG1,'n'),list(G,'s'),-45,0.5) # 描画 Drwline(GH,0.5) # 作図終了の宣言 # 1で座標軸を書く,0で書かずに終了. Endpicture(1) # Rでのファイル書き出しの終了の宣言. Closefile()
作図TeX 書き出し
2/2
他にも色々できますketpicR_4_3_1_ltd01.zip の中の referenceR4_3_1_ltd.pdf
に様々な関数の説明が書いてあります.
23
2014年 1月 2日
KETpic v4.3.1 ltd コマンド一覧for R
PD プロットデータ
1 R についての注意1. KETpicの読込みには次を実行する.
load(”C:/work/ketpic.Rdata”) (C:/work/は作業フォルダ名)※ ディレクトリの変更は setwd(”c:/work”)
2. 文字列は ”(ダブル)で囲む※ 文字列の中に文字列を入れるときは ’ と ” を入れ子に使う.
3. 関数などを引数とするときは,文字列とする.例)G<- Plotdata( ”x^2”, ”x=c(0,1)”)
4. \(バックスラッシュ)を出力するには2つ並べてかく.
5. 注釈は #
6. 数と文字列の変換as.character(数)as.numeric(文字列)eval(parse(text=文字列)))sprintf(書式, 数) 書式付き文字列
7. 異なる型のデータからリストを作るには listを用いる.作成 L<- list(... , ... );取り出し A<- L[[i]]部分リスト L[V] (V はベクトル)置き換え L[[i]]<- ...長さ length(L)追加 L<- c(L1, L2)結合 c(L1,L2,...)空リスト list()タイプを見る is.list(L)(論理値)または mode(L)
2 Rのための追加コマンドMember(D, L) Dが Lの要素であれば true,そうでなければ falseを返す.
※ Lはベクトルまたは listFlattenlist(L) Lを平準化して単層のリストを作るMixdisp(list) listの要素を画面に簡易表示Op(N, Data) Dataの N番目の要素(Dataは文字列,ベクトル,list)Assign(式, 変数名, 値, ・・・)
変数名(文字列)に値を割り当てた文字列を返す※ 値は,数,文字列,数行列,Scilablist例) A<- 0.4; B<- c(2,1) Fn<- Assign(”A*xˆ2+B(1)*yˆ2”,”A”, A, ”B”, B)
1
三乗根Ketinit() Setwindow(c(-1.5,1.5),c(-1.5,1.5)) x=seq(0,2*pi,.01) G=matrix(c(cos(x),sin(x)),length(x),2) !Windisp(G) Openfile("omega.tex") Beginpicture('2cm') Dashline(G,1) !Setax("a0.7","\\rm Re","s0.7","\\rm Im","w","O","sw") Expr(c(1,0),"es2","1") Expr(c(cos(2*pi/3),sin(2*pi/3)),"wn","-\\displaystyle\\frac{1}{2}+\\frac{\\sqrt{3}}{2}i") Expr(c(cos(4*pi/3),sin(4*pi/3)),"ws","-\\displaystyle\\frac{1}{2}-\\frac{\\sqrt{3}}{2}i") Drwxy() Setpt(5) Drwpt(c(1,0),1) Drwpt(c(cos(2*pi/3),sin(2*pi/3)),1) Drwpt(c(cos(4*pi/3),sin(4*pi/3)),1) Endpicture(0) Closefile()
1
−1
2+
√3
2i
−1
2−
√3
2i
Re
Im
O
ਤ 1 ඒਤ
1