2013-09-07 40 views
7

rのボックスプロットのx軸のラベルをどのように回転できますか?rボックスプロット傾斜ラベルx軸

text(**????**, par("usr")[3] - 0.25, srt = 45, adj = 1, labels = labels, xpd = TRUE) 

私は疑問符をどこに持っていますか?

enter image description here

このコードを使用した:私はこの箱ひげ図を作成した

soil=read.csv("soil_temp_boxplot.csv", header=TRUE, sep=";")  
tiff("soil_boxplot.tiff") 
par(mar=c(5.5,3.5,0.5,0.5)) 
labels<-paste(c("RB-GL830-[16]-10","RB-GL830-[16]-30", "SB-GL834-[11]-10","SB-GL834-[11]-30", "RB-GL843-[17]-10","RB-GL843-[17]-30","SB-GL864-[12]-10","SB-GL864-[12]-30","SB-GL989-[10]-30", "RB-F844-[18]-10", "RB-F844-[18]-30", "SBB-F-864-[14]-10","SB-F991-[13]-10", "SB-F991-[13]-30")) 
boxplot(soil$rb.gl.10.830.16, soil$rb.gl.30.830.16, soil$sb.gl.10.834.11, soil$sb.gl.30.834.11, soil$rb.gl.10.843.17, soil$rb.gl.30.843.17, soil$sb.gl.10.864.12, soil$sb.gl.30.864.12, soil$sb.gl.30.989.10, soil$rb.f.10.844.18, soil$rb.f.30.844.18, soil$sbb.f.10.864.14, soil$sb.f.10.991.13, soil$sb.f.30.991.13, yaxt="n", col=c("darkolivegreen1","darkolivegreen4","darkolivegreen1","darkolivegreen4","darkolivegreen1","darkolivegreen4","darkolivegreen1","darkolivegreen4","darkolivegreen1","burlywood2","burlywood4","burlywood2","burlywood2", "burlywood4")) 
axis(1, labels = TRUE) 
axis(2, c(0, 8, c(1, 2, 3, 4, 5,6,7)), las=1) 
text(labels, par("usr")[3] - 0.25, srt = 45, adj = 1, labels = labels, xpd = TRUE) 
mtext(2, text="Soil Temperature [°C]", line=2.2) 
mtext(1, text="Location", line=4.5) 
dev.off() 

答えて

10

text表現次の代替:

par(mar=c(6, 4.1, 4.1, 2.1)) 

labels <- paste(c("RB-GL830-[16]-10", 
        "RB-GL830-[16]-30", 
        "SB-GL834-[11]-10", 
        "SB-GL834-[11]-30", 
        "RB-GL843-[17]-10", 
        "RB-GL843-[17]-30")) 

boxplot(count ~ spray, data = InsectSprays, 
     col = "lightgray", xaxt = "n", xlab = "") 

# x axis with ticks but without labels 
axis(1, labels = FALSE) 

# Plot x labs at default x position 
text(x = seq_along(labels), y = par("usr")[3] - 1, srt = 45, adj = 1, 
    labels = labels, xpd = TRUE) 

なぜラベル位置についてx = seq_along(labels)を使うのか? xtextは、ラベルを配置する座標のベクトルです。 ?boxplotを見ると、at引数は "ボックスプロットを描画する位置を与える数値ベクトル[...]で、デフォルトは1:n(nはボックスの数)です。 boxplotコールでat引数を指定していないため、デフォルトの「1:nポジション」が使用されます。ボックスの数はもちろん、@ Josh O'Brienが答えに使った説明変数のレベル数です。代わりの方法を示すために、カスタマイズしたラベルベクターを使用しました(もちろん、因子レベルの数と同じ長さでなければなりません)。 seq_alongは、引数の1からlengthまでの規則的なシーケンスを生成します。これは、「1:nへのデフォルト」atの位置に対応します。

サイドノート:あなたのデータは「ワイド」形式であるようです。 Rの多くの場合、データを「長い」形式にする方が便利です。 plot関数では、xの単一レベルごとにデータを指定する代わりに、x変数(例:location)とy変数(土壌温度など)を指定するだけで済みます。 enter image description here

+0

ありがとうございましたHenrik!完璧に働いた – samjam

+0

@サムダムを聞いて偉大な!私の更新された答えのあなたのデータのフォーマットに関する私の小さなサイドノートを見てください。 – Henrik

2

plotrixパッケージのstaxlab機能を見ると、これは(そして代替)かなり簡潔になります。

+0

@Henrik、私は私の答えがOPの "主な問題"に対処すると信じていますが、主な問題はラベルのx座標を指定する方法の特定の問題と同じです(私は答えは扱わない)。このようなフォーラムの美しさは、複数の回答が主題だけでなく、OPや将来の調査者にとって興味深い他の関連する質問にも対処できるということです。私はまた、私の時計を見ず、「あなたが何時になったか知っていますか?」と尋ねると「はい」と言います。 –

関連する問題