6

多くの異なる時系列の季節的な箱ひげ図を作成したいと考えています。以下のコードが、私がやりたいことを明確に示していることを願っています。

私の質問は、できるだけ少ないコード行で最もエレガントな方法でこれを行う方法です。関数「サブセット」を使用して毎月新しいオブジェクトを作成し、それをプロットできますが、これはあまりエレガントではないようです。「分割」機能を使用しようとしましたが、そこからの進め方がわかりません。

私の質問が明確に述べられていないか、より明確にするために編集してください。

他のウェブサイト/投稿への直接的なヘルプやリンクは大歓迎です。御時間ありがとうございます。

コードは次のとおりです。

## Create Data
Time <- seq(as.Date("2003/8/6"), as.Date("2011/8/5"), by = "2 weeks")
data <- rnorm(209, mean = 15, sd = 1)
DF <- data.frame(Time = Time, Data = data)
DF[,3] <- as.numeric(format(DF$Time, "%m"))
colnames(DF)[3] <- "Month"

## Create subsets
Jan <- subset(DF, Month == 1)
Feb <- subset(DF, Month == 2)
Mar <- subset(DF, Month == 3)
Apr <- subset(DF, Month == 4)

## Create boxplot
months <- c("Jan", "Feb", "Mar", "Apr")
boxplot(Jan$Data, Feb$Data, Mar$Data, Apr$Data, ylab = "Data", xlab = "Months", names = months)

## Try with "split" function
DF.split <- split(DF, DF$Month)
head(DF.split)
4

3 に答える 3

7

「ggplot2」(および @James の月名、ありがとう!) の使用:

DF$month <- factor(strftime(DF$Time,"%b"),levels=month.abb)
ggplot(DF, aes(x=,month, y=Data)) +
    geom_boxplot()

箱ひげ図

(ところで: 'ggplot2' では、「上と下の「ヒンジ」は 1 番目と 3 番目の四分位数 (25 番目と 7 番目のパーセンタイル) に対応することに注意してください。これは、boxplot 関数で使用される方法とは少し異なります。サンプル。 " -ドキュメントを参照してください)

于 2012-08-21T10:16:14.120 に答える
6

形式を使用して月の名前を直接選択し、次"%b"の順序付けされた係数と数式インターフェイスを使用することをお勧めしboxplotます。

DF$month <- factor(strftime(DF$Time,"%b"),levels=month.abb)
boxplot(Data~month,DF)

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

于 2012-08-21T10:06:48.440 に答える
0

任意のロケール設定で順序付き要素として月を設定するには、次のヘルプ ページにあるトリックを使用します?month.abb

Sys.setlocale("LC_TIME", "German_Germany")
DF$month <- factor(format(DF$Time, "%b"), levels=format(ISOdate(2000, 1:12, 1), "%b"))

また、次のようにプロットすることもできますlattice

require(lattice)
bwplot(Data~month, DF, pch="|") # set pch to nice line instead of point

格子箱ひげ図

于 2015-06-08T20:58:09.057 に答える