7

バーの最小値を指定できる棒グラフを作成したいと思います(箱ひげ図のボックスのように)。棒グラフはそれを行うことができますか?答えは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

xaxis = c( "J"、 "F"、 "M"、 "A"、 "M"、 "J"、 "J"、 "A"、 "S"、 "O"、 "N"、 "D ")

したがって、理想的には、月ごとに積み上げられたバーが作成されます。これは、ゼロではなく、「記録された最低」の値から始まります。

また、UsingRパッケージのsuperbarplotを試してみました。バーを希望の場所から開始することはできますが、x軸をプロットの中心から下に移動することはできません。前もって感謝します。

4

1 に答える 1

7

で使用geom_boxplotggplot2て、事前に計算された値を指定したいもの(私は思う)を取得し、他の値を入力するためにstat = 'identity'使用できますgeom_crossbar

# 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`)) 

ここに画像の説明を入力してください

これは、ヘルプの例で部分的に説明されていますgeom_boxplot

于 2012-09-07T05:53:58.767 に答える