grid.xspline
位於 grid
包(package)。 說明
這些函數創建並繪製 xspline,即相對於控製點繪製的曲線。
用法
grid.xspline(...)
xsplineGrob(x = c(0, 0.5, 1, 0.5), y = c(0.5, 1, 0.5, 0),
id = NULL, id.lengths = NULL,
default.units = "npc",
shape = 0, open = TRUE, arrow = NULL, repEnds = TRUE,
name = NULL, gp = gpar(), vp = NULL)
參數
x |
指定樣條控製點x-locations的數值向量或單位對象。 |
y |
指定樣條控製點y-locations的數值向量或單位對象。 |
id |
用於將 |
id.lengths |
用於將 |
default.units |
指示 |
shape |
值介於 -1 和 1 之間的數值向量,用於控製樣條線相對於控製點的形狀。 |
open |
指示樣條線是直線還是閉合形狀的邏輯值。 |
arrow |
說明要放置在 xspline 兩端的箭頭的列表,由 |
repEnds |
一個邏輯值,指示是否應複製第一個和最後一個控製點來繪製曲線(請參閱下麵的詳細信息)。 |
name |
字符標識符。 |
gp |
類 |
vp |
網格視口對象(或 NULL)。 |
... |
要傳遞給 |
細節
這兩個函數都創建 xspline grob(說明 xspline 的圖形對象),但隻有 grid.xspline
繪製 xspline。
xspline 是相對於控製點繪製的線。對於每個控製點,直線可能穿過(插值)控製點,也可能僅接近(近似)控製點;行為由每個控製點的形狀參數確定。
如果形狀參數大於零,樣條曲線將逼近控製點(當形狀為 1 時,與三次方 B-spline 非常相似)。如果形狀參數小於零,則樣條曲線會對控製點進行插值(並且與形狀為 -1 時的 Catmull-Rom 樣條曲線非常相似)。如果形狀參數為 0,則樣條線在該控製點處形成尖角。
對於開放 x 樣條線,起點和終點控製點的形狀必須為 0(並且非零值會在不發出警告的情況下自動轉換為零)。
對於開放 x 樣條線,默認情況下,在繪製曲線之前實際上會複製起點和終點控製點。在每組四個控製點的第二個和第三個之間繪製一條曲線(插值或近似),因此此默認行為可確保生成的曲線從您指定的第一個控製點開始,到最後一個控製點結束。可以通過 repEnds
參數關閉默認行為,在這種情況下,繪製的曲線從(大約)第二個控製點開始,(大約)在第一個和倒數第二個控製點結束。
對於閉合 xsplines,repEnds
參數將被忽略。
x
和 y
不允許缺少值(即,缺少控製點是無效的)。
對於閉合 x 樣條線,會在最終控製點和初始控製點之間自動繪製一條曲線。
值
一個抓取對象。
例子
x <- c(0.25, 0.25, 0.75, 0.75)
y <- c(0.25, 0.75, 0.75, 0.25)
xsplineTest <- function(s, i, j, open) {
pushViewport(viewport(layout.pos.col=j, layout.pos.row=i))
grid.points(x, y, default.units="npc", pch=16, size=unit(2, "mm"))
grid.xspline(x, y, shape=s, open=open, gp=gpar(fill="grey"))
grid.text(s, gp=gpar(col="grey"),
x=unit(x, "npc") + unit(c(-1, -1, 1, 1), "mm"),
y=unit(y, "npc") + unit(c(-1, 1, 1, -1), "mm"),
hjust=c(1, 1, 0, 0),
vjust=c(1, 0, 0, 1))
popViewport()
}
pushViewport(viewport(width=.5, x=0, just="left",
layout=grid.layout(3, 3, respect=TRUE)))
pushViewport(viewport(layout.pos.row=1))
grid.text("Open Splines", y=1, just="bottom")
popViewport()
xsplineTest(c(0, -1, -1, 0), 1, 1, TRUE)
xsplineTest(c(0, -1, 0, 0), 1, 2, TRUE)
xsplineTest(c(0, -1, 1, 0), 1, 3, TRUE)
xsplineTest(c(0, 0, -1, 0), 2, 1, TRUE)
xsplineTest(c(0, 0, 0, 0), 2, 2, TRUE)
xsplineTest(c(0, 0, 1, 0), 2, 3, TRUE)
xsplineTest(c(0, 1, -1, 0), 3, 1, TRUE)
xsplineTest(c(0, 1, 0, 0), 3, 2, TRUE)
xsplineTest(c(0, 1, 1, 0), 3, 3, TRUE)
popViewport()
pushViewport(viewport(width=.5, x=1, just="right",
layout=grid.layout(3, 3, respect=TRUE)))
pushViewport(viewport(layout.pos.row=1))
grid.text("Closed Splines", y=1, just="bottom")
popViewport()
xsplineTest(c(-1, -1, -1, -1), 1, 1, FALSE)
xsplineTest(c(-1, -1, 0, -1), 1, 2, FALSE)
xsplineTest(c(-1, -1, 1, -1), 1, 3, FALSE)
xsplineTest(c( 0, 0, -1, 0), 2, 1, FALSE)
xsplineTest(c( 0, 0, 0, 0), 2, 2, FALSE)
xsplineTest(c( 0, 0, 1, 0), 2, 3, FALSE)
xsplineTest(c( 1, 1, -1, 1), 3, 1, FALSE)
xsplineTest(c( 1, 1, 0, 1), 3, 2, FALSE)
xsplineTest(c( 1, 1, 1, 1), 3, 3, FALSE)
popViewport()
參考
Blanc, C. and Schlick, C. (1995), "X-splines : A Spline Model Designed for the End User", in Proceedings of SIGGRAPH 95, pp. 377-386. https://dept-info.labri.fr/~schlick/DOC/sig1.html
也可以看看
xspline
。
相關用法
- R grid.xaxis 繪製 X 軸
- R grid.curve 在位置之間繪製曲線
- R grid.draw 畫一個網格
- R grid.stroke 描邊或填充路徑
- R grid.raster 渲染光柵對象
- R grid.points 繪製數據符號
- R grid.force 強製將一個對象放入其組件中
- R grid.display.list 控製網格顯示列表
- R grid.show.viewport 繪製網格視口圖
- R grid.segments 繪製線段
- R grid.frame 創建用於包裝對象的框架
- R grid.group 畫一個組
- R grid.pack 將對象打包在框架內
- R grid.text 繪製文字
- R grid.copy 製作網格圖形對象的副本
- R grid.record 封裝計算和繪圖
- R grid.pretty 生成一組合理(“漂亮”)的斷點
- R grid.grab 抓取當前電網輸出
- R grid.show.layout 繪製網格布局圖
- R grid.convert 不同網格坐標係之間的轉換
- R grid.DLapply 修改網格顯示列表
- R grid.delay 封裝計算並生成grob
- R grid.polygon 繪製多邊形
- R grid.function 繪製代表函數的曲線
- R grid.move.to 移動或繪製到指定位置
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Draw an Xspline。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。