3

このラスター ファイルが あり、y 軸 (周波数) を [0,1] に再スケーリングしたい (周波数をすべての周波数の合計で割ることにより)。

conne <- file("C:\\fined.bin","rb")
sd<- readBin(conne, numeric(), size=4,  n=1440*720, signed=TRUE)
y<-t(matrix((data=sd), ncol=1440, nrow=720))
r = raster(y)
hist(r, breaks=30, main="SMD_2010",
        xlab="Pearson correlation", ylab="Frequency", xlim=c(-1,1))

example:


        values  frequency        (rescaled by dividing each frequency by the sum(85600))
          -1    0                       0
        -0.5    100               0.001168224
           0    38000                 0.443925234
         0.5    7500                  0.087616822
        0.75    40000                 0.46728972

ここに画像の説明を入力

4

1 に答える 1

2

1 つの解決策は、ヒストグラム os オブジェクトを保存することです。このオブジェクトの構造を見ると、ヒストグラム バーの高さが element に格納されていることがわかりますcounts

r<-sample(1:25000,1000)
hist.ob <- hist(r)
str(hist.ob)
List of 7
 $ breaks     : num [1:14] 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 ...
 $ counts     : int [1:13] 75 46 72 91 71 91 74 87 86 82 ...
 $ intensities: num [1:13] 3.75e-05 2.30e-05 3.60e-05 4.55e-05 3.55e-05 4.55e-05 3.70e-05 4.35e-05 4.30e-05 4.10e-05 ...
 $ density    : num [1:13] 3.75e-05 2.30e-05 3.60e-05 4.55e-05 3.55e-05 4.55e-05 3.70e-05 4.35e-05 4.30e-05 4.10e-05 ...
 $ mids       : num [1:13] 1000 3000 5000 7000 9000 11000 13000 15000 17000 19000 ...
 $ xname      : chr "r"
 $ equidist   : logi TRUE
 - attr(*, "class")= chr "histogram"

すべてのバーの高さの合計が 1 になるようにデータを変換するには、各数値を数値の合計で割る必要がありますcounts。次に、plot()関数を使用して新しいプロットを取得します。

hist.ob$counts<-hist.ob$counts/sum(hist.ob$counts)
plot(hist.ob)
于 2013-02-01T15:27:41.600 に答える