5

この散布図を作成する素敵なコードを見つけたところです。

代替テキスト
(出典: free.fr )

そして、ドットのサイズ/色 (下の三角形) を、そのタイプのオプションの数に応じて異なるようにすることで、リクレット スケール変数 (1 から 5 の整数) に実装したいと考えました (ジッターが私に与えた可能性のある効果のように) )。

ベースプロットメカニズムでこれを行う方法について何か考えはありますか?

アップデート:

次の関数を作成しましたが、ドットのスケールを常に「適切」にする方法がわかりません。どう思いますか?

panel.smooth2 <- function (x, y, col = par("col"), bg = NA, pch = par("pch"), 
                    cex = 1, col.smooth = "red", span = 2/3, iter = 3, ...) 
{
    require(reshape)
    z <- merge(data.frame(x,y), melt(table(x ,y)),sort =F)$value
    z <- z/ (4*max(z)) 

    symbols( x, y,  circles = z,#rep(0.1, length(x)), #sample(1:2, length(x), replace = T) ,
            inches=F, bg="blue", fg = bg, add = T)

    # points(x, y, pch = pch, col = col, bg = bg, cex = cex)
    ok <- is.finite(x) & is.finite(y)
    if (any(ok)) 
        lines(stats::lowess(x[ok], y[ok], f = span, iter = iter), 
            col = col.smooth, ...)
}



a1 <- sample(1:5, 100, replace = T)
a2 <- sample(1:5, 100, replace = T)
a3 <- sample(1:5, 100, replace = T)
aa <- data.frame(a1,a2,a3)


pairs(aa , lower.panel=panel.smooth2)
4

2 に答える 2

3

「シンボル」を使用できます(メソッド「lines」、「abline」などに類似)。

この方法により、1 行のコードでシンボルのサイズと色の両方をきめ細かく制御できます。

「シンボル」を使用すると、シンボルのサイズ、色、および形状を設定できます。形状とサイズは、各シンボルのサイズのベクトルを渡し、それを 'circles'、'square'、'rectangles'、または 'stars' のいずれかにバインドすることによって設定されます。たとえば、'stars' = c(4, 3, 5, 1)。色は 'bg' および/または 'fg' で設定されます。

symbols( x, y, circles = circle_radii, inches=1/3, bg="blue", fg=NULL) 

あなたの質問の 2 番目の部分を理解している場合は、プロット内のシンボルをスケーリングするために使用する関数が意味のある方法でスケーリングすることを合理的に確認したいと考えています。'symbols' 関数は (たとえば)半径をスケーリングします'z' 変数 (または data.frame 列など) の値に基づく円の数。以下の行では、シンボルの最大サイズ (半径) を 1/3 インチに設定しています。最大値に対するそのデータ点の値の比率によってスケーリングされた、いくつかの分数の半径。これは良い選択ですか? わかりませんが、直径、特に円周の方が良いように思えます。いずれにせよ、それは些細な変更です。要するに、'​​circles' が渡された 'symbols' は、'z' 座標に比例してシンボルの半径をスケーリングします。おそらく、連続変数に最も適しています。離散変数/因子には色 (「bg」) を使用します。

'symbols' を使用する 1 つの方法は、プロット関数を呼び出して type='n' を渡すことです。これにより、プロット オブジェクトが作成されますが、シンボルの描画が抑制されるため、次に 'symbols' 関数で描画できます。

この目的で「cex」を使用することはお勧めしません。'cex' はテキスト サイズとシンボル サイズの両方のスケーリング係数ですが、影響を与える 2 つのプロット要素のどちらが影響するかは、それをいつ渡すかによって異なります。'par' を介して設定すると、表示されるほとんどのテキストに作用します。プロット上で; 「プロット」関数内で設定すると、シンボルのサイズに影響します。

于 2010-04-07T16:07:12.890 に答える
2

確かに、使用するだけcexです:

set.seed(42)
DF <- data.frame(x=1:10, y=rnorm(10)*10, z=runif(10)*3) 
with(DF, plot(x, y, cex=z))

これにより、さまざまな円のサイズが得られます。色は単純に4次元にすることができます。

于 2010-04-07T15:26:27.567 に答える