2013-10-18 72 views
3

在使用cloud下面的代碼產生具有刻度標記的曲線如預期:ř晶格3D圖:蜱消失改變面板邊框厚度

require(lattice) 
cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris, 
scales = list(arrows=F)) 

當面板邊框厚度的par.setting參數中使用axis.line改變,邊框厚度得到改變,但刻度線消失,tck參數是否被調用內scales

cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris, 
scales = list(arrows=F, tck=1), 
par.settings = list(
axis.line = list(lwd = 0.5))) 

這似乎發生無線其他3d功能,如wireframe。有沒有我忽略的東西,我該如何解決這個問題?非常感謝您的幫助。

回答

2

我認爲這是代碼中的錯誤。如果更改距離參數,使刻度線長,然後又設法使蜱較厚,會導致不同的線路類型,而不是較厚的蜱:

cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris, 
     scales = list(arrows=F, distance=c(2), draw = TRUE), 
     par.settings = list(axis.line = list(lwd = 3)) # Dashed lines instead of thicker 
     ) 

所以似乎有一些「串擾」上這個par-channels。此外,如果您使用lty參數,你在蜱寬度所需的更改:

cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris, 
     scales = list(arrows=F, distance=c(2), draw = TRUE), 
     par.settings = list(axis.line = list(lty = 0.5)) # Success 
    ) 

我猜這也影響了線框功能,因爲他們在自己的核心非常相似,只是用不同的面板功能。 (這是Mac上運行的R 2.15.3和格點0.20-15以及R 3.0.2 /格點0.20-24。)

+0

優秀的答案。 –

+0

我將向Deepayan Sarkar發送一個錯誤報告。 –

2

蜱似乎消失的原因是因爲格子的厚度基於axis.line參數。

cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris, 
     scales = list(arrows=F, tck=c(3), draw = TRUE), 
     par.settings = list(axis.line = list(lwd = 0.5)) 
    ) 

在上面的例子中,我改變了TCK參數3,但保留您的LWD參數爲0.5,可以看到R已經推出的刻度標記 - 所以他們仍然被渲染,但隱形。

現在,如果你運行:

cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris, 
     scales = list(arrows=F, tck=c(3), draw = TRUE), 
     par.settings = list(axis.line = list(lwd = 2)) 
    ) 

你看到蜱仍然存在,但在比來axis.line參數都被吸收,所以真的 - 下一個問題是:什麼是你真的試圖通過傳遞axis.line = list(lwd = 0.5)來完成?

+0

非常感謝您的回覆。我傳遞axis.line = list(lwd = 0.5)的理由是讓圖形看起來更漂亮。原來的問題依然存在。 –

+0

關於進一步思考,並且涉及到我們的兩個問題,可以通過傳遞'axis.line = list(col ='transparent')'來完成刪除標記,它將完全刪除面板邊界,並傳遞'col ='在'scales'參數內(它不能與'axis.line = list(lwd = 0.5)'一起工作來重新建立刻度標記)。我認爲,即使在多個面板的情況下,它看起來更好(沒有額外的面板邊界,更像是提交給期刊的內容)。再次感謝討論。 –