2009-09-08 10 views
5

x軸ラベルを2行に分割しようとしています。私はラベルを45度回転させたいと思います。これどうやってするの?ベースラベルの軸ラベルを2行に分割することはできますか?

私がこれまで持っているもの:

N <- 10 
dnow <- data.frame(x=1:N, y=runif(N), labels=paste("This is observation ",1:N)) 
with(dnow, plot(x,y, xaxt="n", xlab="")) 
atn <- seq(1,N,3) 
axis(1, at=atn, labels=labels[atn]) 
+0

あなたは2行を何を意味するのですか?あなたは「これは\ n観測です...」と言いたいのですか? –

+0

@chis_duboisそれは答えの最初の部分です!ありがとう! –

答えて

12

はここggplot2パッケージで一つの可能​​性です。

N <- 10 
labs <- factor(1:N,labels=paste("This is \n observation",1:N)) 
dnow <- data.frame(x=1:N, y=runif(N), labels=labs) 
qplot(labels,y,data=dnow) + 
     opts(axis.text.x=theme_text(angle=-45,hjust=0)) 

alt text http://i28.tinypic.com/k024p3.png

私も、ベースパッケージの例を見るのが楽しみです!

+0

@chris - あなたの質問を受け入れたいと思います(最近、クールな子供たちがggplot2を使用しています)。しかし、手前でx軸を修正できますか(ggplotは文字ベクトルをアルファベット順に並べ替えるので、それを因子に変換する必要があります)。ありがとう! –

+0

良い提案。私はそれを要因に切り替えましたが、右側はまだ切り離されています。私はそれを試して修正します。 –

+0

これはデータラベルのためにも機能します。\ nをそれらにドロップすると、行が折れます! – Andrew

4

これは私がベースのグラフィックスを使用して(私のggplot2日前)まで調理するものである:

## data 
N <- 10 
dnow <- data.frame(x=1:N, y=runif(N), labels=paste("This is \nobservation ",1:N)) 
## make margins wide 
par(mfrow=c(1,1), mar=c(10,10,6,4)) 
## plot without axix labels or ticks 
with(dnow, plot(x,y, xaxt="n", xlab="")) 
## the positions we ant to plot 
atn <- seq(1,N,3) 
## the label for these positions 
lab <- dnow$labels[atn] 
## plot the axis, but do not plot labels 
axis(1, at=atn, labels=FALSE) 
## plot labels 
text(atn, ## x position 
    par("usr")[3]-.05, ## position of the low axis 
    srt=45, ## angle 
    labels=lab, ##labels 
    xpd=TRUE, ## allows plotting outside the region 
    pos=2) 
## par("usr")[3] 
+0

私はこれも重要な貢献だと思います。おそらく 'ggplot2'ではこれは必須ではありません。しかし、それはあまりにも良いです。 Paul Murrel著のR Graphicsの書籍には、「グリッド」を使った、より洗練された洗練されたソリューションもあります。 – Sam

関連する問題