2017-05-03 3 views
0

私は連続変数の分布を視覚化するための棒グラフを作成しています。上場価格の価格分布。 サンプルデータを生成し、gplot2で棒グラフを作成しました。連続変数を配布するための棒グラフを作成する

a<- rnorm (100, 1000, 1000) 
d <- as.data.frame(a) 
d <-d %>% mutate(b=cut(a, breaks=seq(min(a),max(a), 500))) %>% 
    group_by(b) %>% summarize(count=n()) 
ggplot(data=d, aes(x=b, y=count)) + 
    geom_bar(stat = 'identity')+ 
    theme (axis.text.x=element_text(angle=90, size=5, face='bold')) 

enter image description here

私の質問は

  • 、例えば、1.22E + 03が1220

  • なぜ最後になるように、どのように私はx軸のラベルをフォーマットすることができていますbinはNAになりますか?

私はちょうどこのデータ用geom_histogramを使用することができます知っています。しかし、私はちょうど非常に歪曲したデータのために、連続変数をビンに分割する柔軟性を持っていたいと思います。 何か助けていただければ幸いです。前もって感謝します。

+2

あなたはバープロットやヒストグラムをしたいですか? mutate stepをスキップすると 'ggplot(d)+ geom_histogram(aes(a))'を実行することができます。そうでなければ、 'labels ='硬化 'cut()'を取得する必要があります。彼らは "かなり"。 – MrFlick

答えて

2

どちらも約cut()です。あなたは読むべきです?cut

クラスラベルの科学的表記を避けるには、引数dig.labを使用してください。あなたの例では、cut(a, breaks=seq(min(a),max(a), 500), dig.lab = 6L)で十分です。

NAは、breaks引数にリンクされている2つの理由から表示されます。まず、デフォルトでは、最初のブレークはcut()から除外されているので、a == min(a)NAとなるような観測が行われます。これを克服するには、include.lowest = TRUEを使用します。 seq(min(a), max(a), 500)max(a)前に500 の最後の倍数で停止し、したがって、max(a)が含まれていないベクトルを生成するので

は最後に、あなたの最高値は無視されます。これを克服するには、ceiling(max(a)/500) * 500のように、max(a)の後にseqの2番目の引数が500の最初の倍数であることを確認する必要があります。

したがって、この作業をする必要があります:

d <-d %>% 
    mutate(b=cut(a, breaks=seq(min(a), ceiling(max(a)/500) * 500, 500), 
       include.lowest = TRUE, 
       dig.lab = 6L)) %>% 
    group_by(b) %>% summarize(count=n()) 
+0

非常に明確な説明!非常に素晴らしい!ありがとうございました!! @スコア – zesla

関連する問題