1

私はGKS時代のグラフィックプログラマーで、Rグラフィックを使おうとしています。Rの変換に関連する2つの質問があります。

  1. ワールド座標[wc]のウィンドウをデバイス座標[dc]のビューポートにマップできるRで表示パイプラインを構築するのと同等のものがあるかどうか疑問に思いました。たとえば、(wcxmin、wcxmax、wcymin、wcymax)のウィンドウを(vpxmin、vpxmax、vpymin、vpymax)にマップする変換tを指定できます。ここで、wcは(1000、-50、40、90)、vpは(0 、800、0、600)。目的は、すべてのグラフィック計算がwcで行われるが、グラフィックエンジンがそれをdcでレンダリングすることです。この場合、座標を適切にスケーリングし、x軸をwcxmin>wcxmaxとして反転します。

  2. 変換行列を介して変換[スクレイ、シフト、回転、場合によってはせん断]できるグラフィックセグメントに相当するものはありますか。

Rグラフィックスの非常に基本的なものが欠けていると確信しています。私は問題なくSVGでそのような変換をうまく構築することができました。私はgrid、lattice、ggplot2のようなパッケージを見てきましたが、あまり進歩することができませんでした。

ありがとう。

これが私がやろうとしていることのサンプルコードです:

distn<-rnorm(100)
distw<-rweibull(100, shape=2)
dret<-stack(list(norm=distn, weib=distw))
n<-0
for (idx in levels(dret$ind)) {
        pct<-dret[dret$ind == idx,c('values')]
        # scale and shift the data
        pct<-(pct-min(pct))/(max(pct) - min(pct))
        if (n == 0) {
                # top left
                par(fig=c(0,0.5,0.5,1))
                limx<-c(0,1)
        } else  {
                # bottom right
                par(fig=c(0.5,1,0,0.5), new=TRUE)
                limx<-c(1,0)
        }
        fp<-density(pct)
        sfx<-fp$x
        sfy<-(fp$y-min(fp$y))/(max(fp$y)-min(fp$y))
        sortpct<-sort(pct)
        ecdfpct<-(1:length(sortpct))/length(sortpct)
        plot(sortpct, ecdfpct, xlim=limx, type="l", col="green")
        lines(sfx, sfy, xlim=limx, type="l", col="red")
        n<-n+1
}

右下の象限の図を-90度回転させたいと思います。

4

1 に答える 1

0

'grid'パッケージは常にそれを行います。convertXビューポートは、X方向とY方向(場合によってはZ方向)および関数で[0、1]として表され、convertYユーザー座標からグリッド座標に移動するために呼び出されます。施設help(grid)の完全なリストを入力します。ワイヤーフレームまたはレベルプロットを使用する場合も、3次元が表されます。同次座標による変換は、としてアクセスされるアイテムとして格納された4x4行列を介して実行されますcurrent.transform( current.viewport())。のコードを見ると、これらの変換行列がRでどのように処理されるかに関する詳細を取得できますtrans3d。@nograpesは、関数内の高レベルのローテーション機能をすでに示しているようですgrid::pushViewport

于 2012-08-19T20:36:14.023 に答える