3

両対数プロットでベータ分布をプロットしたいと考えています。

x <- seq(0, 1, length=1001)
y <- dbeta(x, 0.1, 0.1)
plot(x, y, type="h", log="xy")

xticsはに設定されています

0.001
0.005
0.01 (without label)
0.05
0.1 (without label)
0.5
1 (without label)

どのように判断できますか:

  1. 主要な小数点位置にラベルが付けられていること (1.0、0.1、0.01、0.001、0.0001、...)

  2. 目盛りは小数点以下 9 桁に描画する必要があります (0.01 と 0.1 の間の領域では、0.01、0.02、0.03、....)

  3. 最大 y 範囲は 0.5 にする必要があります

ご協力いただきありがとうございます。

スヴェン

4

2 に答える 2

2

axes = FALSE軸を細かく制御するには、それらを個別にプロットするため、最初にplot()呼び出しで引数を使用して軸を抑制します。

plot(x, y, type="h", log="xy", axes = FALSE)

次に、必要に応じて軸を追加します

axis(side = 1, at = (locs <- 1/c(1,10,100,1000)), labels = locs)
axis(side = 2)
box()

質問 2 にも同じように答えることができます。目盛りの位置を指定する必要があるだけです。おそらくtclaxis()呼び出しの引数引数をデフォルト (つまり ) よりも少し小さく設定します-0.5。トリッキーなビットは、必要なマイナー ティックを生成することです。私はこれしか思いつかなかった:

foo <- function(i, x, by) seq(x[i,1], x[i, 2], by = by[i])
locs2 <- unlist(lapply(seq_along(locs[-1]), FUN = foo, 
                       x= embed(locs, 2), by = abs(diff(locs)) / 9))

また

locs2 <- c(outer(1:10, c(10, 100, 1000), "/"))

両方が与える:

R> locs2
 [1] 0.100 0.200 0.300 0.400 0.500 0.600 0.700 0.800 0.900 1.000 0.010 0.020
[13] 0.030 0.040 0.050 0.060 0.070 0.080 0.090 0.100 0.001 0.002 0.003 0.004
[25] 0.005 0.006 0.007 0.008 0.009 0.010

への別の呼び出しを介してそれらを使用しますaxis()

axis(side = 1, at = locs2, labels = NA, tcl = -0.2)

ここでは を使用してラベルを抑制しlabels = NAます。ベクトルの実行方法を理解する必要があるだけですat...

2 つのステップをまとめると、次のようになります。

plot(x, y, type="h", log="xy", axes = FALSE)
axis(side = 1, at = (locs <- 1/c(1,10,100,1000)), labels = locs)
axis(side = 1, at = locs2, labels = NA, tcl = -0.3)
axis(side = 2)
box()

生成するもの:

軸呼び出しによって生成されるプロット

質問 3 についてですが、最大範囲とはどういう意味ですか? ylim引数 toを使用して、y 軸の範囲を設定できますplot()。あなたはそのように制限(最小と最大)を提供します

plot(x, y, type="h", log="xy", axes = FALSE, ylim = c(0.2, 1))
axis(side = 1, at = (locs <- 1/c(1,10,100,1000)), labels = locs)
axis(side = 2)
box()

ただし、範囲だけでは制限を定義するのに十分ではありません。プロットに表示する最小値または最大値のいずれか、または必要な実際の値の範囲を指定する必要があります。

于 2011-06-07T17:48:55.757 に答える
1

これを試して:

library(sfsmisc)

x <- seq(0, 1, length=1001)
y <- dbeta(x, 0.1, 0.1)
plot(x, y, type="h", log="xy", xaxt="n", yaxt="n", ylim=c(0.01, 0.5), main="Title")

atx <- c(0.0001, 0.001, 0.01, 0.1, 1, 10, 100)
eaxis(1, at=atx, labels=format(atx, drop0trailing=TRUE, scientific=FALSE), drop.1=FALSE, small.mult=10 )
aty <- c(0.01, 0.1, 0.5, 1, 10, 100)
eaxis(2, at=aty, labels=format(aty, drop0trailing=TRUE, scientific=FALSE), drop.1=FALSE, small.mult=10 )
grid()

ここに画像の説明を入力

于 2011-06-07T17:59:36.587 に答える