[[Rの備忘録]] [[Lattice:http://www.springer.com/statistics/computational/book/978-0-387-75968-5]] 翻訳メモ -- hypervariate な平行座標プロット #ref(lattice88.png); ところで,この図を png 化した時に > data(gvhd10, package = "latticeExtra") > png(file = "lattice88.png") > parallel(~ asinh(gvhd10[c(3, 2, 4, 1, 5)]), data = gvhd10, + subset = Days == "13", alpha = 0.01, lty = 1) > dev.off() X11cairo 2 X11cairo というメッセージを初めてみた.Cairo そのものは,アンチエイリアスを備えた二次元ベクトル・グラフィックスライブラリのことだが. - 以下.掲載の図が R で実現できない理由は,著者が dev.copy2eps() 関数ではなく postscript() 関数を使って作図しているからであった.postscript() 関数での作図パラメータは異なる. > ?trellis.device -- 原書 p.57真ん中 (パラグラフ4.1最後)の以下のコードを使ってウィンドウに表示されるグラフは Figure4.3 ではない. > dotplot(VADeaths, type = "o", pch = 1:4, col = 1:4, lty = 1:4, key = key.list, main = "Death Rates in Virginia - 1940", xlab = "Rate (per 1000)") Figure4.3とまったく同じ図を作成するためには次のコードを実行する. > key.list <- list( space = "right", text = list(colnames(VADeaths)) , points = list(pch = c(1,3,6,0), col = 1:4), lines = list(lty = 1:4, col = 1:4)) > dotplot(VADeaths, panel = function (...){ panel.xyplot(..., type = "o", panel.grid = panel.grid(h=-1,v=0), pch = c(1,3,6,0), col = 1:4, lty = 1:4) }, key = key.list, main = "Death Rates in Virginia - 1940", xlab = "Rate (per 1000)") - テキスト p.49 バイオリンプロット.言い得て妙である.日本風なら,ひょうたんプロットかな? #ref(lattice49.png); - テキスト p.41 コードをそのまま実行すると次のグラフが作成される. #ref(lattice43.png); data(Chem97, package = "mlmRev") qqmath(~ gcsescore | gender, Chem97, groups = score, aspect = "xy", f.value = ppoints(100), auto.key = list(space = "right") , xlab = "Standard Normal Quantiles", ylab = "Average GCSE Score") しかし,掲載されているのは次のような図(ただし白黒) #ref(lattice43T.png); pch.col <- sort(unique(Chem97$score)) + 1 key.list <- list( space = "right", text = list(as.character(pch.col-1) ) , points = list(pch = pch.col, col = 1:6 ) ) qqmath(~ gcsescore | gender, Chem97, groups = score, aspect = "xy", f.value = ppoints(100), pch = pch.col , col = 1:6, key = key.list, xlab = "Standard Normal Quantiles", ylab = "Average GCSE Score") [[Baayen>R_Baayen]] にも同じように,掲載コードとグラフが,R-2.8.1 で再現できない例がある. library(languageR) affixes.pr = prcomp(affixProductivity[, 1:(ncol(affixProductivity)-3)]) library(lattice) super.sym = trellis.par.get("superpose.symbol") splom(data.frame(affixes.pr$x[,1:3]), groups = affixProductivity$Registers, panel = panel.superpose, key = list( title = "texts in productivity space", text = list(c("Religious", "Children", "Literary", "Other")), points = list(pch = super.sym$pch[1:4], col = super.sym$col[1:4]))) dim(affixes.pr$rotation) affixes.pr$rotation[1:10, 1:3] /key リスト points をみると,super.sym$pch[1:4] という指定があり, /これは記号をカテゴリごとに変更するつもりなのだろうが,デフォルトの/[[R_trellis.par.get]] の出力は / $pch / [1] 1 1 1 1 1 1 1 /なので,記号はすべて 1,つまり○に決まっている. / points = list(pch = super.sym$pch[1:4], /の部分を / points = list(pch = 1:4 /とすれば,テキスト記載の図になるが,これは筆者のミスなのか, /あるいは,Latticeで何か設定に変更が行われた結果なのか? /latticeの以前の設定は,どうだったのだろうか,と思って, /R-2.5.1のままになっているLinuxマシンで実行したら, /結果は上と変わらん.