web-dev-qa-db-ja.com

expression()の改行?

Rには次のヒストグラムがあります。

hist(alpha,cex.main=2,cex.axis=1.2,cex.lab=1.2,
main=expression(paste("Histogram of ",hat(mu), ", Bootstrap samples, Allianz")))

タイトルが長すぎるため、改行が必要です。これによると thread 試した

hist(alpha,cex.main=2,cex.axis=1.2,cex.lab=1.2,
main=expression(paste("Histogram of ",hat(mu), ",cat("\n") Bootstrap samples, Allianz")))

または

hist(alpha,cex.main=2,cex.axis=1.2,cex.lab=1.2,
main=expression(paste("Histogram of ",hat(mu), cat("\n"),", Bootstrap samples, Allianz")))

しかし、両方とも機能しません。paste()で改行を取得するにはどうすればよいですか?

38
Jen Bohold

通常のpasteで改行を簡単に使用できますが、これはplotmath paste(実際には「sep」引数のない別の関数)と(long)?plotmathページでは、実行できないことが具体的に示されています。それでは、回避策は何ですか? plotmath関数atopを使用することは、1つの簡単なオプションです。

expression(atop("Histogram of "*hat(mu), Bootstrap~samples*','~Allianz))

これはコンマで中断し、plotmath式を中央に配置します。より複雑なオプションが利用可能です。

これは、グラフィックファイルへのプロットを示しています。皮肉なことに、最初の取り組みにより、「ハット」(これらの曲折曲がり角)がカットされるという問題を抱えていたディスプレイが表示されました。これは、マージンを増やす方法を示しています。上のマージンはおそらく3番目の数字なので、c(3,3,8,0)がより適しているかもしれません。

 pdf("test.pdf") ;  par(mar=c(10,10,10,10))
 hist(1:10,cex.main=2,cex.axis=1.2,cex.lab=1.2,
 main=expression(atop("Histogram of "*hat(mu), 
                       Bootstrap~samples * ',' ~Allianz)))
 dev.off() # don't need to restore;  this 'par' only applies to pdf()
38
42-

他の何かを使用する必要があります。 同様の問題 で立ち往生したときに、mtextbquoteを使用するように指示されました。

alpha = rnorm(1e3)
hist(alpha,cex.main=2,cex.axis=1.2,cex.lab=1.2,main=NULL )

title <- list( bquote( paste( "Histogram of " , hat(mu) ) ) ,
               bquote( paste( "Bootstrap samples, Allianz" ) ) )


mtext(do.call(expression, title ),side=3, line = c(1,-1) , cex = 2 )

上記の例では、title@ hadleyのおかげ)は、

title <- as.list(expression(paste("Histogram of " , hat(mu)), "Bootstrap samples, Allianz"))

enter image description here

19
Simon O'Hanlon