2016-07-24 25 views
0

我相信這對於R社區來說並不是新鮮事物,但對我來說並不陌生,並且找不到明確的答案。 假設這個例子:R:使用具有通用X-Y繪圖函數的釐米單位定位圖形元素

plot(1:10, xlab="", xaxt="n") # supress OX axis 
title(xlab="How can I use cm?", line=2.5) 
axis(side=1, at=1:10, line=0.2) 

enter image description here

在這裏,我使用功能title()line參數放置標籤在2,5行文字「向外從圖中邊緣」(如在?title描述幫幫我)。有沒有可以採取釐米或任何方式來使用cm的論據?另外,如何找出一行文字包含多少釐米(如果沒有其他方法)?

也將是巨大的知道/在釐米設置頁邊距,而不是隻喜歡par("mar") [文本行]或par("mai") [英寸]。有沒有辦法做到這一點?

+0

這些東西完全取決於設備的大小。請看看'?grconvertx'和[這個問題](http://stackoverflow.com/q/30765866/1623354)。你不能明確地釐米,但你可以很容易地從英寸轉換。 – dayne

+0

至於設置邊距,只需將釐米轉換爲英寸並使用'mai'就像您引用的那樣。 – dayne

回答

1

this answer使用line2user功能,您可以釐米轉換爲「線」,然後使用xpd = TRUE行轉換爲用戶座標和添加的東西的情節:

cm2line <- function(x) { 
    lh <- par('cin')[2] * par('cex') * par('lheight') 
    inch <- x/2.54 
    inch/lh 
} 

par(mai = rep(5/2.54, 4)) 
plot.new() 
box() 
mtext("hello", side = 3, line = cm2line(2)) 
abline(h = line2user(cm2line(1:5), side = 4), xpd = TRUE) 
abline(h = line2user(cm2line(1:5), side = 1), xpd = TRUE) 
abline(v = line2user(cm2line(1:5), side = 2), xpd = TRUE) 
abline(v = line2user(cm2line(1:5), side = 3), xpd = TRUE) 

enter image description here

+0

任何想法如何實現'mgp'參數類似的東西?例如,在定位像axis這樣的軸(side = 1,at = 1:10,line = cm2line(1),mgp = c(0,0,0))'。似乎即使我將'mgp'設置爲零,數字的頂部也不會觸及軸線。似乎'mgp'在'mex'單元中,它是'csi'('csi' ='par(「cin」)[2]')的倍數。這一切似乎讓我感到困惑,所以任何幫助,將不勝感激。 – Valentin

+0

您可能需要提出另一個問題。我不確定你是什麼意思。是否有任何理由需要釐米在特定位置間隔的東西? – dayne

+0

嗨@dayne,我實際上需要設置沒有刻度的軸('tick = FALSE'),然後調整軸標籤和軸線之間保留的「空間」。似乎我可以像前面提到的那樣用'mgp'參數來調整這個空間。我需要了解的是,如何在cm中將'mpg'的mex'單元轉換爲(有意義嗎?) – Valentin