イントロ
格子プロットの要素のサイズをスケーリングする方法はいくつかあります。1つのオプションは、属性をとるすべてのパラメーターを変更することです。もう1つのオプションは、すべてが描画されるcex
ベースを変更することです。fontsize
必要な解決策は、すぐにわかるように後者ですが、par.settings
設定時に個々のコンポーネントに適用される相対的なスケーリングを調整したい場合があるため、引数を介してプロットの個々のコンポーネントに影響を与える方法を確認することも有益です。 fontsize
。
tl:dr
@Andrie'sAnswerのプロット例を使用
require(lattice)
plt <- xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos,
type = "a",
auto.key = list(space = "right", points = FALSE, lines = TRUE))
パラメータ、コンポーネントとfontsize
のリストを設定します。これらは、他のすべてのプロット家具が生成されるこれら2つの主要なプロット要素の基本サイズを定義します。text
points
update(plt, par.settings = list(fontsize = list(text = 8, points = 4)))
(150px x 200px PNGラスターデバイスでレンダリングされたもの)。
cex
プロット家具の特定のアイテムに個別のパラメータを設定する
注意すべき点の1つは、格子プロットの外観が、によって返されるパラメータのストリーム全体によって制御されることです。trellis.par.get()
> thm <- trellis.par.get()
> str(thm, max = 1)
List of 35
$ grid.pars : list()
$ fontsize :List of 2
$ background :List of 2
$ panel.background :List of 1
$ clip :List of 2
$ add.line :List of 4
$ add.text :List of 5
$ plot.polygon :List of 5
$ box.dot :List of 5
$ box.rectangle :List of 5
$ box.umbrella :List of 4
$ dot.line :List of 4
$ dot.symbol :List of 5
$ plot.line :List of 4
$ plot.symbol :List of 6
$ reference.line :List of 4
$ strip.background :List of 2
$ strip.shingle :List of 2
$ strip.border :List of 4
$ superpose.line :List of 4
$ superpose.symbol :List of 6
$ superpose.polygon:List of 5
$ regions :List of 2
$ shade.colors :List of 2
$ axis.line :List of 4
$ axis.text :List of 5
$ axis.components :List of 4
$ layout.heights :List of 19
$ layout.widths :List of 15
$ box.3d :List of 4
$ par.xlab.text :List of 5
$ par.ylab.text :List of 5
$ par.zlab.text :List of 5
$ par.main.text :List of 5
$ par.sub.text :List of 5
その多くは、描画されるオブジェクトのサイズと注釈で使用されるテキストに影響します。適切な設定をすべて変更し、それらのみをリストとしてに渡す必要がありますpar.settings()
。@Andrieのプロット例をスケーリングする例を次に示します。
CEX <- 0.5
pset <- list(superpose.symbol = list(cex = CEX),
plot.symbol = list(cex = CEX),
par.sub.text = list(cex = CEX),
par.main.text = list(cex = CEX),
par.zlab.text = list(cex = CEX),
par.ylab.text = list(cex = CEX),
par.xlab.text = list(cex = CEX),
dot.symbol = list(cex = CEX),
box.dot = list(cex = CEX),
add.text = list(cex = CEX),
axis.text = list(cex = CEX))
plt2 <- update(plt, par.settings = pset)
gridExtraパッケージを使用して、同じデバイス上に2つの格子プロットを配置すると、次のすべての効果を確認できます。
require("gridExtra") ## loads package:grid too
grid.arrange(plt, plt2, ncol = 2)
その結果
これで、(ほぼ)すべてがスケーリングされました。注意すべき興味深い点の1つは、このアプローチでは、凡例の線の長さも目盛りの長さもスケーリングされていないことです。プロットのサイズに注意してください。各サブプロットの面積は同じでした。ただし、全体をはるかに小さいサイズでプロットできます。
これは合理的であり、ここで説明するために使用しなければならなかっpdf()
たラスターよりも、ベクターベースのデバイス(たとえば)でレンダリングされた方が見栄えがします。png()
2番目のプロットは、150pxx200pxのデバイス上にあります。
fontsize
全体的なスケーリングを制御するためのベースの設定
fontsize
より簡単な方法があります。それは、パラメータを介してテキストとポイントの基本フォントサイズを設定することです。デフォルトは次のとおりです。
> trellis.par.get("fontsize")
$text
[1] 12
$points
[1] 8
これらはプロット上のすべてに影響するため、これらを縮小して、他のすべての設定を設定するのと同様の効果を実現できます。
update(plt, par.settings = list(fontsize = list(text = 8, points = 4)))
を生成します
png()
これは、前の図2と同じサイズのデバイスにプロットされています。プロットがより適切にスケーリングされるように、マージンがどのように調整されているかに注目してください。したがって、以前に変更したすべての設定に影響を与えただけでなく、設定からキューを取得するプロットの他のビット(間隔や目盛りなど)にも影響を与えましたfontsize
。繰り返しますが、これらをベクトルデバイスにプロットすると、より良い出力が得られます。