嚴格意義上將symbols 並不能算是一個低級的繪圖函數,因為它不僅可以在一幅已經存在的圖標上添加元素,還可以創建一張新的圖表
鑒於它繪圖時的靈活性,我把它歸入到低級繪圖函數中
symbols 可以創建包括圓形, 正方形,矩形,箱線圖,類似溫度計的圖形在內的多種圖形
基本用法:
通過x和y坐標指定要創建的圖形的中心,對於不同的形狀,設置對應的參數
需要注意的是,圖形的大小默認使用的單位是inches, 為了和坐標系中的坐標保持一致,可以通過inches = FALSE 將對應的參數和坐標系保持一致
add = TRUE 運行symbols 函數作為一個低級繪圖函數來使用,在一張圖表上添加對應的圖形
圓形:對於圓形來說,通過控制半徑來控制其大小
代碼示例:
plot(1:5, 1:5, type = "n", xlim = c(0, 6), ylim = c(0, 6)) symbols(x = 1:5, y = 1:5, circles = rep(1, 5), inches = FALSE, add = TRUE)
效果圖如下:
正方形:對於正方形來說,設置的參數是正方形邊長的1/2
代碼示例:
plot(1:5, 1:5, type = "n", xlim = c(0, 6), ylim = c(0, 6)) symbols(x = 1:5, y = 1:5, squares = rep(2, 5), inches = FALSE, add = TRUE)
效果圖如下:
矩形: 通過一個兩列的矩陣來控制大小,第一列為寬度,第二列為長度
代碼示例:
plot(1:5, 1:5, type = "n", xlim = c(0, 6), ylim = c(0, 6)) symbols(x = c(1, 4), y = c(3, 4), rectangles = matrix(c(2, 3, 3, 2), byrow = T, nrow = 2), inches = FALSE, add = TRUE)
效果圖如下:
stars : 多邊形,指定多邊形的中心到各條邊的距離,對於不同邊數的多邊形來說,對應的矩陣列數不同
代碼示例:
par(oma = c(1, 1, 1, 1), mfrow = c(1, 3)) plot(1:5, 1:5, type = "n", xlim = c(0, 6), ylim = c(0, 6)) symbols(x = c(1, 4), y = c(3, 4), stars = matrix(rep(1, 6), ncol = 3), inches = FALSE, add = TRUE) plot(1:5, 1:5, type = "n", xlim = c(0, 6), ylim = c(0, 6)) symbols(x = c(1, 4), y = c(3, 4), stars = matrix(rep(1, 8), ncol = 4), inches = FALSE, add = TRUE) plot(1:5, 1:5, type = "n", xlim = c(0, 6), ylim = c(0, 6)) symbols(x = c(1, 4), y = c(3, 4), stars = matrix(rep(1, 10), ncol = 5), inches = FALSE, add = TRUE)
效果圖如下:
溫度計圖案:通過一個列數為3或者4的矩陣來控制其大小,前兩列對應圖形的寬度和長度,如果矩陣只有3列,第3列是一個百分比,在該百分比對應的高度,會有填充色;如果矩陣有第4列,則在第3列和第4列對應的百分比之間會有一個填充色
代碼示例:
plot(1:5, 1:5, type = "n", xlim = c(0, 6), ylim = c(0, 6))
symbols(x = 2, y = 3, thermometers = matrix(c(1, 3, 0.5), ncol = 3), inches = FALSE, add = TRUE)
symbols(x = 4, y = 4, thermometers = matrix(c(1, 3, 0.2, 0.8), ncol = 4), inches = FALSE, add = TRUE)
效果圖如下:
箱線圖:通過一個列數為5的矩陣進行控制,前兩列分別對應寬度和高度, 第三列和第四列對應箱線圖的下限和上限,第五列為一個0到1之間的數,控制代表中位數的直線所處的位置
代碼示例:
plot(1:5, 1:5, type = "n", xlim = c(0, 6), ylim = c(0, 6)) symbols(x = 3, y = 3, boxplots = matrix(c(1, 3, 0.5, 0.5, 0.4), ncol = 5), inches = FALSE, add = TRUE)
效果圖如下:
fg : 設置圖形邊框的顏色
代碼示例:
plot(1:5, 1:5, type = "n", xlim = c(0, 6), ylim = c(0, 6)) symbols(x = 3, y = 3, boxplots = matrix(c(1, 3, 0.5, 0.5, 0.4), ncol = 5), inches = FALSE, add = TRUE, fg = "red")
效果圖如下:
bg: 設置圖形的填充色
代碼示例:
plot(1:5, 1:5, type = "n", xlim = c(0, 6), ylim = c(0, 6)) symbols(x = 3, y = 3, boxplots = matrix(c(1, 3, 0.5, 0.5, 0.4), ncol = 5), inches = FALSE, add = TRUE, bg = "red")
效果圖如下:
以上的用法都是通過add = TRUE , 將symbols 函數的輸出添加到一個圖形上,當add = FALSE 時,symbol 函數可以創建一張新的圖表
除了前面的通用參數外,在創建新圖表時,還有一些額外的參數
xlim, ylim : 設置新圖表x軸和y軸的范圍
代碼示例:
symbols(x = 3, y = 3, boxplots = matrix(c(1, 3, 0.5, 0.5, 0.4), ncol = 5), inches = FALSE, xlim = c(0, 6), ylim = c(0, 6))
效果圖如下:
xlab, ylab , main : 分別設置新圖表的x軸標簽,y軸標簽,標題
代碼示例:
symbols(x = 3, y = 3, boxplots = matrix(c(1, 3, 0.5, 0.5, 0.4), ncol = 5), inches = FALSE, xlim = c(0, 6), ylim = c(0, 6),xlab = "x lab", ylab = "y lab", main = "title")
效果圖如下: