當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R points 向繪圖添加點


R語言 points 位於 graphics 包(package)。

說明

points 是一個通用函數,用於在指定坐標處繪製一係列點。以坐標為中心繪製指定的字符。

用法

points(x, ...)

## Default S3 method:
points(x, y = NULL, type = "p", ...)

參數

x, y

要繪製的點的坐標向量。

type

指示繪圖類型的字符;實際上任何 type ,如 plot.default

...

另外graphical parameters也可以作為參數提供。查看具體信息'。

細節

坐標可以在繪圖結構(包含 xy 組件的列表)、兩列矩陣、時間序列等中傳遞。請參閱 xy.coords 。如果單獨提供,它們的長度必須相同。

常用的圖形參數有

pch

繪製‘character’,即要使用的符號。這可以是單個字符,也可以是一組圖形符號之一的整數代碼。全套 S 符號可用於pch = 0:18,請參閱下麵的示例。 (注意:R使用圓形而不是 S 中使用的八邊形。)

pch = "." (相當於 pch = 46 )經過特殊處理。它是一個邊長為 0.01 英寸的矩形(按 cex 縮放)。此外,如果 cex = 1(默認值),則每邊至少為一個像素(在 pdfpostscriptxfig 設備上為 1/72 英寸)。

對於其他文本符號, cex = 1 對應於設備的默認字體大小,通常由參數 pointsize 指定。對於 0:25 中的 pch,默認大小約為字符高度的 75%(請參閱 par("cin") )。

col

顏色代碼或名稱,請參閱par

bg

pch = 21:25 給出的開放圖符號的背景(填充)顏色。

cex

字符(或符號)擴展:數值向量。這是 par("cex") 的倍數。

lwd

繪圖符號的線寬請參見par

其他不太常用的是 ltylwd 等類型,例如 "b""l"

graphical parameters pchcolbgcexlwd 可以是向量(將根據需要回收),為繪製的每個點提供一個值。如果要繪製線條(例如,對於 type = "b" ),則使用 lwd 的第一個元素。

圖中省略 xypchcolcex 值為 NA 的點。

'pch'值

pch 的值在內部存儲為整數。解釋是

  • NA_integer_:無符號。

  • 0:18:S-compatible矢量符號。

  • 19:25: 更遠R矢量符號。

  • 26:31:未使用(並被忽略)。

  • 32:127:ASCII 字符。

  • 128:255 僅適用於單字節語言環境和符號字體的本機字符。 (128:159 僅在 Windows 上使用。)

  • -32 ... Unicode 代碼點(如果支持)。

請注意,與 S(使用八邊形)不同,符號 1101316 使用圓形。填充形狀15:18不包含邊框。

Illustration of pch = 0:25

下列R繪圖符號可以通過以下方式獲得pch = 19:25: 那些有21:25可以著色並填充不同的顏色:col給出邊框顏色和bg背景顏色(即‘⁠"grey"⁠’圖中)

  • pch = 19:實心圓,

  • pch = 20 :項目符號(較小的實心圓,19 大小的 2/3),

  • pch = 21:實心圓,

  • pch = 22:實心正方形,

  • pch = 23:填充鑽石,

  • pch = 24:實心三角形point-up,

  • pch = 25:實心三角形點向下。

請注意,所有這些都填充形狀並繪製邊框。當半透明顏色用於填充和邊框時,在解釋時需要注意(結果可能是特定於設備的,甚至是 viewer-specific for pdf )。

pch = 16pch = 19 之間的區別在於,後者使用邊框,因此當 lwd 相對於 cex 較大時,後者明顯更大。

pch = 26:31 當前未使用,pch = 32:127 給出 ASCII 字符。在單字節語言環境中 pch = 128:255 給出語言環境字符集中的相應字符(如果有)。在操作係統支持的情況下,負值指定 Unicode 代碼點,例如-0x2642L 是“男性標誌”,-0x20ACL 是歐元。

由單個字符組成的字符串將轉換為整數:對於 ASCII 字符,32:127,否則通常轉換為 Unicode 代碼點。 (在非 Latin-1 單字節語言環境中,128:255 將用於 8 位字符。)

如果提供的 pch 是邏輯、整數或字符 NA 或空字符串,則該點將從圖中省略。

如果pchNULL或者長度為0,則使用par("pch")

如果使用符號字體 ( par(font = 5) ),則 pch 應使用數值:所有區域設置中的範圍為 c(32:126, 160:254) (但 240 未定義(用於 macOS 上的 ‘apple’)並且 160,歐元,可能不存在)。

注意

單字節編碼可能包含 pch = 128:255 中的字符,如果包含,字體可能不包含所有(甚至任何)它們。

並非所有負數都可以作為 Unicode 代碼點,並且不會進行任何檢查。顯示設備可能會使用矩形(或省略)無效的或在所使用的字體中沒有字形的 Unicode 代碼點。

cex 的值非常小或為零時,會發生 device-dependent:符號或字符可能變得不可見,或者可能以固定的最小尺寸繪製。不會繪製半徑為零的圓。

例子

require(stats) # for rnorm
plot(-4:4, -4:4, type = "n")  # setting up coord. system
points(rnorm(200), rnorm(200), col = "red")
points(rnorm(100)/2, rnorm(100)/2, col = "blue", cex = 1.5)

op <- par(bg = "light blue")
x <- seq(0, 2*pi, length.out = 51)
## something "between type='b' and type='o'":
plot(x, sin(x), type = "o", pch = 21, bg = par("bg"), col = "blue", cex = .6,
 main = 'plot(..., type="o", pch=21, bg=par("bg"))')
par(op)

## Not run: 
## The figure was produced by calls like
png("pch.png", height = 0.7, width = 7, res = 100, units = "in")
par(mar = rep(0,4))
plot(c(-1, 26), 0:1, type = "n", axes = FALSE)
text(0:25, 0.6, 0:25, cex = 0.5)
points(0:25, rep(0.3, 26), pch = 0:25, bg = "grey")

## End(Not run)

##-------- Showing all the extra & some char graphics symbols ---------
pchShow <-
  function(extras = c("*",".", "o","O","0","+","-","|","%","#"),
           cex = 3, ## good for both .Device=="postscript" and "x11"
           col = "red3", bg = "gold", coltext = "brown", cextext = 1.2,
           main = paste("plot symbols :  points (...  pch = *, cex =",
                        cex,")"))
  {
    nex <- length(extras)
    np  <- 26 + nex
    ipch <- 0:(np-1)
    k <- floor(sqrt(np))
    dd <- c(-1,1)/2
    rx <- dd + range(ix <- ipch %/% k)
    ry <- dd + range(iy <- 3 + (k-1)- ipch %% k)
    pch <- as.list(ipch) # list with integers & strings
    if(nex > 0) pch[26+ 1:nex] <- as.list(extras)
    plot(rx, ry, type = "n", axes  =  FALSE, xlab = "", ylab = "", main = main)
    abline(v = ix, h = iy, col = "lightgray", lty = "dotted")
    for(i in 1:np) {
      pc <- pch[[i]]
      ## 'col' symbols with a 'bg'-colored interior (where available) :
      points(ix[i], iy[i], pch = pc, col = col, bg = bg, cex = cex)
      if(cextext > 0)
          text(ix[i] - 0.3, iy[i], pc, col = coltext, cex = cextext)
    }
  }

pchShow()
pchShow(c("o","O","0"), cex = 2.5)
pchShow(NULL, cex = 4, cextext = 0, main = NULL)


## ------------ test code for various pch specifications -------------
# Try this in various font families (including Hershey)
# and locales.  Use sign = -1 asserts we want Latin-1.
# Standard cases in a MBCS locale will not plot the top half.
TestChars <- function(sign = 1, font = 1, ...)
{
   MB <- l10n_info()$MBCS
   r <- if(font == 5) { sign <- 1; c(32:126, 160:254)
       } else if(MB) 32:126 else 32:255
   if (sign == -1) r <- c(32:126, 160:255)
   par(pty = "s")
   plot(c(-1,16), c(-1,16), type = "n", xlab = "", ylab = "",
        xaxs = "i", yaxs = "i",
        main = sprintf("sign = %d, font = %d", sign, font))
   grid(17, 17, lty = 1) ; mtext(paste("MBCS:", MB))
   for(i in r) try(points(i%%16, i%/%16, pch = sign*i, font = font,...))
}
TestChars()
try(TestChars(sign = -1))
TestChars(font = 5)  # Euro might be at 160 (0+10*16).
                     # macOS has apple at 240 (0+15*16).
try(TestChars(-1, font = 2))  # bold

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

points.formula為公式方法; plotlines 和底層主力函數 plot.xy

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Add Points to a Plot。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。