2016-10-20 30 views
2

rbokehでヒストグラムを生成しようとしています。rbokehでヒストグラムを作成するにはどうすればよいですか?

直接アプローチly_histは、予想外のカウントにつながります(下図、上)。間接的なアプローチly_barは、因子レベルでソートされていないx軸を与えます(下図、下)。

enter image description here

ggplot2

rbokehが期待される結果が得られます。

enter image description here

コード:

library(data.table) 
library(rbokeh) 
library(ggplot2) 

# generate data ============== 
set.seed(123) 
x = data.table(
    hour = sample.int(n = 24, size = 100, replace = T) 
) 

# summarize 
y = x[, .N, keyby = hour] 

# ggplot ====================== 
theme_set(theme_bw()) 

g1 = ggplot(x) + 
    geom_histogram(aes(hour), bins = 24, fill = "steelblue", col = "white", alpha = 0.5) + 
    scale_x_continuous(breaks = seq(1, 24, 1)) 

g2 = ggplot(y) + 
    geom_bar(aes(hour, N), stat = "identity", fill = "steelblue", alpha = 0.5) 


# rbokeh ================== 
b1 = figure() %>% 
    ly_hist(hour, data = x, breaks = 24) 

y[, hour := factor(hour)] 

b2 = figure() %>% 
    ly_bar(hour, N, data = y) 

Q:(1)どのように私は(ggplot2のように)期待される結果を生成するrbokehを使用してヒストグラムを生成することができますし、(2)どのように私は得ることができますx軸は正しい順序でソートされますか?

+1

rbokehヒストグラムが間違っていると思いますか? –

+0

私は出力が_unexpected_であることを意味しました。私はプロットを "y"オブジェクト(コード参照)とggplotの結果と比較しました。 – Henk

+0

さて、あなたのQ(1)は「最初の場所で正しくないことを意味するrbokenを使って、どのように正しいヒストグラムを生成できますか?」です。いずれにせよ、あなたは 'ly_hist'への引数を使って遊ぶことができます。これは' hist'とまったく同じです。 –

答えて

1

ly_hist関数は、データを連続として扱うため、データを格納します。したがって、ly_histで得られた出力が期待されます。

ly_barについては

、あなたはどちらかfigure()xlim引数を指定することにより、x軸を制御することができます。

figure(xlim = as.character(1:24)) %>% 
    ly_bar(hour, N, data = y) 

またはx_range()機能を通じて数字をパイプから:

figure() %>% 
    ly_bar(hour, N, data = y) %>% 
    x_range(as.character(1:24)) 

はまた、もしことに注意してくださいあなたは要約を前面に出したくないので、x変数を渡すことができます。デフォルトでは

figure(xlim = as.character(1:24)) %>% 
    ly_bar(as.character(hour), data = x) 

、理想的rbokeh軸の因子レベルの順序を尊重すべきであり、より優雅に予期しないタイプの入力を処理することができるはずです(as.character()ビジネスを回避するため)、そしてこれらは、今後のアップデートで対処されます。

関連する問題