2012-09-07 32 views
6

バーの最小値を指定できる棒グラフを作成したい(ボックスやウィスカープロットのように)。バープロットでできますか?私は答えがggplotであると思うが、私は例を見つけることができない。 は、ここにいくつかのデータは次のとおり浮動小数点数

    X Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
1  Highest recorded 31.5 31.8 30.3 28.0 24.9 24.4 21.7 20.9 24.5 25.4 26.0 28.7 
2 Mean monthly maximum 27.8 28.6 27.0 24.8 22.0 20.0 18.9 18.8 20.4 22.4 23.9 26.8 
3 Mean daily maximum 24.2 24.8 23.1 20.9 18.4 16.3 15.5 15.7 16.9 18.3 20.0 22.4 
4     Mean 19.1 19.8 18.1 16.2 13.8 11.9 11.2 11.6 12.7 14.1 15.7 17.7 
5 Mean daily minimum 14.0 14.7 13.1 11.4 9.2 7.5 6.9 7.4 8.4 10.0 11.4 13.0 
6 Mean monthly minimum 7.6 9.1 6.8 3.8 2.3 -0.5 -0.2 1.0 2.3 3.7 5.3 6.7 
7  Lowest recorded 4.0 5.6 4.1 -1.3 0.0 -3.1 -2.6 -1.4 -0.8 2.0 2.7 4.1 

X軸= Cの( "J"、 "F"、 "M"、 "A"、 "M"、 "J"、 "J"、 "A"、

理想的には、月ごとに積み重ねられたバーがあり、ゼロからではなく「最低記録値」から始まります。

私は、UsingRパッケージからsuperbarplotを試してみました。私は棒を私が欲しいところから始めてもらうことができますが、x軸をプロットの中心から外に動かすことはできません。前もって感謝します。

+0

+1時にはgeom_floatingbarが必要です。 –

+1

インスピレーションのためにこの質問を参照してください:http://stackoverflow.com/questions/12306469/ggplot2-size-and-placement-of-geomline –

答えて

6

あなたはこれが部分的に記述されている他の

# first, your data 
weather <- read.table(text = 'X Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
1  "Highest recorded" 31.5 31.8 30.3 28.0 24.9 24.4 21.7 20.9 24.5 25.4 26.0 28.7 
2 "Mean monthly maximum" 27.8 28.6 27.0 24.8 22.0 20.0 18.9 18.8 20.4 22.4 23.9 26.8 
3 "Mean daily maximum" 24.2 24.8 23.1 20.9 18.4 16.3 15.5 15.7 16.9 18.3 20.0 22.4 
4     "Mean" 19.1 19.8 18.1 16.2 13.8 11.9 11.2 11.6 12.7 14.1 15.7 17.7 
5 "Mean daily minimum" 14.0 14.7 13.1 11.4 9.2 7.5 6.9 7.4 8.4 10.0 11.4 13.0 
6 "Mean monthly minimum" 7.6 9.1 6.8 3.8 2.3 -0.5 -0.2 1.0 2.3 3.7 5.3 6.7 
7  "Lowest recorded" 4.0 5.6 4.1 -1.3 0.0 -3.1 -2.6 -1.4 -0.8 2.0 2.7 4.1', header =T) 


library(reshape2) 
library(ggplot2) 
# reshape to wide format (basically transposing the data.frame) 
w <- dcast(melt(weather), variable~X) 
ggplot(w, aes(x=variable,ymin = `Lowest recorded`, 
     ymax = `Highest recorded`, lower = `Lowest recorded`, 
     upper = `Highest recorded`, middle = `Mean daily maximum`)) + 
    geom_boxplot(stat = 'identity') + 
    xlab('month') + 
    ylab('Temperature') + 
    geom_crossbar(aes(y = `Mean monthly maximum`))+ 
    geom_crossbar(aes(y = `Mean monthly minimum`)) + 
    geom_crossbar(aes(y = `Mean daily maximum`))+ 
    geom_crossbar(aes(y = `Mean daily minimum`)) 

enter image description here

に置くために事前に計算された値を指定したい(と思う)ものを手に入れるggplot2geom_boxplotを使用してstat = 'identity'geom_crossbarを使用することができますヘルプの例geom_boxplot

関連する問題