質問

約 50 年をカバーする yearqtr インデックスを持つ Zoo オブジェクトがあります。プロットすると、X 軸には 10 年ごとのラベルが表示されますが、これは少し不毛に感じられます。

b=zoo(1:200,as.yearqtr(1900+seq(1,200)/4))
plot(b)

ある研究で次のことがわかりました。

plot(b,xaxt="n");axis(1,time(b))

これは、X 軸が目盛りでぼやけていて、醜い分数ラベルが付いているため、一方の極端からもう一方の極端に揺れているように感じられます。年だけを表示する簡単な方法はありますか?(私が最初に探していたのは、次のような言い方でした:「X軸のラベル間隔を少し狭くしてください」とありますが、そのようなものはないようですか?cex.axis はフォント サイズを変更するだけです。)

役に立ちましたか?

解決

help(axis)を読みましたか?

ここにある方法は、4分の4毎に単純な索引を作成するだけです。

R> ind <- seq(1, length(b), by=4)
.

とそれを使用して軸配置ラベル

R> plot(b,xaxt="n")
R> axis(1,time(b)[ind], format(time(b)[ind]), las=2, cex.axis=0.5)
.

Enter Enter Image説明

las=2を使用して、これを適合させるために低いcex値を使用しました。毎年1回、それでもたくさんあまりにもたくさんあるかもしれません。

コンピューティング「良い」軸ラベルは本当に硬いです。

他のヒント

これはおそらく、データをより適切に表示するために目盛りではなくグリッドを使用したい場合の (まれな) 状況の 1 つです。@dirk-eddelbuettel が指摘したように、特にこのような密度では、適切な軸ラベルを調整するのは困難です。また、ラベルをプロット内に配置して、グリッドがラベルの密度をわずかに隠すこともできます。最も簡単にグリッドを取得できるのは、 abline, ggplot2 で遊びたい場合は別ですが、R の標準プロットよりも醜いです (個人的な意見)。また、プロットを広くします。実際、プロットの周りのボックスも取り除く方が良いです ;) 以下は Dirk のアプローチの mod です。

png("strangeplot.png",width=800)
#extend y-axis to fit inside labels and remove box
plot(b,type="n",xaxt="n",yaxt="n",ylab="",xlab="",ylim=c(min(b)-30,max(b)),bty="n"))
#use 'mpg' to get labels inside
axis(1,time(b)[ind], format(time(b)[ind]), las=2, cex.axis=0.6,tick=F,mgp=c(0,-2.5,0))
axis(2,tick=F,las=1)
#you locate lines slightly to the left of label...
abline(h=seq(0,200,by=50),v=time(b)[ind]-0.5,col=gray(0.9))
#...so you need to add extra single line in the end 
abline(v=max(time(b)[ind])+0.5,col=gray(0.9))
#plot at the end to get it above grid
points(b,type="l")
dev.off() 

enter image description here

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top