2012-05-06 20 views
4

text()またはgrid.text()関数(またはRの他の同様の関数)のx座標とy座標に異なる座標系を使用する方法を理解しようとしています。X座標系とY座標系を混在させる

以下の例では、Yスケールのスケールを使用する代わりに、text()関数のY座標を画面の下部から10%に設定したいと考えています。私はy = 0.1のgrid.text()でそれをすることができますが、私はgrid.text()のXの位置をプロットのXスケールに設定する方法がわかりません。基本的には、text()grid.text()の機能を混在させたいと思います。

私はgrid.textにユニットを渡すオプションがあることを知っていますが、プロットからユニットを使用する方法を理解できません。

library(grid) 

test= data.frame(
    x = c(1,2,3), 
    y = c(12,10,3), 
    n = c(75,76,73) 
) 

par(mar = c(13,5,2,3)) 
plot(test$y ~ test$x,type="b") 

text(x=test$x, y=-2, label=test$n, xpd=T) 

enter image description here

答えて

3

リライト:

使用grconvertY()ユーザにデフォルト7インチディスプレイの寸法へ変換する座標:

opar <- par(mar = c(13,5,2,3)) 
plot(test$y ~ test$x,type="b") 
text(x=test$x, y=grconvertY(0.1*7 , "in", "user") , label=test$n, xpd=T) 
par(opar) 

デフォルトの表示は、7平方インチです(少なくとも私のマシンでは)、ユーザ座標をtext関数に与える必要があります。 grconvertYgrconvertXはその変換を実行できますが、Xディメンションのユーザー座標に満足しているので、grconvertXを使用しないでください。

enter image description here

+0

ありがとうございます!私はgrid.textを追加することによって、私は実際に質問を混乱させたと思う。プロットからX座標を使用する必要があります。あなたのコードでは、xは0.5ですが、xはデータセットのx値の1つでなければなりませんが、yは0.1でなければなりません。これができるかどうかわかりません。ありがとう –

+0

私はあなたが欲しいものを理解していると思います。 'text'に与えるために、デバイス座標からユーザー座標に移動する必要があります。 –

+0

ありがとう!私はxとy座標が異なる座標系(デバイスとユーザー)を使用できるSASのバックグラウンドから来ています。私はユーザー座標とデバイス座標を使用してgrid.textでそれをしようとしましたが、動作させることができませんでした。理想的には、私はTEXT関数で異なる座標系(デバイス)を使用したいと思いますが、GRID.TEXTは良いでしょう。 –