R散布図の点のサイズを制御しますか?


116

Rでは、plot()関数はpch、プロット内のポイントの外観を制御する引数を取ります。私は何万点もの散布図を作成しており、小さいが小さすぎない点を好みます。基本的に、私はpch='.'小さすぎpch=19ますが、太りすぎです。どうにかしてドットを縮小するための中間または何らかの方法がありますか?


ドットを小さくするのではなく、100個のランダムなデータポイントが1000個よりも見やすいと言うだけでプロットする方法はありますか?
user2363642 2014

多くの小さな点で、アルファ(透明度)を使用すると、散布図をプロットするのに少数の点を使用するよりもはるかに有益です。

1
使用しないことをお勧めpch='.'します。中心から外れます。出典:私はpch='.'頻繁に使用していました
ジェネラマ

@geneoramaの·代わりに使用するつもり.ですか?
nanaki

@nanaki多かれ少なかれ、奇妙なことに、私がRでそれを使用すると、あなたのシンボルは小さなボックスとして表示されます。以下の答えは、正しいアプローチを説明するのに優れています。
ジェネラマ

回答:


100

cex引数を試してください:

?par

  • cex
    プロットテキストとシンボルをデフォルトと比較して拡大する量を示す数値。plot.defaultなどの一部のグラフィックス関数には、このグラフィックパラメータを乗算するこの名前の引数があり、ポイントなどの一部の関数は、リサイクルされる値のベクトルを受け入れます。1より大きい長さのベクトルが指定されている場合、他の用途では最初の値のみが使用されます。

15
他のオプションがない限り、シンボルサイズを制御するために 'cex'を使用することはないと思います。それは時々しか機能しません。ルールは、「cex」が「par」を介して設定されている場合、プロット上の(ほとんどの)テキストのサイズに影響し、「plot」内に設定されている場合、「cex」はシンボルサイズのみに影響を与えるということです。したがって、そのルールを誤って適用すると、シンボルサイズが変更されないだけでなく、テキストサイズに影響を与える複数のパラメーター(cex.axis、cex.lab、cex.main、およびcex.sub--すべてが同じことになります) 「cex」としての仕事、区分的にのみ)。このようなコードは、保守や拡張が困難です。
ダグ

5
同意します。をcex介してグローバルに設定parすると、図のマージンを含め、修正する必要のあるすべての種類のものが変更されます。ただし、cex内の設定plotは機能するようです。
2013年

上記のダグのコメントによって支持されたアドバイスは必ずしも間違っているわけではありませcex、プロットするときの引数の使用に関する潜在的な問題を大幅に誇張しています。それが有用であり最良の選択肢である多くの場合があります。
joran

lwdpchの線幅を制御しますplot(1:5, pch=1:5, col=1:5, lwd=1:5)sthda.com/english/wiki/…に
geneorama

95

pch = 20は、「。」の間のサイズのシンボルを返します。と19。

これは塗りつぶされたシンボルです(これはおそらくあなたが望むものです)。

それとは別に、Rの基本グラフィックスシステムでも、ユーザーはシンボルのサイズ、色、および形状をきめ細かく制御できます。例えば、

dfx = data.frame(ev1=1:10, ev2=sample(10:99, 10), ev3=10:1)

with(dfx, symbols(x=ev1, y=ev2, circles=ev3, inches=1/3,
                  ann=F, bg="steelblue2", fg=NULL))

グラフの例


このプロットは大好きですが、半径をそのポイントの観測数と等しくしたいのですが、その方法を教えていただけませんか?
Derk Arts 2013

pi*R^2(表面)は観測数に比例する必要があります。
SESman 2013年

5
@saratisこれはあなたが望むことをします:symbols(x=dfx$ev1, y=dfx$ev2, circles=sqrt(dfx$ev3/pi), inches=1/3, ann=F, bg="steelblue2", fg=NULL)
fmark '28

1
これを使用して同じグラフに複数の系列をプロットする方法について何か考えはありますか?つまり、「points(x = dfx2 $ ev1、y = dfx2 $ ev2、circles = dfx2 $ ev3、...)」は機能しません。
ネオジム2015

「インチとは何ですか?」こちらを参照
MichaelChirico

22

RCSが述べたように、cexベースのグラフィックスパッケージに仕事を行います。あなたはグラフを実行するつもりはないと思いますggplot2が、そうする場合、size簡単に制御できる(ggplot2ユーザーフレンドリーな関数引数を持つ:入力するcex(文字展開)の代わりに)ggplot2eg size = 2と入力することができる美的属性がありますあなたは2mmポイントを取得します)。

次に例を示します。

### base graphics ###
plot(mpg ~ hp, data = mtcars, pch = 16, cex = .9)

### ggplot2 ###
# with qplot()
qplot(mpg, hp, data = mtcars, size = I(2))
# or with ggplot() + geom_point()
ggplot(mtcars, aes(mpg, hp), size = 2) + geom_point()
# or another solution:
ggplot(mtcars, aes(mpg, hp)) + geom_point(size = 2)

4
そして、本当に何万ものポイントをプロットしている場合、ggplot2には、見栄えを良くするためのいくつかの代替方法があります-アルファ調整、16進数ビン、等高線図などです。あなたの図書館で、またはあなたの図書館がシュプリンガーの本に電子的にアクセスできる場合(私はR本のほとんどがそこにあると思います)。
マットパーカー

うん...私は特にalpha散布図で使用し、オーバープロットを回避しています。
aL3xa 2010

@ aL3xa 基本グラフィックスパッケージでアルファを使用できます。たとえばcol = rgb(0, 0, 0, 0.6)、プロットオプションに追加するだけです。
RobJan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.