Rを使用してテーブルをプロットしようとしています。テキストと同じ角度でこれらの列名を区切る行を追加したいと思います。しかし、text()
関数で指定された角度は、プロットの縦横比とは無関係ですが、segments()
関数で使用している角度は、プロットの縦横比によって異なります。ここでアスペクト比の変更にもかかわらず、角度からセグメントを描画する
は、私が何を意味するかの例です:
nRows <- 5
nColumns <- 3
theta <- 30
rowLabels <- paste('row', 1:5, sep='')
colLabels <- paste('col', 1:3, sep='')
plot.new()
par(mar=c(1,8,5,1), xpd=NA)
plot.window(xlim = c(0, nColumns), ylim = c(0, nRows), asp = 1)
text(labels = rowLabels, x=0, y=seq(from=0.5, to=nRows, by=1), pos=2)
text(labels = colLabels, x = seq(from = 0.4, to = nColumns, by = 1), y = nRows + 0.1, pos = 4, srt = theta, cex = 1.1)
segments(x0 = c(0:nColumns), x1 = c(0:nColumns), y0 = 0, y1 = nRows, lwd = 0.5)
segments(x0 = 0, x1 = nColumns, y0 = 0:nRows, y1 = 0:nRows, lwd = 0.5)
#column name separators, angle converted to radians
segments(x0 = 0:(nColumns - 1), x1 = 1:nColumns, y0 = nRows, y1 = nRows + tan(theta * pi/180), lwd = 0.5)
私はasp
を指定せずに自分の好みに合わせて、このプロットウィンドウのサイズを変更できるようにしたい場合は、角度はもはや一致しません:
nRows <- 5
nColumns <- 3
theta <- 30
rowLabels <- paste('row', 1:5, sep='')
colLabels <- paste('col', 1:3, sep='')
plot.new()
par(mar=c(1,8,5,1), xpd=NA)
plot.window(xlim = c(0, nColumns), ylim = c(0, nRows))
text(labels = rowLabels, x=0, y=seq(from=0.5, to=nRows, by=1), pos=2)
text(labels = colLabels, x = seq(from = 0.4, to = nColumns, by = 1), y = nRows + 0.1, pos = 4, srt = theta, cex = 1.1)
segments(x0 = c(0:nColumns), x1 = c(0:nColumns), y0 = 0, y1 = nRows, lwd = 0.5)
segments(x0 = 0, x1 = nColumns, y0 = 0:nRows, y1 = 0:nRows, lwd = 0.5)
#column name separators, angle converted to radians
segments(x0 = 0:(nColumns - 1), x1 = 1:nColumns, y0 = nRows, y1 = nRows + tan(theta * pi/180), lwd = 0.5)
設定した角度を指定する方法はありますか?ウィンドウのサイズを変更すると図が正しく見えるようになりますか?
は、おそらく簡単に、それは私はそれが可能だとは思わないオプション – baptiste
だ場合は(私が間違っている可能性がありますしかし、aspが動作する方法のために。 'プロットから。window_help file: "aspが有限の正の値である場合、ウィンドウは、x方向の1つのデータ単位がy方向のasp * 1データ単位と等しい長さになるように設定されます。"ラジアンは角度に依存せずにウィンドウのサイズ変更によってスケーリングされる半径に依存するため(常に一定)、asp、 'y1 = nRows + tan(theta * pi/180)'を指定します。だから、私は基底Rの解を見ないのですが、もう一度、私はそうでなければ証明されるのが大好きです! – Felix
ヘッダー行を作るとき 'asp'を選び、' x1 = 1:nColumns * asp'で長く 'theta'を指定してください – rawr