20

私はループでいくつかのggplotチャートをプロットしています(私は知っています、私はplyrを使用してループしないことを知っています...しかし)、小数精度を1小数(つまり0.0)に設定する方法があるかどうか興味がありました。次のスケール変換を使用しています。

p <- p + scale_y_log10()

どんな助けでも大歓迎です。

4

1 に答える 1

23

小数点以下1桁(つまり1.2)がデフォルトであるという印象を受けましたが、それよりも小数点以下の桁数が多い場合は、独自のフォーマットをスケールに渡すことができます。

fmt_dcimals <- function(decimals=0){
   # return a function responpsible for formatting the 
   # axis labels with a given number of decimals 
   function(x) as.character(round(x,decimals))
}

次に、プロットにスケールを追加します。

ggplot( ... ) + scale_y_log10(labels = fmt_dcimals(2))

これについて考えたので、実際に独自のフォーマッターを作成する場合formatは、丸めや強制ではなく、関数を使用して作業を行うことに固執する必要があることを付け加えておきます。それはおそらくより安全で「より良い」ものです。

例として、小数点以下2桁を強制するには、この書式設定関数を次のように変更できます。

fmt_dcimals <- function(decimals=0){
    function(x) format(x,nsmall = decimals,scientific = FALSE)
}

nsmallそして、あなたはさらにあなたが望むものを得るためにとdigits引数で遊ぶことができるとformat私は思います。その使用例:

df <- data.frame(x = 1:5,y = rexp(5))
ggplot(df,aes(x = x,y=y)) + 
    geom_point() + 
    scale_y_log10(labels = fmt_dcimals(2))

ここに画像の説明を入力してください

于 2012-04-05T21:09:25.750 に答える