R苦手の会#8

今回はid:wakutekaがRグラフィックス(see:参考資料)を購入したので,わくてかさんのお話を聞きながらRグラフィックスの中身をざっと見てみようぜっていう感じです.

作図システムの階層構造

grDevices
  • 作図システムの基礎.これがないと始まらない.
  • グラフィックデバイスを定義するパッケージ
  • png()とかそういうやつ.?pngとかやるとgrDevicesの一味だって分かる.一覧はls("packages:grDevices")
Graphics Systems
  • graphicsパッケージとgridパッケージが主要なヤツ?
  • グラフィックデバイスの上にいろいろ描く仕組み
  • 低水準作画関数の集まり
  • latticeとかのグラフィック関連のパッケージはこれをベースに作られている
Graphics Packages
  • latticeとか.

本の流れ

作図法の種類
  • 2つの作図法がある(graphics, grid)
  • traditionalな作図: barplotとか
traditionalな作図の説明
  • traditionalな作図システムは総称的
    • plot()とかはクラスを判別して実際に使用する関数を決定している
traditionalな作図における引数
  • 細かいことはそれぞれの関数のhelp見ようぜ
  • colみたいに色指定用の引数もあるけど,軸や軸ラベルの色みたいなものは普通変えられない
    • 総称的だから細かいことできない?
3次元データの可視化に便利な関数
対話的にアレできる関数

==== traditionalな作図の話はこのへんまで ====
↓こっからgrid的なヤツ

lattice
  • library(lattice)
  • xyplot(lat~long, data=quakes, pch=".")
    • 点だけのが出る
  • tplot <- xyplot(lat~long, data=quakes, pch=".")
    • こうするとプロットされない
    • なんだかggplotっぽくないですか?
    • そうです!ggplot2もgrid使ってるんです!!!
    • xyplotが返すのはtrelisクラスのオブジェクト
> p <- xyplot(lat~long, data=quakes, pch=".")
> class(p)
[1] "trellis"
    • 代入したオブジェクトはprint(tplot)みたいな感じプロットできる
    • print()はbaseに入ってる
  • オブジェクトの変更,修正はupdate()を使う
あなたがlatticeを使うべき三つの理由
  • 見た目カッコイイ
    • 色分けとかラベルとかのデフォルト値
  • 複数の水準を持つデータを一度にグラフ化できる
    • グループ変数を基準にデータ分けてヒストグラム書くとかそんなの
    • y ~ x | g(訳:gで分類してy~xのプロット描いて!)
    • ggplot2だとfacet_wrap(~g)とかでlayer設定
  • gridったらさいきょーね

===== 今日はここまで =====
わくてかさんどうも乙でした.
本の雰囲気としてはlatticeすげーよlatticeみんな使おうぜって感じかな.
gridはggplot2も使ってるらしいし,Rグラフィックスちょっと欲しくなった.

Meadow+YaTeXでLatexmk使うための設定

LaTeXで数式や文献の参照番号を処理するにはplatexやjbibtexを何度か実行しないといけなくて面倒くさい.
「何回platexやjbibtex動かしたらいいの」っていうのを適当に判断して適当に実行してくれるperlスクリプトとしてLatexmkというものがあるらしい.すばらしい.
早速インストールしたのでメモ.

いるもの

  • perl: ActivePerlとかcygwinperlとか.私はActivePerlを使っている(ハズ
  • Latexmk: Latexmkからダウンロードしてきましょう

やること

latexmk-410.zipを落としてきたら解凍し,中身をパスの通った場所に置く.
次に,.latexmkrcという設定ファイルを$HOMEに作成する.もともと欧文用なのでこの設定ファイルでlatexbibtexplatexやjbibtexに置き換える必要がある.私の設定は以下の通り.

$latex = 'platex';
$pdflatex = "c:/Meadow/dvipspdf.bat %S";
$bibtex = 'jbibtex';
$makeindex = 'mendex';
$dvipdf = 'dvipdfmx';
$dvips = 'dvipsk';
$dvi_previewer = 'dviout';
$pdf_previewer = 'SumatraPDF.exe';

私はPDFビューワとしてSumatraPDFを使用しているので$pdf_previewerにSumatraPDF.exe*1を指定している.
$pdflatexに設定しているバッチファイルの中身はこんな感じ*2

rem for YaTeX
set src=%~n1
platex %src%.tex
dvipsk -Pdl -D 600  -f -z -t a4 %src% | bkmk2uni > %src%.ps
call ps2pdf -r600 -dNOPAUSE %src%.ps  %src%.pdf 

そして.emacsはこんな感じ.

;; latexmk
(setq tex-command "latexmk -pv -pdf")
(setq dvi2-command "SumatraPDF.exe")

これでMeadowを起動してYaTeX-modeにし,C-c tjと入力すればplatexとjbibtexを適当に実行してpdfまで作成し,プレビューしてくれる.
Latexmk実行時に与える引数で作成対象(dviかpsか,それともpdfなのか),プレビューの有無などを指定できる.詳しくはLatexmkにあるマニュアルを参照のこと*3

*1:プログラムファイルがあるディレクトリにはPATHを通してある

*2:presentation using TeX with powerdotにあるものに少し手を加えています.Meadowディレクトリに突っ込むとかマジセンスないと思うので各自適当にもっとマシな場所に置いて下さい.

*3:長いのであまり読んでない…