Rでアンチエイリアスしたグラフをプロットする

さっき私はcairoDeviceパッケージを使えばRでもアンチエイリアスしたグラフがプロットできるんだぜ(ふふん)な記事を上げた。
しかしですね
こことかよく見てみるとR 2.8.0のあたりにですね、こんなことが書いてあるんですよ。

    o	bitmap() and dev2bitmap() gain support for anti-aliasing.
	The default type has been changed to 'png16m', which supports
	anti-aliasing.

うん。bitmap()はR 2.8からアンチエイリアスサポートしてるんだってさ。
それで確認してみたんですよ。bitmap()のhelp(http://bm2.genes.nig.ac.jp/RGM2/R_current/library/grDevices/html/dev2bitmap.html)。

taa, gaa 	Number of bits of antialiasing for text and for graphics respectively. 
                Usually 4 (for best effect) or 2. Not supported on all types.

テキストのアンチエイリアスはtaa、グラフィックのアンチエイリアスはgaaっていう引数に4っていう引数を指定すれば有効になると。出力タイプによってはサポートされてないけど、デフォルトになっているpng16mっていうやつならサポートされてる。

library(ggplot2)
p <- qplot(wt, mpg, data = mtcars)
dev2bitmap("bmaa.png", width=5, height=4, res=90, taa=4, gaa=4)
p + geom_smooth(aes(group = cyl), method = "lm")
dev.off()

とかやるとこんな感じの出力が。

まあなんてきれいなんでしょ。
あとcarioDeviceパッケージや類似のCarioパッケージのデバイスだと日本語出力がうまくいかなかったんだけど、bitmap()なら大丈夫だった。
でもこのグラフ、半透明の部分がプロットされてない。
どうもbitmap()っていう関数はpostscript()で作ったポストスクリプトファイルをGhostScriptで各種の形式に変換しているらしい。
それでポストスクリプトっていうのはもともと「半透明」というものが存在しないので、変換過程でエラーになってしまう。
ちなみにデバイスからビットマップへコピーするdev2bitmap()だとmethodという引数にpdfが指定できて、pdfは半透明をサポートしているのでちゃんと半透明の部分も出力される。でも今度はなぜかアンチエイリアスがきかない。
GhostScriptがpdfをpngにするときアンチエイリアスできないのかといえばそんなことはないので、何でこうなるのかはよく分からない。やっぱ半透明が入ってるからダメなんだろうか。