2017-03-13 4 views
0

ggplotを使ってヘビビンプロットを描画したいが、ログスケールが "かなり"ブレークする。私はこの作品、リニアスケール上のかなり休憩ggplotの16進数プロットできれいなログスケールを作成

ggplot(df, aes(a,b)) + 
    geom_hex(aes(fill=cut(..value..,breaks=pretty(..value.., n=10)))) + 
    scale_fill_discrete("Frequency") 

を取得するためにthis answerを使用

df = data.frame(a=rnorm(1000)); df$b <- df$a+rnorm(1000); 

を考えてみましょう。今私はログスケールのかなりの休憩を使用したいと言う。だから私は

base_breaks <- function(n = 10){ 
    function(x) { 
     axisTicks(log10(range(x, na.rm = TRUE)), log = TRUE, n = n) 
    } 
} 

を定義し、

ggplot(df, aes(a,b)) + 
    geom_hex(aes(fill=cut(..value..,breaks=base_breaks(n=10)(..value..)))) 

をしようとするanother answerからのアイデアを使用しますが、機能を見つけることができません。それは言う:

たとえ、base_breaksが定義されています。

> base_breaks(n=10)(c(1:1000)) 
[1] 1 5 10 50 100 500 1000 

ggplotがどのような環境でも機能を表示するにはどうすればよいですか?私はそれをグローバル変数として定義しても、

base_breaks <<- function(n = 10){ 
    function(x) { 
     axisTicks(log10(range(x, na.rm = TRUE)), log = TRUE, n = n) 
    } 
} 

でも、同じエラーが表示されます。

答えて

0

は、私はそれについてはよく分からないですが、あなたは、このような機能を簡略化してみてください:

base_breaks <<- function(n = 10, x){ 
    axisTicks(log10(range(x, na.rm = TRUE)), log = TRUE, n = n) 
} 

たぶん、問題は、その結果、他の機能である機能を持っているということであり、それがエラーを引き起こしている可能性があります。このaproachを使用すると、より直接的に値を取得できます。見てみな!

エラーが発生したため、自分で確認することはできませんobject 'value' not found ...

関連する問題