2017-11-22 10 views
1

私はx軸が0から1の範囲にあるデータセットを持っています。データのより興味深い部分が1に近いので、その領域を爆破したいと思います。ggplot - scale_x_square()?

私はscale_x_sqrt()を使用して領域をゼロに近づけることができます。その逆のことをしたいと思います。

最小例:ここでは

df <- data.frame(x=seq(0,1,length.out=100), y=1:100) 
ggplot(df, aes(x=x, y=y)) + geom_line() + scale_x_sqrt() 

、私の代わりにscale_x_square()ようなものを使用したいと思います。

+1

'scale_x_continuous'には、独自のカスタム変換関数を渡すための 'trans'引数があります。ドキュメントにはさらに詳しい情報があります。 – joran

+0

ありがとう、それは私が探しているものです! – thc

答えて

1

完全性のために、例を示します。必要な微妙な部分には記号が含まれています。たとえx値の範囲が0から上の場合でも、ggplotはデフォルトでプロット制限を拡大するので、負の値でも正しく動作するように変換が必要になります。

pow_trans <- function(n = 2){ 
    scales::trans_new("pow", 
         transform = function(x) sign(x) * x^n, 
         inverse = function(x) sign(x) * abs(x)^(1/n)) 
} 
ggplot(df, aes(x=x, y=y)) + 
    geom_point() + 
    scale_x_continuous(trans = pow_trans(3))