プロットの下に凡例を含むggplot2プロットを作成しようとしています。
Ggplot2の本はp 112で、「凡例の位置と位置調整は、legend.positionのテーマ設定によって制御され、値は、右、左、上、下、なし(凡例なし)、または数値位置にすることができます。
次のコードは動作します(「右」がデフォルトであるため)。また、凡例位置として「なし」でも動作しますが、「左」、「上」、「下」はすべて「grid.Callのエラー」で失敗します.graphics( "L_setviewport"、pvp、TRUE):ビューポートの非有限の位置および/またはサイズ "
library(ggplot2)
(myDat <- data.frame(cbind(VarX=10:1, VarY=runif(10)),
Descrip=sample(LETTERS[1:3], 10, replace=TRUE)))
qplot(VarX,VarY, data=myDat, shape=Descrip) +
opts(legend.position="right")
私は何を間違えていますか?伝説を再配置することは信じられないほど一般的でなければならないので、私はそれが私だと考えています。
バージョン> 0.9.3(opts
が非推奨の場合)
_theme(legend.position = "bottom")
_
旧バージョン:
残念ながら、これはggplot2のバグであり、この夏に修正することを本当に望んでいます。
更新:
opts(legend.position = "left")
に関連するバグは、最新バージョンのggplot2を使用して修正されました。さらに、バージョン0.9.0では_guide_legend
_および_guide_colorbar
_が導入され、凡例内のアイテムの外観と配置をより細かく制御できるようになりました。たとえば、この機能は、凡例項目の行と列の数を指定します。
私がここにいる間に、これらの答えをほんの少し更新します。ハドリーが述べたように、theme(legend.position = "bottom")
を使用して凡例を下に移動できます。
または、手動で移動しますtheme(legend.position = c(.2,.85))
凡例を水平にしたい場合は、theme(legend.position = c(.2,.85), legend.direction = "horizontal")
を使用します
凡例を手動でいつでも配置できますが、ラベルはまだ積み重ねられている/垂直であるため、見た目がくなります。 hadleyがこれを修正する時間を見つけることを本当に願っています:-)
p <- qplot(VarX,VarY, data=myDat, shape=Descrip) +
opts(legend.position=c(.5,0.9),plot.margin = unit(c(6,0,0,0), "lines"))
_ggplot2
_の新しいバージョンでは、+ theme(legend.position='bottom')
を使用できます。
_qplot(VarX,VarY, data=myDat, shape=Descrip) +
theme(legend.position='bottom')
_
Rのクックブック-凡例 を参照してください。
コメントへの応答として、theme_update()
はggplotの途中で呼び出された場合は起動しません(+ theme_update()
のように、それ以降のみ。また、アクティブなテーマを変更するだけではなく、特定のプロットです。これを行うことができます。
_theme_update(legend.position='bottom')
qplot(VarX,VarY, data=myDat, shape=Descrip)
_
上記の結果で、違いは、後続のプロットもデフォルトで下部の凡例になることです。