4

平均値が最も低い因子から平均値が最も高い因子に箱ひげ図を進めようとしています。簡単な例を次に示します。

a = rnorm(10,mean=3,sd=4)
b = rnorm(10,mean=-1,sd=2)
c = rnorm(10,mean=5,sd=6)
d = rnorm(10,mean=-3,sd=1)
e = rnorm(10,mean=0,sd=.5)

labs = c(rep("a",10),rep("b",10),rep("c",10),rep("d",10),rep("e",10))
mean =     c(rep(mean(a),10),rep(mean(b),10),rep(mean(c),10),rep(mean(d),10),rep(mean(e),10))
data = c(a,b,c,d,e)
df = data.frame(labs,data,mean)
df = df[order(df$mean),]
boxplot(data~labs,data=df)
#They are not ordered
df$labs = ordered(df$labs, levels=levels(df$labs))
boxplot(data~labs,data=df)
#It doesn't work

ファクターを左側が最小で、右側に進むにつれて大きくなるようにするにはどうすればよいですか?これにはいくつかのスレッドがありますが、それらのアプローチは私にはうまくいきません。(おそらく私のデータ形式のためですか?)

x軸上の文字を180度回転させるのに役立つボーナスポイント。

前もって感謝します!

4

2 に答える 2

7
boxplot(data~reorder(labs,data),data=df)

ここに画像の説明を入力

EDIT テキストの回転

図と外側の余白では、テキストは 90 度の倍数の角度でのみ描画でき、この角度はlas設定によって制御されます。値 0 は、テキストが常に関連する軸に平行に描画されることを意味します (つまり、マージン 1 と 3 で水平方向、マージン 2 と 4 で垂直方向)。値 2 は、テキストが関連する軸に対して常に垂直であることを意味します。

プロット領域でのテキストの描画 (テキストを使用) は、srtパラメーターによって度数で制御されます。

  boxplot(data~reorder(labs,data),data=df, las=2,
        names=unique( paste(labs,'long')))

text(x=1,y=5,labels='Use srt to rotate text in the 
       plot region\n but las in figure and outer margins,',
      srt=50,cex=1,font=2)

ここに画像の説明を入力

于 2013-03-07T00:58:41.870 に答える
6

使用する場合は、を使用ggplot2 して軸テキストの回転を行うのは非常に簡単です。 theme(axis.text.x = element_text(angle= 90)

library(ggplot2)

ggplot(df, aes(x=reorder(labs, data), y = data)) + 
  geom_boxplot() + 
  theme(axis.text.x = element_text(angle=90)) + 
  labs(x= 'x')

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

元の呼び出しが機能しorderedなかった理由は、元のデータからレベルを渡したためです。これは間違った順序でした。レベルの順序は、必要な順序を反映している必要があります。そうは言っreorderても、この場合の慣用的なアプローチです。

そしてlattice解決策なので、忘れられない

library(lattice)
bwplot(data~reorder(labs,data), df, scales=  list(x= list(rot = 90)))

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

于 2013-03-07T01:15:22.943 に答える