2

特定の目的のためにプロット関数を作成し、左マージンに y ラベルを付けたいと思います。ただし、これらのラベルの長さは劇的に異なる可能性があり、ユーザーが思い付くモデル用語によって異なります。このため、最も長いラベルの幅を測定し、それに応じて左余白の幅を設定したいと思います。関数は見つかりましたが、出力単位を引数strwidthの単位に変換する方法がわかりません。mar例:

label <- paste(letters, collapse = " ")  # create a long label
par(mar = c(5, 17, 4, 2) + 0.1)  # 17 is the left margin width
plot(1:2, axes = FALSE, type = "n")  # stupid plot example

# if we now draw the axis label, 17 seems to be a good value:
axis(side = 2, at = 1, labels = label, las = 2, tck = 0, lty = 0)

# however, strwidth returns 0.59, which is much less...
lab.width <- strwidth(label)  # so how can I convert the units?
4

1 に答える 1

4

距離をインチ単位で指定する代わりに (「線」ではなく) をmai使用できます。mar

par(mai = c(1, strwidth(label, units="inches")+.25, .8, .2))
plot(1:2, axes=FALSE)
axis(side = 2, at = 1, labels = label, las = 2, tck = 0, lty = 0)

で割ることmarにより、ラインとインチの間の変換係数を計算できmaiます。

inches_to_lines <- ( par("mar") / par("mai") )[1]  # 5
lab.width <- strwidth(label, units="inches") * inches_to_lines
par(mar = c(5, 1 + lab.width, 4, 2) + 0.1) 
plot(1:2, axes=FALSE)
axis(side = 2, at = 1, labels = label, las = 2, tck = 0, lty = 0)
于 2013-08-04T09:07:05.707 に答える