xyplot
軸スケールの目盛りを維持したまま、の周りのボックスを削除するにはどうすればよいですか?エドワードタフテのミニマリストデータグラフィック美学の精神では、これらの軸線は「非データインク」であり、「消去」することができます(すべきですか?)。
library(lattice)
my.df <- data.frame(x=-10:10)
my.df$y <- my.df$x^2
xyplot(y~x,data=my.df)
トレリス表示パラメータ(例axis.line$col
)は、軸線と軸目盛りの両方を一緒に制御しているようです。
xyplot(y~x,data=my.df,
par.settings=list(axis.line=list(col="transparent")))
...これは望ましい結果ではないため、ボックスを離れるときに行をオフにする簡単な方法があるようには見えません。
私が思いついた最高のものは、ブルートフォースハックです。ここでは、次を使用して手作業で目盛りを作成しpanel.segments
ます。
at.x=pretty(c(-10,10))
at.y=pretty(c(0,100))
xyplot(y~x,data=my.df,
par.settings=list(axis.line=list(col="transparent")),
scales=list(x=list(at=at.x,labels=at.x),
y=list(at=at.y,labels=at.y)),
panel=function(...){
panel.xyplot(...)
panel.segments(x0=at.x,x1=at.x,y0=-4,y1=-2)
panel.segments(x0=-11.5,x1=-11,y0=at.y,y1=at.y)
}
)
これは望ましい結果に近いですが、目盛りを適切な長さにし、データポイントから「適切な」距離をオフセットするには、かなりの手間がかかります。これらの値は、あるグラフィックから次のグラフィックに変換されません。さらに、軸ラベルが目盛りから離れすぎて埋め込まれていることに注意してください。そのパディングを減らす方法があると確信していますが、それではコードがさらに醜くなり、移植性が低下するだけです。
では、目盛りと軸ラベルをそのままにして、プロット領域の周りの「ボックス」を構成する線だけを抑制するにはどうすればよいでしょうか。このアプローチを使用して、すべてではなく一部の線を抑制することができる場合のボーナスポイント(たとえば、左と下の線を残し、上と右の線を抑制する)。