6

私の問題の核心:

grid パッケージの convertUnit、convertX、および convertY 関数を使用して、npc 単位をネイティブ単位に変換しようとしています。(npc = 正規化された親座標、おそらく ndc 単位として知られている、ベース グラフィックス R の一部に正規化されたデバイス座標。プロットがグラフ化されるネイティブ単位に到達しようとしているので、xlim および ylim 単位に関して.)しかし、私がこれをやろうとすると:

> xyplot(1:10~1:10)
> convertX(unit(.9, "npc"), "native")
[1] 484.2native

ネイティブの x 座標として 9 に近い数値を期待している場合。convertX は、代わりにデバイス座標/ピクセルで単位を返しているようです。

理由: ベース ロケーター タイプのデバイスを使用して npc 座標を返し、それらの npc 座標から、グラフがプロットされたネイティブ座標に変換しようとしています。ベース グラフィックスのロケーターまたは grid.locator を使用できますが、npc からネイティブに変換して、この新しいノンブロッキング ロケーターの機能をグリッド/ラティス グラフィックスに拡張しようとしています。convertUnit と convertY も機能しません。

質問 グリッドが npc からアクティブなプロット ウィンドウのネイティブ座標に戻すことは可能ですか? convertX がネイティブ座標ではなくピクセルを返すのはなぜですか?

よろしくお願いします。

タグとずさんな間違いのために編集され、前に xyplot が除外されました。申し訳ありませんが、それは xyplot に当てはまります。

4

2 に答える 2

1

'"native"' 位置と寸法は、ビューポートの 'xscale' と 'yscale' に相対的です。変換は現在のビューポート内で発生します。

> plot(1:10)
> convertX(unit(.9,"npc"),"native")
[1] 453.6native
> pushViewport(viewport())
> convertX(unit(.9,"npc"),"native")
[1] 0.9native
> convertX(unit(.1,"npc"),"picas")
[1] 4.21575picas #making window smaller
> convertX(unit(.1,"npc"),"picas")
[1] 1.9798375984252picas #making window larger
> convertX(unit(.1,"npc"),"picas")
[1] 5.25783218503937picas

したがって、適切な値を取得するには、最初にビューポートが必要です。

于 2011-08-12T21:12:01.593 に答える
0

どうやら、ビューポートがプッシュされた後、基になるプロットの設定座標を忘れており、新しい座標は npc 座標と同等のようです。

新しいビューポートにプロットするまでは、振り出しに戻ります。

xyplot(1:10 ~ 10:1)
> convertX(unit(.9, "npc"), "native")
[1] 605.7native
> pushViewport(viewport())
> convertX(unit(.9, "npc"), "native")
[1] 0.9native
> xyplot(1:10 ~ 10:1)
> convertX(unit(.9, "npc"), "native")
[1] 605.7native

xとyが実際にプロットされているものに対応する座標を取得することは可能ですか?

于 2015-07-09T18:36:40.563 に答える