0

現在、Rさまざまな種類の を自動生成するために使用していますboxplots

私たちが抱えている問題は、1 つのプロット内の異なるプロットとクラスの間で、ラベルの長さがかなり異なることです。

すべてのラベルがうまく収まるようにプロットを自動的に調整する方法はありますか?

mar一部のプロットではラベルが他のプロットよりかなり短いため、最悪のケースを指定することは現実的ではありません。

4

2 に答える 2

3

Lattice は、ここで役立つ可能性が最も高いグラフィックス ライブラリです。これには 2 つの理由があります。(i) ラティスはグリッド システムに基づいており、グリッドのグラフィカル プリミティブにアクセスすることで、特にパネル出力の位置をより細かく制御できます。(ii) 作業するものは他にもあります-R 標準グラフィックス パッケージには 70 の異なるパラメーターがありますが、Lattice には 371 があります-とにかく、私のカウントでは (length(names(unlist(trellis.par.get()))))ですが、これらの 371 は基本パッケージのようにフラットな構造ではなく、階層構造 (最上位に 30 ほどのパラメーター グループ) にまとめられています。

必要なのは、軸ラベルの相対的な配置です。この種のタスクでは、1 レベル下げることをお勧めします。したがって、必要なことを行うには、関連するグロブスロットを変更してから、2 つのグロブを再描画します (R インタラクティブプロンプトを使用):

library(lattice)
library(grid)
bwplot(~runif(200, 10, 99), xlab="x-axis label", ylab="y-axis label")
# move the x-axis label to the far left
grid.edit("[.]xlab$", grep=T, x=unit(0, "npc"), just="left", redraw=T)
# move it to the far right
grid.edit("[.]xlab$", grep=T, x=unit(1, "npc"), just="right", redraw=T)
# move it to the center
grid.edit("[.]xlab$", grep=T, x=unit(0.5, "npc"), just="center", redraw=T)
# same for y-axis
grid.edit("[.]ylab$", grep=T, y=unit(0.5, "npc"), just="center", redraw=T)

"[.].xlab$"、grid.edit は gPath オブジェクトを受け取ります (他のグロブを含むグロブである gTree を通過するパスのみ); 目的のオブジェクトが gPath のどこにあるのかわからなかったので (x 軸/y 軸のラベル、オブジェクトに正規表現形式を使用しました。

「grep=T」は、以前のパラメーターを正規表現として扱うように grid.edit に指示するだけです。

"x=unit(0.5, 'npc')"、ここでビューポート座標を指定します (この場合は x 値のみ); 「npc」(デフォルトの「正規化された親座標」) は、ビューポートの原点を (0,0) として扱い、それぞれ 1 単位の幅と高さを割り当てます。したがって、x 軸に沿ってビューポートの中心を指定しました。

于 2010-01-04T16:55:29.473 に答える