2014-09-22 32 views
0

我有動態地構建線圖的功能,因此,需要解決我用公式問題,而不是手動設置範圍。 (注意專家:我已經爲自己&其他人寫了這個邏輯進程 - 道歉,這意味着更多的文字;我覺得R的幫助是特別分散和無助於繪圖,所以希望這可以幫助其他人)。R:設置的軸蜱&範圍包括所有點瓦特/漂亮打破

我生成的線圖的座標軸有正確的刻度間距數(默認,假設是'漂亮中斷'?),但軸範圍不包含整個數據範圍 - 有些是外。 (你可以忽略地毯情節十分位數軸線上方,但第一&最後的顯示數據範圍)

x axis length

那麼想我是x軸的寬度,以涵蓋所有數據,但保留美麗的休息時間,即將最小/最大滴答點分散到很好的值,或超過極端值......理想情況下,沒有太多工作!我的意思並不是懶惰,但它感覺像是一種常見的願望。我在讀有關at,包括pretty和,也xaxtxaxsxpd

plotxaxs控制實際數據線在圖中所佔的寬度,「i」將其擴展到邊距,「r」(或默認)將其稍微擠壓一點。這是很酷的知道,但可以說不是人們所期望的'軸'。 (這裏設置爲「r」/默認)

xaxt的幫助讓我們知道它是用來關閉軸繪圖的功能,但沒有說明它做了什麼/它們是什麼類型的。

axis,at控制軸線長度,默認爲,默認爲xaxp。在它面前,xaxp是我想要的,允許一個指定c(x1, x2, n),但是默認x1 & x2是數據範圍之內,而不是圍繞它。

axis求助說:

「的軸線從最低的at最高值繪製的,但在情節區域被夾在默認情況下,只蜱這是從點積內繪製。區域(最多爲舍入誤差容限)繪製,但蜱及其標籤可積區外以及延長。使用xpd = TRUExpd = NA允許軸,以進一步擴展」

無論xpd = TRUE也不xpd = NA似乎改變什麼。 XPD求助說:

「如果FALSE,所有繪製剪裁到情節區域,如果是真的,所有的繪製剪裁到人物區域,如果不適用,所有的繪製剪裁到設備區」

axis幫助說xpd控制軸擴展,xpd幫說xpd控制繪圖裁減。

xaxp幫助表示

「的純的R執行本見axTicks()」「計算漂亮的對勾標記的位置,以同樣的方式爲R確實在內部」,並默認爲相關方的at值,即par("xaxp")

pretty似乎scarily複雜,並且很可能是什麼R在內部使用時,應用到at計算默認的刻度標記的間隔;能夠編輯這個參數並沒有其他任何東西,也就是說,根據繪圖區域大小指定期望的間隔數量,但是我很樂意留下這個意思,如果這意味着花費一天的時間反編譯,理解,然後手動重新編譯pretty!我也不知道n是否與nxaxp中有相同的作用,如果是這樣的話,它會優先考慮。

所以,R的幫助似乎用「軸」是指兩軸(xaxtaxis)和繪圖(xaxsxpd),沒有跡象顯示該參數是否受到parplotaxis控制,或可以控制通過它們中的任何一個的組合(像往常一樣)。在試圖找到負責的元素,axisat其中說其中說xaxp其中說它說at(=循環)。

作爲一個次要的,更廣泛的元問題:我是否在嘗試找出繪製問題的答案方面做了些錯誤?我閱讀和閱讀的幫助是經常缺乏,混淆,矛盾,並通常導致直覺黑洞是否應該控制par,plotaxis。先謝謝你們。對不起,這很長,我真的認爲這將是一個超級簡單的選擇。

最小的可重複的例子:

png(filename="A.png", width=4*480, height=4*480, units="px", pointsize=80, bg="white", res=NA, family="", type="cairo-png") 
par(mar=c(1.32,2,0.4,0.5), fig=c(0,1,0,1), las=1, lwd=8, bty="n", mgp=c(2,0.5,0), xpd=NA) 
    plot(ChickWeight[,1:2],type="l",xaxs="i",yaxs="i") 
dev.off() 
+2

我沒有花時間閱讀所有內容,但'scales :: extended_breaks()'應該在這裏幫助。 – baptiste 2014-09-22 10:56:09

+0

謝謝。我不假設你知道是否有任何關於何處以及如何使用的信息?即par/plot/axis?我嘗試在plot中添加「extended_breaks(n = 7)」,但是得到:「title(...)中的錯誤:不能強制類型'closure'輸入'character'類型的vector。謝謝。 – 2014-09-22 12:26:18

+0

如果你發佈了一個最小可重現的例子,有人可能會告訴你 – baptiste 2014-09-22 13:33:00

回答

1

的想法是自己繪製座標軸,不讓陰謀使用默認的。這裏有一個似乎工作的例子,

xx <- labeling::extended(min(ChickWeight[,1]), max(ChickWeight[,1]), 
         3, only.loose=TRUE) 
yy <- labeling::extended(min(ChickWeight[,2]), max(ChickWeight[,2]), 
         3, only.loose=TRUE) 
plot(range(xx),range(yy), t="n", xaxt="n", yaxt="n") 
points(ChickWeight[,1:2],type="p") 
axis(1, at = xx) 
axis(2, at = yy) 
+0

有趣的,好爽謝謝,我會有一個發揮與此。似乎很奇怪,R的幫助對於標籤包來說太少了,尤其是考慮到它與R的標準繪圖設置相比的不直觀應用(儘管他們說要閱讀他們的論文) – 2014-09-22 15:10:24