4

私は、約50年をカバーするyearqtrインデックスを持つ動物園オブジェクトを持っています。プロットすると、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はフォントサイズを変更するだけです。)

4

2 に答える 2

4

読みましたhelp(axis)か?

これが1つの方法で、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)

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

私はこれを適合させるためにlas=2、より低い値を使用しました。cex年に一度はまだ多すぎるかもしれません。

「良い」軸ラベルを計算するのは本当に難しいです。

于 2012-01-23T04:17:00.943 に答える
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() 

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

于 2012-01-23T23:29:44.360 に答える