我該如何去除圍繞xyplot
的方框,同時保持座標軸刻度標記?本着Edward Tufte極簡主義數據圖形美學的精神,這些軸線是「非數據墨水」,可以(應該)被「擦除」。在R格xyplot上分別控制座標軸和座標軸線
library(lattice)
my.df <- data.frame(x=-10:10)
my.df$y <- my.df$x^2
xyplot(y~x,data=my.df)
似乎網格顯示參數(例如axis.line$col
)同時控制軸線和軸一起蜱:
xyplot(y~x,data=my.df,
par.settings=list(axis.line=list(col="transparent")))
...這是不是所需的結果,所以看起來不像有一種簡單的方法可以在離開盒子時關閉線條。
我已經能夠拿出最好的是蠻力砍,我在那裏用panel.segments
建立手工刻度線:
at.x=pretty(c(-10,10))
at.y=pretty(c(0,100))
xyplot(y~x,data=my.df,
par.settings=list(axis.line=list(col="transparent")),
scales=list(x=list(at=at.x,labels=at.x),
y=list(at=at.y,labels=at.y)),
panel=function(...){
panel.xyplot(...)
panel.segments(x0=at.x,x1=at.x,y0=-4,y1=-2)
panel.segments(x0=-11.5,x1=-11,y0=at.y,y1=at.y)
}
)
這是接近期望的結果,但是需要相當多的小竅門才能使刻度線成爲合理的長度並且抵消與數據點「良好」的距離。這些值不會從一個圖形轉換到另一個圖形。另外請注意,軸標籤現在被填充得離刻度線太遠。我確信有一種方法可以減少這種填充,但這隻會使代碼變得更加醜陋,不便於攜帶。
那麼怎樣才能抑制構成繪圖區周圍「盒子」的線條,同時保留刻度標記和軸標籤?獎勵點數,如果這種方法也可以用來抑制一些線條,但不是全部線條(例如離開左邊和下邊線,但是抑制頂線和右邊線)。
這看起來不錯。你介意提供一下關於軸功能的每一行是什麼以及你爲什麼這樣做的一些評論?我發現低級軸功能的幫助文檔(比如'axis.default'不是很有啓發性。 – mac
@mac,結果發現有一些不必要的網格選項變化,真正的技巧似乎是提供自定義軸函數'line.col'的正式參數 – BenBarnes
Nice,FWIW,'line.col =「black」'是需要的,因爲'panel.axis()'默認從'trellis.par獲取它的線顏色。 get(「axis.line」)',你之前已經設置爲''transparent''。 –