3

私は次のプロットを持っています

xleft<-c(1,2,3)
xright<-c(2,3,4)
ybottom<-c(1,2,3)
ytop<-c(2,3,4)

plot(c(1,4),c(1,4),type="n",main="title",xlab="site.x",ylab="ylab")
rect(xleft,ybottom,xright,ytop,col=c("blue","red","green"))

これらの位置とラベルを使用して、両方の軸にかなり長い種名を追加したいと思います

#Label position along  axes
x.label.position<-(xleft+xright)/2
y.label.position<-(ybottom+ytop)/2

#Labels
x.label<-c("Long species Name1","Long species Name2","Long species Name3")
x.label<-c("Long species Name4","Long species Name5","Long species Name5")

数値軸と軸のタイトルをそのままにしておきたいと思います。また、伝説を追加したいと思います。したがって、最終製品は次のようになります

ここに画像の説明を入力

を使用して軸を完全にクリアする必要なく、これを行う最善の方法は何ですか?

par(xaxt = "n", yaxt = "n")

テキストを追加しますか?アドバイスありがとうございます。

4

2 に答える 2

5

やり方はR FAQ 7.27「回転軸ラベルを作成するにはどうすればいいですか?」余白にスペースを空けてから、長いラベル テキストを追加することです。

 mx=12
 my=12
 par(mar = c(mx,my, 4, 2) + 0.1)
 plot(c(1,4),c(1,4),type="n",main="title",xlab="site.x",ylab="ylab")
 rect(xleft,ybottom,xright,ytop,col=c("blue","red","green"))
 text(par()$usr[1]-0.5,y.label.position,y.label,xpd=TRUE,adj=1)
 text(y=par()$usr[3]-0.5,x=x.label.position,x.label,xpd=TRUE,adj=1,srt=90)

mx文字列の長さを微調整する必要がありmy、ラベルと衝突しないようにテキストの負のオフセットを調整することもできます。xpd=TRUEFigure 領域への描画のクリップを停止するために を使用することにも注意してください。これは、凡例を適切に配置するための鍵でもあります。

 par(xpd=TRUE)
 legend(locator(1),legend=c("Species A","Species B","Species C"),
                             fill=c("blue", "red", "green"))

次に、凡例が必要な場所をクリックします-または置き換えlocator(1)ますlist(x=-0.7,y=0.6)

ggplotパッケージを使用すると、より簡単なアプローチが見つかる場合があります。

于 2012-08-25T11:21:13.647 に答える
3

@Spacedman からの回答は素晴らしいですが、更新情報を 1 つ提供したかっただけです。彼のコード (少なくとも私にとって) は、目盛りラベルの上に軸ラベルをプロットします。ラベルの配置場所を変更するには、 を確認する必要がありますpar("mfg")。次のコードは、多かれ少なかれ、あなたが望むことをしていると思います:

par(mai=c(2.5, 2.25, 0.82, 0.42), mgp=c(9, 1, 0))
plot(c(1,4), c(1,4), xaxp=c(1,4,3), yaxp=c(1,4,3), type="n", 
  main="title", xlab="site.x", ylab="ylab")
rect(xleft, ybottom, xright, ytop, col=c("blue","red","green"))
axis(1, at=x.label.position, labels=x.label, las=2)
axis(2, at=y.label.position, labels=y.label, las=2)
par(xpd=TRUE)
legend(x=0.25, y=0.75, 
  legend=c("Text", "Text", "Text"),
  fill=c("blue", "red", "green"),
  title="Legend")

次のプロットが生成されます。

ここに画像の説明を入力

@Spacedmanが示唆したように、マージンと軸に対するこれらの変更の多くは、パッケージではもう少し簡単ですggplot2(慣れれば...!)。

于 2012-08-25T11:55:55.597 に答える