簡體   English   中英

R晶格3d圖:更改面板邊框厚度時,刻度線消失

[英]R lattice 3d plot: ticks disappear when changing panel border thickness

以下使用cloud代碼生成帶有刻度標記的圖表:

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

當使用axis.line參數中的par.setting更改面板邊框粗細時,邊框粗細會發生變化,但是刻度標記會消失,無論是否在scales內調用tck參數:

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 有沒有我忽略的東西,我怎么能解決這個問題? 非常感謝您的幫助。

蜱似乎消失的原因是因為晶格基於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)來完成什么?

我認為這是代碼中的一個錯誤。 如果更改距離參數以使標記更長,然后還嘗試使標記更粗,則會導致不同的線型而不是更粗的標記:

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。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM